http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52425
--- Comment #5 from Mikael Pettersson <mikpe at it dot uu.se> 2012-03-02 16:21:37 UTC --- Reproduced with a vanilla gcc-4.6-20120224, configured /tmp/gcc-4.6-20120224/configure --target=sparc64-unknown-linux --prefix=/home/mikpe/pkgs/linux-x86/cross-sparc64 --with-gmp=/home/mikpe/pkgs/linux-x86/gmp-5.0.4 --with-mpfr=/home/mikpe/pkgs/linux-x86/mpfr-3.1.0 --with-mpc=/home/mikpe/pkgs/linux-x86/mpc-0.9 --disable-libquadmath --disable-plugin --disable-lto --disable-nls --disable-shared --disable-libmudflap --disable-libgomp --disable-multilib --enable-threads=posix --enable-checking=release --enable-languages=c, and running on i686-linux. Original test case: > /tmp/objdir/gcc/xgcc -B/tmp/objdir/gcc -fPIC -g -O2 -std=gnu99 -pthread -S > -m32 -mcpu=v8 pr52425-1.i ui_fileopener.c:200:1: internal compiler error: output_operand: invalid expression as operand Reduced test case (with -v for completeness): > /tmp/objdir/gcc/xgcc -B/tmp/objdir/gcc -v -fPIC -g -O2 -std=gnu99 -pthread -S > -m32 -mcpu=v8 pr52425-2.c Reading specs from /tmp/objdir/gcc/specs COLLECT_GCC=/tmp/objdir/gcc/xgcc COLLECT_LTO_WRAPPER=/tmp/objdir/gcc/lto-wrapper Target: sparc64-unknown-linux Configured with: /tmp/gcc-4.6-20120224/configure --target=sparc64-unknown-linux --prefix=/home/mikpe/pkgs/linux-x86/cross-sparc64 --with-gmp=/home/mikpe/pkgs/linux-x86/gmp-5.0.4 --with-mpfr=/home/mikpe/pkgs/linux-x86/mpfr-3.1.0 --with-mpc=/home/mikpe/pkgs/linux-x86/mpc-0.9 --disable-libquadmath --disable-plugin --disable-lto --disable-nls --disable-shared --disable-libmudflap --disable-libgomp --disable-multilib --enable-threads=posix --enable-checking=release --enable-languages=c Thread model: posix gcc version 4.6.3 20120224 (prerelease) (GCC) COLLECT_GCC_OPTIONS='-B' '/tmp/objdir/gcc' '-v' '-fPIC' '-g' '-O2' '-std=gnu99' '-pthread' '-S' '-m32' '-mcpu=v8' /tmp/objdir/gcc/cc1 -quiet -v -imultilib . -iprefix /tmp/objdir/gcc/../lib/gcc/sparc64-unknown-linux/4.6.3/ -isystem /tmp/objdir/gcc/include -isystem /tmp/objdir/gcc/include-fixed -D__sparc_v8__ -D_REENTRANT pr52425-2.c -mptr32 -mno-stack-bias -mlong-double-64 -quiet -dumpbase pr52425-2.c -m32 -mcpu=v8 -auxbase pr52425-2 -g -O2 -std=gnu99 -version -fPIC -o pr52425-2.s GNU C (GCC) version 4.6.3 20120224 (prerelease) (sparc64-unknown-linux) compiled by GNU C version 4.5.4 20120223 (prerelease), GMP version 5.0.4, MPFR version 3.1.0-p4, MPC version 0.9 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 ignoring nonexistent directory "/tmp/objdir/gcc/../lib/gcc/sparc64-unknown-linux/4.6.3/include" ignoring nonexistent directory "/tmp/objdir/gcc/../lib/gcc/sparc64-unknown-linux/4.6.3/include-fixed" ignoring nonexistent directory "/tmp/objdir/gcc/../lib/gcc/sparc64-unknown-linux/4.6.3/../../../../sparc64-unknown-linux/sys-include" ignoring nonexistent directory "/tmp/objdir/gcc/../lib/gcc/sparc64-unknown-linux/4.6.3/../../../../sparc64-unknown-linux/include" ignoring nonexistent directory "/tmp/objdir/gcc/../lib/gcc/../../lib/gcc/sparc64-unknown-linux/4.6.3/include" ignoring nonexistent directory "/tmp/objdir/gcc/../lib/gcc/../../lib/gcc/sparc64-unknown-linux/4.6.3/include-fixed" ignoring nonexistent directory "/tmp/objdir/gcc/../lib/gcc/../../lib/gcc/sparc64-unknown-linux/4.6.3/../../../../sparc64-unknown-linux/sys-include" ignoring nonexistent directory "/tmp/objdir/gcc/../lib/gcc/../../lib/gcc/sparc64-unknown-linux/4.6.3/../../../../sparc64-unknown-linux/include" #include "..." search starts here: #include <...> search starts here: /tmp/objdir/gcc/include /tmp/objdir/gcc/include-fixed End of search list. GNU C (GCC) version 4.6.3 20120224 (prerelease) (sparc64-unknown-linux) compiled by GNU C version 4.5.4 20120223 (prerelease), GMP version 5.0.4, MPFR version 3.1.0-p4, MPC version 0.9 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 13caed9ea010fbdbe7751ee2ff3cc0c2 pr52425-2.c:62:1: internal compiler error: output_operand: invalid expression as operand Running cc1 within gdb with a breakpoint on output_operand_lossage: Breakpoint 1, output_operand_lossage (cmsgid=0x8639346 "invalid expression as operand") at /tmp/gcc-4.6-20120224/gcc/final.c:3076 3076 { Missing separate debuginfos, use: debuginfo-install glibc-2.13-2.i686 (gdb) bt #0 output_operand_lossage (cmsgid=0x8639346 "invalid expression as operand") at /tmp/gcc-4.6-20120224/gcc/final.c:3076 #1 0x081977bc in output_addr_const (file=0x88281d0, x=0xb7df98f4) at /tmp/gcc-4.6-20120224/gcc/final.c:3634 #2 0x08133447 in dw2_asm_output_addr_rtx (size=4, addr=0xb7df98f4, comment=0x0) at /tmp/gcc-4.6-20120224/gcc/dwarf2asm.c:282 #3 0x0813c302 in output_loc_operands (loc=0xb7d69b2c, for_eh_or_skip=<value optimized out>) at /tmp/gcc-4.6-20120224/gcc/dwarf2out.c:5258 #4 output_loc_sequence (loc=0xb7d69b2c, for_eh_or_skip=<value optimized out>) at /tmp/gcc-4.6-20120224/gcc/dwarf2out.c:5317 #5 0x0813c8db in output_loc_list (die=<value optimized out>) at /tmp/gcc-4.6-20120224/gcc/dwarf2out.c:11227 #6 output_location_lists (die=<value optimized out>) at /tmp/gcc-4.6-20120224/gcc/dwarf2out.c:10575 #7 0x0813c793 in output_location_lists (die=<value optimized out>) at /tmp/gcc-4.6-20120224/gcc/dwarf2out.c:10577 #8 0x0813c793 in output_location_lists (die=<value optimized out>) at /tmp/gcc-4.6-20120224/gcc/dwarf2out.c:10577 #9 0x0813c793 in output_location_lists (die=<value optimized out>) at /tmp/gcc-4.6-20120224/gcc/dwarf2out.c:10577 #10 0x0813c793 in output_location_lists (die=<value optimized out>) at /tmp/gcc-4.6-20120224/gcc/dwarf2out.c:10577 #11 0x0813c793 in output_location_lists (die=<value optimized out>) at /tmp/gcc-4.6-20120224/gcc/dwarf2out.c:10577 #12 0x0815a9c0 in dwarf2out_finish (filename=0xbfffef27 "pr52425-2.c") at /tmp/gcc-4.6-20120224/gcc/dwarf2out.c:23724 #13 0x082fa7ee in compile_file (argc=31, argv=0xbfffec44) at /tmp/gcc-4.6-20120224/gcc/toplev.c:621 #14 do_compile (argc=31, argv=0xbfffec44) at /tmp/gcc-4.6-20120224/gcc/toplev.c:1900 #15 toplev_main (argc=31, argv=0xbfffec44) at /tmp/gcc-4.6-20120224/gcc/toplev.c:1963 #16 0x080bdaeb in main (argc=31, argv=0xbfffec44) at /tmp/gcc-4.6-20120224/gcc/main.c:36 (gdb) up #1 0x081977bc in output_addr_const (file=0x88281d0, x=0xb7df98f4) at /tmp/gcc-4.6-20120224/gcc/final.c:3634 3634 output_operand_lossage ("invalid expression as operand"); (gdb) p debug_rtx (x) (unspec:SI [ (symbol_ref:SI ("api_table") [flags 0x40] <var_decl 0xb7de03c0 api_table>) ] 0) $1 = void