tree-ssa-ccp.c (valid_lattice_transition): Clarify comment about transition from invariant to known bits.
2012-07-19 Richard Guenther <rguenther@suse.de> Eric Botcazou <ebotcazou@adacore.com> * tree-ssa-ccp.c (valid_lattice_transition): Clarify comment about transition from invariant to known bits. (likely_value): Addresses with UNDEFINED components are UNDEFINED. * gnat.dg/loop_optimization11.adb: New testcase. * gnat.dg/loop_optimization11_pkg.ads: Likewise. Co-Authored-By: Eric Botcazou <ebotcazou@adacore.com> From-SVN: r189650
This commit is contained in:
parent
cd1cae3590
commit
95cbf8515a
5 changed files with 51 additions and 1 deletions
|
@ -1,3 +1,11 @@
|
|||
2012-07-19 Richard Guenther <rguenther@suse.de>
|
||||
Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* tree-ssa-ccp.c (valid_lattice_transition): Clarify comment
|
||||
about transition from invariant to known bits.
|
||||
(likely_value): Addresses with UNDEFINED components are
|
||||
UNDEFINED.
|
||||
|
||||
2012-07-19 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/53970
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
2012-07-19 Richard Guenther <rguenther@suse.de>
|
||||
Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gnat.dg/loop_optimization11.adb: New testcase.
|
||||
* gnat.dg/loop_optimization11_pkg.ads: Likewise.
|
||||
|
||||
2012-07-18 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
Jason Merrill <jason@redhat.com>
|
||||
|
||||
|
|
19
gcc/testsuite/gnat.dg/loop_optimization11.adb
Normal file
19
gcc/testsuite/gnat.dg/loop_optimization11.adb
Normal file
|
@ -0,0 +1,19 @@
|
|||
-- { dg-do compile }
|
||||
-- { dg-options "-O" }
|
||||
|
||||
with Loop_Optimization11_Pkg; use Loop_Optimization11_Pkg;
|
||||
|
||||
procedure Loop_Optimization11 is
|
||||
Arr : array (Prot, Mem) of Integer := (others => (others => 0));
|
||||
begin
|
||||
Put_Line (Img (0) & " ");
|
||||
for I in Arr'Range (1) loop
|
||||
for J in Arr'Range (2) loop
|
||||
declare
|
||||
Elem : Integer renames Arr (I, J);
|
||||
begin
|
||||
Put_Line (Img (Elem));
|
||||
end;
|
||||
end loop;
|
||||
end loop;
|
||||
end;
|
11
gcc/testsuite/gnat.dg/loop_optimization11_pkg.ads
Normal file
11
gcc/testsuite/gnat.dg/loop_optimization11_pkg.ads
Normal file
|
@ -0,0 +1,11 @@
|
|||
package Loop_Optimization11_Pkg is
|
||||
|
||||
function Img (X : Integer) return String;
|
||||
|
||||
procedure Put_Line (Data : String);
|
||||
|
||||
type Prot is (Execute, Execute_Read, Execute_Read_Write);
|
||||
|
||||
type Mem is (Mem_Image, Mem_Mapped, Mem_Private, Unknown);
|
||||
|
||||
end Loop_Optimization11_Pkg;
|
|
@ -405,7 +405,8 @@ valid_lattice_transition (prop_value_t old_val, prop_value_t new_val)
|
|||
|
||||
/* Now both lattice values are CONSTANT. */
|
||||
|
||||
/* Allow transitioning from &x to &x & ~3. */
|
||||
/* Allow transitioning from PHI <&x, not executable> == &x
|
||||
to PHI <&x, &y> == common alignment. */
|
||||
if (TREE_CODE (old_val.value) != INTEGER_CST
|
||||
&& TREE_CODE (new_val.value) == INTEGER_CST)
|
||||
return true;
|
||||
|
@ -648,6 +649,11 @@ likely_value (gimple stmt)
|
|||
the undefined operand may be promoted. */
|
||||
return UNDEFINED;
|
||||
|
||||
case ADDR_EXPR:
|
||||
/* If any part of an address is UNDEFINED, like the index
|
||||
of an ARRAY_EXPR, then treat the result as UNDEFINED. */
|
||||
return UNDEFINED;
|
||||
|
||||
default:
|
||||
;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue