I just discovered, by compiling on another machine, that LLVM doesn't
compile correctly with *newer* bison versions. The version that I have
that works is 1.35. The version that I tried that doesn't work is 1.875.
There's a couple bison releases in between those two that may or may not
work, I haven't tried them.
This isn't really an LLVM problem but it affects LLVM. The problem is
that bison 1.875 inserts an __attribute__((unused)) into the yyparse
function after a label. The #define this is wrapped in thinks its legal
anytime after release 2.0.93. With GCC 3.3.2, it gives a compiler error
that looks like:
llvmAsmParser.tab.c: In function `int llvmAsmparse()':
llvmAsmParser.tab.c:4152: error: parse error before `goto'
gmake: *** [/home/llvm/llvm/lib/AsmParser/Debug/llvmAsmParser.lo] Error 1
Perhaps support for this went away sometime in the 3.x releases of GCC.
In any event, putting a function at on a label is pretty dubious.
If you see this error, you should downgrade your bison version to 1.35
which we know works.
Thought you might like to know.