http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49343
Summary: [4.7 regression] ICE on field with variable offset Product: gcc Version: 4.7.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassig...@gcc.gnu.org ReportedBy: ebotca...@gcc.gnu.org This is a problem recently exposed on the mainline. SRA (early variant) decides to scalarize a record containing a field with variable offset and aborts: +===========================GNAT BUG DETECTED==============================+ | 4.7.0 20110608 (experimental) [trunk revision 174799] (i586-suse-linux-gnu) GCC error:| | in tree_low_cst, at tree.c:6441 | | Error detected around discr31.adb:12:1 #0 internal_error (gmsgid=0x92e69cf "in %s, at %s:%d") at /home/eric/svn/gcc/gcc/diagnostic.c:837 #1 0x0909efc2 in fancy_abort (file=0x91b9220 "/home/eric/svn/gcc/gcc/tree.c", line=6441, function=0x91bb8ce "tree_low_cst") at /home/eric/svn/gcc/gcc/diagnostic.c:893 #2 0x08aa8c07 in tree_low_cst (t=0xf7d9cf50, pos=0) at /home/eric/svn/gcc/gcc/tree.c:6441 #3 0x08a86f60 in int_bit_position (field=0xf7cd4c38) at /home/eric/svn/gcc/gcc/tree.c:2364 #4 0x0896be08 in build_ref_for_model (loc=41221, base=0xf7d92ea0, offset=32, model=0x9a99d50, gsi=0xffffcd34, insert_after=0 '\000') at /home/eric/svn/gcc/gcc/tree-sra.c:1425 #5 0x0896f6a1 in generate_subtree_copies (access=0x9a99d50, agg=0xf7d92ea0, top_offset=0, start_offset=0, chunk_size=0, gsi=0xffffcd34, write=0 '\000', insert_after=0 '\000', loc=41221) at /home/eric/svn/gcc/gcc/tree-sra.c:2297 #6 0x0897155b in sra_modify_assign (stmt=0xffffcd30, gsi=0xffffcd34) at /home/eric/svn/gcc/gcc/tree-sra.c:2823 #7 0x08971c07 in sra_modify_function_body () at /home/eric/svn/gcc/gcc/tree-sra.c:2942 #8 0x08972185 in perform_intra_sra () #9 0x08972280 in early_intra_sra () at /home/eric/svn/gcc/gcc/tree-sra.c:3079 Testcase suitable for the gnat.dg testsuite to be attached, run 'gnatchop' on it and compile at -O the .adb file.