On Fri, May 04, 2012 at 01:38:00PM +0200, H.Merijn Brand wrote: > Automated smoke report for 5.15.9 patch 5a0c7e9d45ff6da450098635b233527990112d8a v5.15.9-270-g5a0c7e9 > a5: PA8700 (PA-RISC2.0/64/2 cpu) > on HP-UX - B.11.00/64 > using cc version B.11.X.35098-35101.GP > smoketime 14 hours 53 minutes (average 1 hour 51 minutes) > v5.15.9-270-g5a0c7e9 Configuration (common) none > ----------- --------------------------------------------------------- > O O O m - - > O O O O O O -Duse64bitall > O O O m - - -Duseithreads > O O O O O O -Duseithreads -Duse64bitall So, to replicate the 'm', configure exactly the same way: ./Configure -de -DDEBUGGING -Dusedevel -Dcc=ccache\ cc -Dld=cc one gets these flags $ egrep '^(optimize|ccflags)=' config.sh ccflags=' -Ae -D_HPUX_SOURCE -Wl,+vnocompatwarnings -DDEBUGGING -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 ' optimize='+O2 +Onolimit -g' $ make run.o `sh cflags "optimize='+O2 +Onolimit -g'" run.o` run.c CCCMD = ccache cc -DPERL_CORE -c -Ae -D_HPUX_SOURCE -Wl,+vnocompatwarnings -DDEBUGGING -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 +O2 +Onolimit -g cc: error 1414: Can't handle preprocessed file "/perl/usr/nick/.ccache/run.tmp.p5p-hpux.28123.i" if -g and -O specified. *** Error exit code 1 Stop. Simply add -Duse64bitall to that Configure command line: ./Configure -de -Duse64bitall -DDEBUGGING -Dusedevel -Dcc=ccache\ cc -Dld=cc and one gets the same flags, just with +DD64 added: $ egrep '^(optimize|ccflags)=' config.sh ccflags=' -Ae -D_HPUX_SOURCE -Wl,+vnocompatwarnings +DD64 -DDEBUGGING -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 ' optimize='+O2 +Onolimit -g' $ make run.o `sh cflags "optimize='+O2 +Onolimit -g'" run.o` run.c CCCMD = ccache cc -DPERL_CORE -c -Ae -D_HPUX_SOURCE -Wl,+vnocompatwarnings +DD64 -DDEBUGGING -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 +O2 +Onolimit -g cc: warning 404: Pre-processor not invoked, options ignored. and it works! So it looks like a crazy compiler, in in that doesn't permit -g +O2 for 32 bit mode, but does permit -g +O2 for 64 bit mode. But wait. What's the bit about "Can't handle preprocessed file" $ echo 'int i;' >bonkers.c $ cc -c -g +O2 bonkers.c $ cc -E -g +O2 bonkers.c >bonkers.i $ cc -c -g +O2 bonkers.i cc: error 1414: Can't handle preprocessed file "bonkers.i" if -g and -O specified. $ cat bonkers.i # 1 "bonkers.c" int i; $ cc -c -g +O2 +DD64 bonkers.c $ cc -E -g +O2 +DD64 bonkers.c >bonkers.i $ cc -c -g +O2 +DD64 bonkers.i $ cat bonkers.i # 1 "bonkers.c" int i; No, it's not just crazy compiler, its insane! It handles -g +O2 just fine normally, but for 32 bit mode it refuses to accept pre-processed input. Whereas for 64 bit mode it does. If HP think that this isn't a bug, I'd love to know what their excuse is. Nicholas ClarkThread Next