diff options
Diffstat (limited to 'gcc/ada/exp_ch6.adb')
-rw-r--r-- | gcc/ada/exp_ch6.adb | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb index 82311e1..989dc1a 100644 --- a/gcc/ada/exp_ch6.adb +++ b/gcc/ada/exp_ch6.adb @@ -3670,6 +3670,16 @@ package body Exp_Ch6 is return; end if; + -- Avoid generation of temporaries for unreferenced formals + + -- What is going on here ??? test below is for *PRAGMA* unreferenced + -- not for an unreferenced formal. Is this a bug fix, or simply an + -- optimization. Needs comment fix and explanation ??? + + if Has_Pragma_Unreferenced (F) then + goto Continue; + end if; + -- If the argument may be a controlling argument in a call within -- the inlined body, we must preserve its classwide nature to insure -- that dynamic dispatching take place subsequently. If the formal @@ -3790,6 +3800,7 @@ package body Exp_Ch6 is Set_Renamed_Object (F, Temp); end if; + <<Continue>> Next_Formal (F); Next_Actual (A); end loop; |