Jay Freeman (saurik)
2008-Mar-23 11:50 UTC
[LLVMdev] non-enable-llvm support in llvm-gcc-4.2 issue
There seems to be a bunch of code for making certain that gcc still works even if --enable-gcc isn't used, so I'm assuming that it's at least supposed to be a supported configuration, and hence this issue that I found should probably be looked at: If you compile llvm-gcc-4.2 _without_ --enable-gcc, and then try to compile the following program, you get a rather nasty RTL error. void f() { try { throw; } catch (...) {} } test.cpp: In function .void f().: test.cpp:1: error: unrecognizable insn: (insn 39 5 40 2 (set (reg:SI 107) (UnKnown Unknown)) -1 (nil) (nil)) test.cpp:1: internal compiler error: in extract_insn, at recog.c:2100 I managed to track this down to init_one_libfunc being broken. There's some logic to try to divert an llvm_init_one_libfunc to the old implementation (via some #defines) when --emnable-llvm isn't being used, but it doesn't even have the right return type anymore and only seems to do half the old logic (the rest being in llvm_init_one_libfunnc now). I've managed to fix it pretty easily with the following hack, but it really does feel like a hack: diff --git a/gcc/expr.h b/gcc/expr.h index 850e7af..265b550 100644 --- a/gcc/expr.h +++ b/gcc/expr.h @@ -753,9 +753,6 @@ extern rtx init_one_libfunc (const char *); /* LLVM LOCAL begin */ /* Call this to initialize an optab function tree. */ extern tree llvm_init_one_libfunc (const char *); -#ifndef ENABLE_LLVM -#define llvm_init_one_libfunc init_one_libfunc -#endif /* LLVM LOCAL end */ extern int vector_mode_valid_p (enum machine_mode); diff --git a/gcc/optabs.c b/gcc/optabs.c index 06243c9..d5a1b19 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -5137,7 +5137,6 @@ init_intraclass_conv_libfuncs (convert_optab tab, const char *opname, /* LLVM local begin */ -#undef llvm_init_one_libfunc tree llvm_init_one_libfunc (const char *name) { Sincerely, Jay Freeman (saurik) saurik at saurik.com http://www.saurik.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20080323/450d9fb1/attachment.html>