http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60080
Bug ID: 60080 Summary: gcc.dg/vect/vect-nop-move.c FAILs Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: ro at gcc dot gnu.org Host: i386-pc-solaris2.9, i386-pc-solaris2.10 Target: i386-pc-solaris2.9, i386-pc-solaris2.10 Build: i386-pc-solaris2.9, i386-pc-solaris2.10 The gcc.dg/vect/vect-nop-move.c FAILs on both Solaris 9 and 10/x86: FAIL: gcc.dg/vect/vect-nop-move.c (internal compiler error) FAIL: gcc.dg/vect/vect-nop-move.c (test for excess errors) WARNING: gcc.dg/vect/vect-nop-move.c compilation failed to produce executable FAIL: gcc.dg/vect/vect-nop-move.c -flto -ffat-lto-objects (internal compiler error) FAIL: gcc.dg/vect/vect-nop-move.c -flto -ffat-lto-objects (test for excess errors) WARNING: gcc.dg/vect/vect-nop-move.c -flto -ffat-lto-objects compilation failed to produce executable The ICE can be reproduced with $ cc1 -fpreprocessed vect-nop-move.i -quiet -msse2 -O2 -fdump-rtl-combine-details -o vect-nop-move.s Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 1 (LWP 1)] 0xfee0646c in strlen () from /lib/libc.so.1 (gdb) where #0 0xfee0646c in strlen () from /lib/libc.so.1 #1 0xfee61bce in _ndoprnt () from /lib/libc.so.1 #2 0xfee6477e in fprintf () from /lib/libc.so.1 #3 0x085641ea in print_rtx (in_rtx=0xfeaf718c) at /vol/gcc/src/hg/trunk/local/gcc/print-rtl.c:430 #4 0x0856339c in print_rtx (in_rtx=0xfea8a800) at /vol/gcc/src/hg/trunk/local/gcc/print-rtl.c:384 #5 0x0856331f in print_rtx (in_rtx=0xfeadfdd4) at /vol/gcc/src/hg/trunk/local/gcc/print-rtl.c:363 #6 0x0856339c in print_rtx (in_rtx=in_rtx@entry=0xfea9bea8) at /vol/gcc/src/hg/trunk/local/gcc/print-rtl.c:384 #7 0x08564814 in print_rtl_single_with_indent (outf=0x92e8100 <_iob+64>, x=0xfea9bea8, ind=0) at /vol/gcc/src/hg/trunk/local/gcc/print-rtl.c:836 #8 0x08564873 in print_rtl_single (outf=0x92e8100 <_iob+64>, x=0xfea9bea8) at /vol/gcc/src/hg/trunk/local/gcc/print-rtl.c:818 #9 0x08a7608b in recog_for_combine (pnewpat=pnewpat@entry=0x8047230, insn=insn@entry=0xfeaf6264, pnotes=pnotes@entry=0x8047254) at /vol/gcc/src/hg/trunk/local/gcc/combine.c:10579 #10 0x08a879ea in try_combine (i3=i3@entry=0xfeaf6264, i2=<optimized out>, i1=i1@entry=0x0, i0=<optimized out>, new_direct_jump_p=0x8047328, last_combined_insn=0xfeaf6264) at /vol/gcc/src/hg/trunk/local/gcc/combine.c:3240 #11 0x08a8c2f4 in combine_instructions (nregs=<optimized out>, f=<optimized out>) at /vol/gcc/src/hg/trunk/local/gcc/combine.c:1256 #12 rest_of_handle_combine () at /vol/gcc/src/hg/trunk/local/gcc/combine.c:13865 #13 (anonymous namespace)::pass_combine::execute (this=0x9316930) at /vol/gcc/src/hg/trunk/local/gcc/combine.c:13908 #14 0x0854d8d1 in execute_one_pass (pass=0x9316930) at /vol/gcc/src/hg/trunk/local/gcc/passes.c:2229 #15 0x0854db6f in execute_pass_list (pass=<optimized out>) at /vol/gcc/src/hg/trunk/local/gcc/passes.c:2282 #16 0x0854db86 in execute_pass_list (pass=<optimized out>) at /vol/gcc/src/hg/trunk/local/gcc/passes.c:2283 #17 0x082df681 in expand_function (node=node@entry=0xfea08c7c) at /vol/gcc/src/hg/trunk/local/gcc/cgraphunit.c:1774 #18 0x082e1619 in expand_all_functions () at /vol/gcc/src/hg/trunk/local/gcc/cgraphunit.c:1908 #19 compile () at /vol/gcc/src/hg/trunk/local/gcc/cgraphunit.c:2252 #20 0x082e1deb in finalize_compilation_unit () at /vol/gcc/src/hg/trunk/local/gcc/cgraphunit.c:2329 #21 0x081b4aab in c_write_global_declarations () at /vol/gcc/src/hg/trunk/local/gcc/c/c-decl.c:10401 #22 0x085f346d in compile_file () at /vol/gcc/src/hg/trunk/local/gcc/toplev.c:562 #23 0x085f5526 in do_compile () at /vol/gcc/src/hg/trunk/local/gcc/toplev.c:1914 #24 toplev_main (argc=9, argv=0x8047548) at /vol/gcc/src/hg/trunk/local/gcc/toplev.c:1990 #25 0x08d959ab in main (argc=9, argv=0x8047548) at /vol/gcc/src/hg/trunk/local/gcc/main.c:36 There's an attempt to print a NULL string. On Solaris 11, the test works and in the vect-nop-move.c.201r.combine dump there are many instances of (null), e.g. Trying 25 -> 26: Failed to match this instruction: (parallel [ (set (reg:SI 97 [ __eax ]) (asm_operands:SI ("cpuid ") ("=a") 0 [ (const_int 0 [0]) ] [ (asm_input:SI ("0") (null):0) ] [] /var/gcc/regression/trunk/11-gcc/build/gcc/include/cpuid.h:248)) Rainer