http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53390
Bug #: 53390 Summary: ICE: tree check: expected integer_cst, have nop_expr in vect_compute_data_ref_alignmen on 32-bit x86 host Classification: Unclassified Product: gcc Version: 4.8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassig...@gcc.gnu.org ReportedBy: g...@intrepid.com CC: phhargr...@lbl.gov Host: CentOS 6 x86-32 Target: x86-32 Built on x86-32 with GCC 4.8 trunk version 187616 (2012-05-16), the attached test case fails with following internal error (with checks enabled). test.i: In function ‘foo’: test.i:10:6: internal compiler error: tree check: expected integer_cst, have nop_expr in tree_int_cst_sgn, at tree.c:6601 Back trace: #0 internal_error (gmsgid=0x8f57f68 "tree check: %s, have %s in %s, at %s:%d") at gcc/diagnostic.c:955 #1 0x089e6b71 in tree_check_failed (node=0xb7c8a378, file=0x8f57148 "gcc/tree.c", line=6601, function=0x8f5958c "tree_int_cst_sgn") at gcc/tree.c:8886 #2 0x089d7c50 in tree_int_cst_sgn (t=0xb7c8a378) at gcc/tree.c:6601 #3 0x089d7108 in tree_int_cst_lt (t1=0xb7c8a378, t2=0xb7bec594) at gcc/tree.c:6503 #4 0x089d7634 in tree_int_cst_compare (t1=0xb7c8a378, t2=0xb7bec594) at gcc/tree.c:6525 #5 0x08e2abda in vect_compute_data_ref_alignment (dr=0x92a3768) at gcc/tree-vect-data-refs.c:923 #6 0x08e2ae38 in vect_compute_data_refs_alignment (loop_vinfo=0x92a37e0, bb_vinfo=0x0) at gcc/tree-vect-data-refs.c:976 #7 0x08e2d99f in vect_analyze_data_refs_alignment (loop_vinfo=0x92a37e0, bb_vinfo=0x0) at gcc/tree-vect-data-refs.c:2074 (gdb) f 5 #5 0x08e2abda in vect_compute_data_ref_alignment (dr=0x92a3768) at gcc/tree-vect-data-refs.c:923 923 if (tree_int_cst_compare (DR_STEP (dr), size_zero_node) < 0) (gdb) l 918 && DECL_ALIGN (base) >= TYPE_ALIGN (vectype))); 919 920 /* If this is a backward running DR then first access in the larger 921 vectype actually is N-1 elements before the address in the DR. 922 Adjust misalign accordingly. */ 923 if (tree_int_cst_compare (DR_STEP (dr), size_zero_node) < 0) 924 { 925 tree offset = ssize_int (TYPE_VECTOR_SUBPARTS (vectype) - 1); 926 /* DR_STEP(dr) is the same as -TYPE_SIZE of the scalar type, 927 otherwise we wouldn't be here. */ (gdb) down #4 0x089d7634 in tree_int_cst_compare (t1=0xb7c8a378, t2=0xb7bec594) at gcc/tree.c:6525 6525 if (tree_int_cst_lt (t1, t2)) (gdb) p t1 $1 = (const_tree) 0xb7c8a378 (gdb) pt <nop_expr 0xb7c8a378 type <integer_type 0xb7bff0c0 ssizetype public SI size <integer_cst 0xb7bec55c constant 32> unit size <integer_cst 0xb7bec578 constant 4> align 32 symtab 0 alias set -1 canonical type 0xb7bff0c0 precision 32 min <integer_cst 0xb7bec620 -2147483648> max <integer_cst 0xb7bec63c 2147483647>> arg 0 <mult_expr 0xb7c87a80 type <integer_type 0xb7bff3c0 unsigned int public unsigned SI size <integer_cst 0xb7bec55c 32> unit size <integer_cst 0xb7bec578 4> align 32 symtab 0 alias set -1 canonical type 0xb7bff3c0 precision 32 min <integer_cst 0xb7bec86c 0> max <integer_cst 0xb7bec850 4294967295> pointer_to_this <pointer_type 0xb7c0b300>> arg 0 <nop_expr 0xb7c8a348 type <integer_type 0xb7bff3c0 unsigned int> arg 0 <ssa_name 0xb7c70d3c type <integer_type 0xb7bff360 int> visited var <var_decl 0xb7c81cc0 pretmp.12>def_stmt pretmp.12_42 = var2; version 42>> arg 1 <integer_cst 0xb7c7fa64 constant 2>>> I was unable to cause this to fail on an x86_64 *host* compiling with -m32, but perhaps needed to try some other configuration options. The failing compiler above was built on an x86-32 (CentOS 6) host with --disable-bootstrap and --enable-checking.