aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/exp_ch6.adb
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ada/exp_ch6.adb')
-rw-r--r--gcc/ada/exp_ch6.adb9
1 files changed, 1 insertions, 8 deletions
diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb
index 1059459..ab237f9 100644
--- a/gcc/ada/exp_ch6.adb
+++ b/gcc/ada/exp_ch6.adb
@@ -7545,16 +7545,9 @@ package body Exp_Ch6 is
-- processing is required except to set the By_Ref flag to ensure
-- that gigi does not attempt an extra unnecessary copy. (Actually
-- not just unnecessary but wrong in the case of a controlled type,
- -- where gigi does not know how to do a copy.) To make up for a gcc
- -- 2.8.1 deficiency (???), we perform the copy for array types if the
- -- constrained status of the target type is different from that of
- -- the expression.
+ -- where gigi does not know how to do a copy.)
if Requires_Transient_Scope (Exp_Typ)
- and then
- (not Is_Array_Type (Exp_Typ)
- or else Is_Constrained (Exp_Typ) = Is_Constrained (R_Type)
- or else CW_Or_Has_Controlled_Part (Utyp))
and then Exp_Is_Function_Call
then
Set_By_Ref (N);