[LLVMdev] Improving bugpoint

David Greene dag at cray.com
Thu Jul 17 17:38:29 PDT 2008


I've made quite a bit of progress getting bugpoint to work with
our (non-gcc) tools.  In fact I caught the alignment bug I
recently posted about using it.  But it's not there yet.  In
particular, I am seeing this scenario a lot (comments in brackets):

*** Found miscompiling pass: -instcombine
Emitted bitcode to 'bugpoint-passinput.bc'

[ Good!  This is progress! ]

*** You can reproduce the problem with: opt bugpoint-passinput.bc -instcombine
Checking to see if the program is misoptimized when these functions are run 
through the pass: main sub0_ init_
Removing function main
Removing function sub0_
Removing function init_
  Optimizing functions being tested: done.
  Checking to see if the merged program executes correctly: <llc>
About to run:	 llc -o bugpoint-test-program.bc.llc.s -f 
bugpoint-test-program.bc
<cray>
About to run:	 ftn bugpoint-test-program.bc.llc.s -c -o 
bugpoint-test-program.bc.llc.s.cray.o-yIVqrc
<cray>
About to run:	 ftn bugpoint-test-program.bc.llc.s.cray.o-yIVqrc -o 
bugpoint-test-program.bc.llc.s.cray.exe -lm

Error running tool:
  ftn bugpoint-test-program.bc.llc.s.cray.o-yIVqrc -o 
bugpoint-test-program.bc.llc.s.cray.exe -lm
/opt/xt-asyncpe/2.0.5/bin/ftn: INFO: native target is being used
bugpoint-test-program.bc.llc.s.cray.o-yIVqrc: In function `red09_':
(.text+0x48): undefined reference to `__unnamed_1_0'

[ and lots more of the same ]

*** Debugging code generator crash!

[ Uh..no, this is a link failure... ]

It appears that bugpoint outflanks itself and removes some global symbols, 
generating a link error and causing bugpoint to go off on a not-very-useful 
code generator crash analysis.  So I never actually end up getting a reduced 
test case.

Has anyone else seen this kind of behavior before?  What's a reasonable way to 
address it?  Should bugpoint try to detect link failures and then undo 
whatever it did just before the link failure?

Thanks for a great tool.  I'm happy to help make it better!

                                              -Dave



More information about the llvm-dev mailing list