Commit 9402220c by Eric Botcazou Committed by Eric Botcazou

tree-ssa-forwprop.c (combine_conversions): Punt if the RHS of the defining…

tree-ssa-forwprop.c (combine_conversions): Punt if the RHS of the defining statement is a SSA name that occurs in abnormal...

	* tree-ssa-forwprop.c (combine_conversions): Punt if the RHS of the
	defining statement is a SSA name that occurs in abnormal PHIs.

From-SVN: r189687
parent a3628196
2012-07-19 Eric Botcazou <ebotcazou@adacore.com> 2012-07-19 Eric Botcazou <ebotcazou@adacore.com>
* tree-ssa-forwprop.c (combine_conversions): Punt if the RHS of the
defining statement is a SSA name that occurs in abnormal PHIs.
2012-07-19 Eric Botcazou <ebotcazou@adacore.com>
* gimple-fold.c (canonicalize_constructor_val): Strip only useless type * gimple-fold.c (canonicalize_constructor_val): Strip only useless type
conversions. conversions.
......
2012-07-19 Eric Botcazou <ebotcazou@adacore.com> 2012-07-19 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/opt25.adb: New test.
* gnat.dg/opt25_pkg1.ad[sb]: New helper.
* gnat.dg/opt25_pkg2.ad[sb]: Likewise
2012-07-19 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/aggr20.ad[sb]: New test. * gnat.dg/aggr20.ad[sb]: New test.
* gnat.dg/aggr20_pkg.ads: New helper. * gnat.dg/aggr20_pkg.ads: New helper.
......
-- { dg-do compile }
-- { dg-options "-O" }
with Opt25_Pkg1;
with Opt25_Pkg2;
procedure Opt25 (B1, B2 : in out Boolean) is
package Local_Pack_Instance is new Opt25_Pkg1 (Boolean, True);
package Local_Stack is new Opt25_Pkg2 (Integer, 0);
S : Local_Stack.Stack := Local_Stack.Default_Stack;
begin
Local_Pack_Instance.Swap (B1, B2);
end;
package body Opt25_Pkg1 is
procedure Swap (A, B : in out T) is
Tmp : T := A;
begin
A := B;
B := Tmp;
end Swap;
end Opt25_Pkg1;
generic
type T is private;
Init_Value : T;
package Opt25_Pkg1 is
Var : T := Init_Value;
procedure Swap (A, B : in out T);
end Opt25_Pkg1;
package body Opt25_Pkg2 is
function Default_Stack return Stack is
begin
return Default_Stack_Var;
end Default_Stack;
end Opt25_Pkg2;
generic
type Value is private;
Init_Val : Value;
package Opt25_Pkg2 is
type Stack (Size : Natural) is private;
function Default_Stack return Stack;
private
type Value_Array is array (Natural range <>) of Value;
type Stack (Size : Natural) is record
Store : Value_Array (1 .. Size);
end record;
Default_Stack_Var : Stack (10);
end Opt25_Pkg2;
...@@ -2584,6 +2584,11 @@ combine_conversions (gimple_stmt_iterator *gsi) ...@@ -2584,6 +2584,11 @@ combine_conversions (gimple_stmt_iterator *gsi)
unsigned int final_prec = TYPE_PRECISION (type); unsigned int final_prec = TYPE_PRECISION (type);
int final_unsignedp = TYPE_UNSIGNED (type); int final_unsignedp = TYPE_UNSIGNED (type);
/* Don't propagate ssa names that occur in abnormal phis. */
if (TREE_CODE (defop0) == SSA_NAME
&& SSA_NAME_OCCURS_IN_ABNORMAL_PHI (defop0))
return 0;
/* In addition to the cases of two conversions in a row /* In addition to the cases of two conversions in a row
handled below, if we are converting something to its own handled below, if we are converting something to its own
type via an object of identical or wider precision, neither type via an object of identical or wider precision, neither
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment