This looks like a bug in either the assembly emitter or in the 'gas' that we are using, because it is very consistent, and the JIT works fine. Either way, this should be fixed in lib/Target/X86/Printer.cpp
A useful test run is: % 254.gap.llc -l ./ -q -m 64M < /dev/null in the Output/llc-test directory. It should print nothing. It prints an error message, presumably about heap corruption Whoever decided to name their memory allocator "Gasman" and call the unit of memory a "bag" should please note that I am not amused. I haven't gotten bugpoint --run-llc to work with gap because it seems to have some trouble passing the correct command-line arguments to gap. I tried: % bugpoint --run-llc --debug ../254.gap.llvm.bc --args -- -l ./ -q -m 64M I tried using opt -tracem and diffing the output from lli and llc. The only functions whose output differed, up to the point where the crash occurred, were SyTime and NrHandles. SyTime just returns a value based on the system time, so I looked at NrHandles using utils/codegen-diff. I was unable to find any differences that mattered between NrHandles as compiled by the JIT and as compiled by LLC.
This is now fixed: http://mail.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20031013/008300.html All of the C SPEC2000 benchmarks now work with the X86 backend, except for perlbmk (which requires unwind support).
You are the man.