exp_util.adb (Remove_Side_Effects): Properly propagate arguments to recursive calls.
2005-03-29 Robert Dewar <dewar@adacore.com> * exp_util.adb (Remove_Side_Effects): Properly propagate arguments to recursive calls. (Is_Possibly_Unaligned_Object): Correct typo that resulted in inaccurate result for unaligned scalars within records. From-SVN: r97173
This commit is contained in:
parent
d239991ff6
commit
8adcacefcd
@ -2386,8 +2386,8 @@ package body Exp_Util is
|
|||||||
-- component of the record, then the component may be unaligned.
|
-- component of the record, then the component may be unaligned.
|
||||||
|
|
||||||
if Is_Packed (Etype (P))
|
if Is_Packed (Etype (P))
|
||||||
and then Represented_As_Scalar (Etype (P))
|
and then Represented_As_Scalar (Etype (C))
|
||||||
and then First_Entity (Etype (Entity (P))) /= C
|
and then First_Entity (Scope (C)) /= C
|
||||||
then
|
then
|
||||||
return True;
|
return True;
|
||||||
end if;
|
end if;
|
||||||
@ -3212,7 +3212,7 @@ package body Exp_Util is
|
|||||||
|
|
||||||
-- At the current time, the only types that we return False for (i.e.
|
-- At the current time, the only types that we return False for (i.e.
|
||||||
-- where we decide we know they cannot generate large temps) are ones
|
-- where we decide we know they cannot generate large temps) are ones
|
||||||
-- where we know the size is 128 bits or less at compile time, and we
|
-- where we know the size is 256 bits or less at compile time, and we
|
||||||
-- are still not doing a thorough job on arrays and records ???
|
-- are still not doing a thorough job on arrays and records ???
|
||||||
|
|
||||||
function May_Generate_Large_Temp (Typ : Entity_Id) return Boolean is
|
function May_Generate_Large_Temp (Typ : Entity_Id) return Boolean is
|
||||||
@ -3295,7 +3295,7 @@ package body Exp_Util is
|
|||||||
E : Node_Id;
|
E : Node_Id;
|
||||||
|
|
||||||
function Side_Effect_Free (N : Node_Id) return Boolean;
|
function Side_Effect_Free (N : Node_Id) return Boolean;
|
||||||
-- Determines if the tree N represents an expession that is known
|
-- Determines if the tree N represents an expression that is known
|
||||||
-- not to have side effects, and for which no processing is required.
|
-- not to have side effects, and for which no processing is required.
|
||||||
|
|
||||||
function Side_Effect_Free (L : List_Id) return Boolean;
|
function Side_Effect_Free (L : List_Id) return Boolean;
|
||||||
@ -3639,7 +3639,7 @@ package body Exp_Util is
|
|||||||
elsif Nkind (Exp) = N_Unchecked_Type_Conversion
|
elsif Nkind (Exp) = N_Unchecked_Type_Conversion
|
||||||
and then Nkind (Expression (Exp)) = N_Explicit_Dereference
|
and then Nkind (Expression (Exp)) = N_Explicit_Dereference
|
||||||
then
|
then
|
||||||
Remove_Side_Effects (Expression (Exp), Variable_Ref);
|
Remove_Side_Effects (Expression (Exp), Name_Req, Variable_Ref);
|
||||||
Scope_Suppress := Svg_Suppress;
|
Scope_Suppress := Svg_Suppress;
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -3647,7 +3647,7 @@ package body Exp_Util is
|
|||||||
-- the side effects in the expression. This is important in several
|
-- the side effects in the expression. This is important in several
|
||||||
-- circumstances: for change of representations, and also when this
|
-- circumstances: for change of representations, and also when this
|
||||||
-- is a view conversion to a smaller object, where gigi can end up
|
-- is a view conversion to a smaller object, where gigi can end up
|
||||||
-- its own temporary of the wrong size.
|
-- creating its own temporary of the wrong size.
|
||||||
|
|
||||||
-- ??? this transformation is inhibited for elementary types that are
|
-- ??? this transformation is inhibited for elementary types that are
|
||||||
-- not involved in a change of representation because it causes
|
-- not involved in a change of representation because it causes
|
||||||
@ -3657,7 +3657,7 @@ package body Exp_Util is
|
|||||||
and then (not Is_Elementary_Type (Underlying_Type (Exp_Type))
|
and then (not Is_Elementary_Type (Underlying_Type (Exp_Type))
|
||||||
or else Nkind (Parent (Exp)) = N_Assignment_Statement)
|
or else Nkind (Parent (Exp)) = N_Assignment_Statement)
|
||||||
then
|
then
|
||||||
Remove_Side_Effects (Expression (Exp), Variable_Ref);
|
Remove_Side_Effects (Expression (Exp), Name_Req, Variable_Ref);
|
||||||
Scope_Suppress := Svg_Suppress;
|
Scope_Suppress := Svg_Suppress;
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user