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:
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() ].
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)