http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46349

           Summary: [4.6 regression] incorrect scalarization
           Product: gcc
           Version: 4.6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: ebotca...@gcc.gnu.org


The fix for PR tree-opt/44972 has introduced regressions in Ada, specifically:

    (sra_modify_assign): Removed ref_expr_for_all_replacements_p checks,
    checks for return values of build_ref_for_offset.

sra_modify_assign now builds addresses of non-byte-aligned references, leading
to the expected ICE later in the RTL expander:

e...@atlantis:~/build/gcc/native32> gcc/xgcc -Bgcc -S opt9.adb -gnatws -O
+===========================GNAT BUG DETECTED==============================+
| 4.6.0 20101105 (experimental) [trunk revision 166350] (i586-suse-linux-gnu)
GCC error:|
| in expand_expr_addr_expr_1, at expr.c:7009                               |
| Error detected around opt9.adb:17:7                   

The non-byte-aligned reference is a bitfield with aggregate type.  I think that
the checks of the return values should be reinstated somehow or other.

The testcase is suitable for addition to the gnat.dg testsuite.

Reply via email to