Brian was kind enough to test llvmgcc against a bunch of GNU code. This
exposed all kinds of bugs, fixes below.
recode -- fails (bad headers, many ICEs)
Can you give me a list of headers it wants? It's usally pretty easy to
add them if I know what it needs...
cpio -- fails (dstring.c -- weird ssa bug)
Fixed. This was a C frontend bug (problem assigning temporary reg nums).
diffutils-- fails (analyze.c, diff.c and others)
The analyze.c bug is tested here:
and fixed here:
diff.c doesn't compile with the platform CC.
gnuchess -- fails (eval.c, main.c and others)
eval.c works now, perhaps because of other fixes.
main.c is tested here:
This was a bug in the C frontend treating 'char foo = "abcd";' as a
constant because the initializer was a const, even though the variable
itself wasn't const. Whoops.
Another interesting part of my fix was that I discovered I wasn't marking
nearly as many globals as constant as I should (for example 'const int X =
7'). This is also fixed, tested here:
a2ps -- fails (fonts.c at -O2, and several others)
This works now, presumably because of other fixes
grep -- fails (regex.c)
rx -- fails (rxgnucomp.c)
These is because of a known problem passing structures by value. I added
a new testcase distilled from it, which is somewhat simpler than the
previously existing one:
I will fix this eventually.
enscript -- fails (afm.c)
This calls setjmp, which isn't supported yet.
Thanks for all of the reports!!