re PR tree-optimization/59356 (ACATS C52102A and C52102C failures)
PR tree-optimization/59356 * tree-dfa.h (get_addr_base_and_unit_offset_1) <case ARRAY_REF>: Do the offset computation using the precision of the index type. From-SVN: r205585
This commit is contained in:
parent
95044b50b0
commit
139bd704f1
4 changed files with 35 additions and 5 deletions
|
@ -1,3 +1,9 @@
|
|||
2013-12-02 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
PR tree-optimization/59356
|
||||
* tree-dfa.h (get_addr_base_and_unit_offset_1) <case ARRAY_REF>: Do the
|
||||
offset computation using the precision of the index type.
|
||||
|
||||
2013-12-02 Yvan Roux <yvan.roux@linaro.org>
|
||||
|
||||
PR target/58785
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2013-12-02 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gnat.dg/opt30.adb: New test.
|
||||
|
||||
2013-12-01 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/57354
|
||||
|
|
20
gcc/testsuite/gnat.dg/opt30.adb
Normal file
20
gcc/testsuite/gnat.dg/opt30.adb
Normal file
|
@ -0,0 +1,20 @@
|
|||
-- { dg-do run }
|
||||
-- { dg-options "-O" }
|
||||
|
||||
procedure Opt30 is
|
||||
|
||||
function Id_I (I : Integer) return Integer is
|
||||
begin
|
||||
return I;
|
||||
end;
|
||||
|
||||
A : array (Integer range -4..4) of Integer;
|
||||
|
||||
begin
|
||||
A := (-ID_I(4), -ID_I(3), -ID_I(2), -ID_I(1), ID_I(100),
|
||||
ID_I(1), ID_I(2), ID_I(3), ID_I(4));
|
||||
A(-4..0) := A(0..4);
|
||||
if A /= (100, 1, 2, 3, 4, 1, 2, 3, 4) then
|
||||
raise Program_Error;
|
||||
end if;
|
||||
end;
|
|
@ -102,11 +102,11 @@ get_addr_base_and_unit_offset_1 (tree exp, HOST_WIDE_INT *poffset,
|
|||
&& (unit_size = array_ref_element_size (exp),
|
||||
TREE_CODE (unit_size) == INTEGER_CST))
|
||||
{
|
||||
HOST_WIDE_INT hindex = TREE_INT_CST_LOW (index);
|
||||
|
||||
hindex -= TREE_INT_CST_LOW (low_bound);
|
||||
hindex *= TREE_INT_CST_LOW (unit_size);
|
||||
byte_offset += hindex;
|
||||
double_int doffset
|
||||
= (TREE_INT_CST (index) - TREE_INT_CST (low_bound))
|
||||
.sext (TYPE_PRECISION (TREE_TYPE (index)));
|
||||
doffset *= tree_to_double_int (unit_size);
|
||||
byte_offset += doffset.to_shwi ();
|
||||
}
|
||||
else
|
||||
return NULL_TREE;
|
||||
|
|
Loading…
Add table
Reference in a new issue