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>
Apparently Analagous 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