Chandler Carruth
2008-Mar-27 06:47 UTC
[LLVMdev] llvm-gcc 4.2 assertion failed on linux x86_64
Bam. This is about as reduced as it gets. I think I can spot the problem point: chandlerc at osiris ~/code/compilers/build/llvm-gcc $ cat testcase.i void foo () { float x __attribute__ ((mode (XF))); } chandlerc at osiris ~/code/compilers/build/llvm-gcc $ ./gcc/cc1 -fpreprocessed -march=k8 testcase.i -o /dev/null foocc1: /home/chandlerc/code/compilers/llvm-gcc/gcc/llvm-types.cpp:81: const llvm::Type* llvm_set_type(tree_node*, const llvm::Type*): Assertion `(!(__extension__ ({ const tree __t = (Tr); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] !(tcc_type)) tree_class_check_failed (__t, (tcc_type), "/home/chandlerc/code/compilers/llvm-gcc/gcc/llvm-types.cpp", 81, __FUNCTION__); __t; })->type.size) || !Ty->isSized() || !isInt64((__extension__ ({ const tree __t = (Tr); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] !(tcc_type)) tree_class_check_failed (__t, (tcc_type), "/home/chandlerc/code/compilers/llvm-gcc/gcc/llvm-types.cpp", 81, __FUNCTION__); __t; })->type.size), true) || getInt64((__extension__ ({ const tree __t = (Tr); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != (tcc_type)) tree_class_check_failed (__t, (tcc_type), "/home/chandlerc/code/compilers/llvm-gcc/gcc/llvm-types.cpp", 81, __FUNCTION__); __t; })->type.size), true) =getTargetData().getABITypeSizeInBits(Ty)) && "LLVM type size doesn't match GCC type size!"' failed. testcase.i: In function 'foo': testcase.i:2: internal compiler error: Aborted Hope that helps. =] -Chandler PS: delta hates me, and this test case, a lot. reduced it by hand. On Tue, Mar 25, 2008 at 12:51 AM, Bill Wendling <isanbard at gmail.com> wrote:> Hi Chandler, > > This looks like a FE error, so you probably won't be able to get an > LLVM bitcode file for us. You could help by whittling the test case > down to something managable. First get a preprocessed file. Then I > would suggest following the instructions on this page to reduce the > testcase: > > http://gcc.gnu.org/wiki/A_guide_to_testcase_reduction > > That will help us a lot with the bug report. > > -bw > > > > On Mar 24, 2008, at 11:49 PM, Chandler Carruth wrote: > > Hello, > > > > Trying to get my machine building up-to-date, and a nightly going, i > > ran into an assertion during the build of llvm-gcc 4.2: > > > > $ make -j2 > > <snip!> > > /home/chandlerc/code/compilers/build/llvm-gcc/./gcc/xgcc > > -B/home/chandlerc/code/compilers/build/llvm-gcc/./gcc/ > > -B/home/chandlerc/code/compilers/install/llvm-gcc/x86_64-pc-linux- > > gnu/bin/ > > -B/home/chandlerc/code/compilers/install/llvm-gcc/x86_64-pc-linux- > > gnu/lib/ > > -isystem /home/chandlerc/code/compilers/install/llvm-gcc/x86_64-pc- > > linux-gnu/include > > -isystem /home/chandlerc/code/compilers/install/llvm-gcc/x86_64-pc- > > linux-gnu/sys-include > > -O2 -O2 -march=k8 -mfpmath=sse -pipe -DIN_GCC -W -Wall > > -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes > > -Wold-style-definition -isystem ./include -fPIC -g > > -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -I. -I. > > -I/home/chandlerc/code/compilers/llvm-gcc/gcc > > -I/home/chandlerc/code/compilers/llvm-gcc/gcc/. > > -I/home/chandlerc/code/compilers/llvm-gcc/gcc/../include > > -I/home/chandlerc/code/compilers/llvm-gcc/gcc/../libcpp/include > > -I/home/chandlerc/code/compilers/llvm-gcc/gcc/../libdecnumber > > -I../libdecnumber -I/home/chandlerc/code/compilers/llvm/include > > -I/home/chandlerc/code/compilers/build/llvm/include -DL_powitf2 -c > > /home/chandlerc/code/compilers/llvm-gcc/gcc/libgcc2.c -o > > libgcc/./_powitf2.o > > cc1: /home/chandlerc/code/compilers/llvm-gcc/gcc/llvm-types.cpp:81: > > const llvm::Type* llvm_set_type(tree_node*, const llvm::Type*): > > Assertion `(!(__extension__ ({ const tree __t = (Tr); if > > (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] !> > (tcc_type)) tree_class_check_failed (__t, (tcc_type), > > "/home/chandlerc/code/compilers/llvm-gcc/gcc/llvm-types.cpp", 81, > > __FUNCTION__); __t; })->type.size) || !Ty->isSized() || > > !isInt64((__extension__ ({ const tree __t = (Tr); if > > (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] !> > (tcc_type)) tree_class_check_failed (__t, (tcc_type), > > "/home/chandlerc/code/compilers/llvm-gcc/gcc/llvm-types.cpp", 81, > > __FUNCTION__); __t; })->type.size), true) || getInt64((__extension__ > > ({ const tree __t = (Tr); if (tree_code_type[(int) (((enum tree_code) > > (__t)->common.code))] != (tcc_type)) tree_class_check_failed (__t, > > (tcc_type), "/home/chandlerc/code/compilers/llvm-gcc/gcc/llvm- > > types.cpp", > > 81, __FUNCTION__); __t; })->type.size), true) => > getTargetData().getABITypeSizeInBits(Ty)) && "LLVM type size doesn't > > match GCC type size!"' failed. > > /home/chandlerc/code/compilers/llvm-gcc/gcc/libgcc2.c: In function > > '__powixf2': > > /home/chandlerc/code/compilers/llvm-gcc/gcc/libgcc2.c:1765: internal > > compiler error: Aborted > > > > My configure: > > .../configure --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu > > --target=x86_64-pc-linux-gnu > > --prefix=/home/chandlerc/code/compilers/install/llvm-gcc > > --disable-multilib --disable-shared > > --enable-llvm=/home/chandlerc/code/compilers/build/llvm > > --program-prefix=llvm- --enable-languages=c,c++ > > > > If more information would help, just let me know. > > > > -Chandler > > _______________________________________________ > > LLVM Developers mailing list > > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >
Duncan Sands
2008-Mar-27 08:18 UTC
[LLVMdev] llvm-gcc 4.2 assertion failed on linux x86_64
Hi Chandler,> void > foo () { > float x __attribute__ ((mode (XF))); > }nice reduction. I don't see any problem on x86-32, and I don't have access to an x86-64 box right now. Can you please open a PR for this, and also run in the debugger. When you hit the abort, use "up" to go up a stack frame or two or three, and print out the gcc types [use: call debug_tree(type) ] and the LLVM type [use: call Ty->dump() ]. Thanks, Duncan.
Chandler Carruth
2008-Mar-27 15:52 UTC
[LLVMdev] llvm-gcc 4.2 assertion failed on linux x86_64
Here you go: Starting program: /home/chandlerc/code/compilers/build/llvm-gcc/gcc/cc1 -fpreprocessed -march=k8 testcase.i -o /dev/null warning: no loadable sections found in added symbol-file system-supplied DSO at 0x7fff0d5fe000 [Thread debugging using libthread_db enabled] foocc1: /home/chandlerc/code/compilers/llvm-gcc/gcc/llvm-types.cpp:81: const llvm::Type* llvm_set_type(tree_node*, const llvm::Type*): Assertion `(!(__extension__ ({ const tree __t = (Tr); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != (tcc_type)) tree_class_check_failed (__t, (tcc_type), "/home/chandlerc/code/compilers/llvm-gcc/gcc/llvm- types.cpp", 81, __FUNCTION__); __t; })->type.size) || !Ty->isSized() || !isInt64((__extension__ ({ const tree __t = (Tr); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != (tcc_type)) tree_class_check_failed (__t, (tcc_type), "/home/chandlerc/code/compilers/llvm-gcc/gcc/llvm-types.cpp", 81, __FUNCTION__); __t; })->type.size), true) || getInt64((__extension__ ({ const tree __t = (Tr); if (tree_code_type[(int) (((enum tree_code) (__t)-> common.code))] != (tcc_type)) tree_class_check_failed (__t, (tcc_type), "/home/chandlerc/code/compilers/llvm-gcc/gcc/llvm-types.cpp", 81, __FUNCTION__); __t; })->type.size), true) =getTargetData().getABITypeSizeInBits(Ty)) && "LLVM type size doesn't match GCC type size!"' failed. [New Thread 0x2b709e7b8440 (LWP 15687)] Program received signal SIGABRT, Aborted. [Switching to Thread 0x2b709e7b8440 (LWP 15687)] 0x00002b709e48afa5 in raise () from /lib/libc.so.6 (gdb) up #1 0x00002b709e48ca00 in abort () from /lib/libc.so.6 (gdb) up #2 0x00002b709e4843df in __assert_fail () from /lib/libc.so.6 (gdb) up #3 0x0000000000a84d3b in llvm_set_type (Tr=0x2b709d6f8790, Ty=0x166c210) at /home/chandlerc/code/compilers/llvm-gcc/gcc/llvm-types.cpp:78 78 assert((!TYPE_SIZE(Tr) || !Ty->isSized() || !isInt64(TYPE_SIZE(Tr), true) || (gdb) Ty->dump() Undefined command: "Ty->dump". Try "help". (gdb) call Ty->dump() x86_fp80 (gdb) call debug_tree(type) No symbol "type" in current context. (gdb) up #4 0x0000000000a86501 in TypeConverter::ConvertType (this=0x16941a0, orig_type=0x2b709d6f8790) at /home/chandlerc/code/compilers/llvm-gcc/gcc/llvm-types.cpp:756 756 case 80: return SET_TYPE_LLVM(type, Type::X86_FP80Ty); (gdb) call debug_tree(type) <real_type 0x2b709d6f8790 long double sizes-gimplified XF size <integer_cst 0x2b709d6f39c0 type <integer_type 0x2b709d6e4370 bit_size_type> constant invariant 96> unit size <integer_cst 0x2b709d6f39f0 type <integer_type 0x2b709d6e42c0 long unsigned int> constant invariant 12> align 32 symtab 0 alias set -1 precision 80 pointer_to_this <pointer_type 0x2b709d6f89a0>> (gdb) On Thu, Mar 27, 2008 at 1:18 AM, Duncan Sands <baldrick at free.fr> wrote:> Hi Chandler, > > > > void > > foo () { > > float x __attribute__ ((mode (XF))); > > } > > nice reduction. I don't see any problem on x86-32, > and I don't have access to an x86-64 box right now. > Can you please open a PR for this, and also run in > the debugger. When you hit the abort, use "up" to > go up a stack frame or two or three, and print out > the gcc types [use: call debug_tree(type) ] and the > LLVM type [use: call Ty->dump() ]. > > Thanks, > > Duncan. >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20080327/075975c5/attachment.html>
Possibly Parallel Threads
- [LLVMdev] llvm-gcc 4.2 assertion failed on linux x86_64
- [LLVMdev] llvm-gcc 4.2 assertion failed on linux x86_64
- [LLVMdev] llvm-gcc 4.2 assertion failed on linux x86_64
- [LLVMdev] Can't bootstrap llvm-gcc-4.0 for x84_64
- [LLVMdev] Can't bootstrap llvm-gcc-4.0 for x84_64