diff options
Diffstat (limited to 'gcc/ada/exp_disp.adb')
-rw-r--r-- | gcc/ada/exp_disp.adb | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/gcc/ada/exp_disp.adb b/gcc/ada/exp_disp.adb index b4f4970c457..46db2dc192a 100644 --- a/gcc/ada/exp_disp.adb +++ b/gcc/ada/exp_disp.adb @@ -695,14 +695,18 @@ package body Exp_Disp is end if; -- Expand_Dispatching_Call is called directly from the semantics, - -- so we need a check to see whether expansion is active before - -- proceeding. In addition, there is no need to expand the call - -- if we are compiling under restriction No_Dispatching_Calls; - -- the semantic analyzer has previously notified the violation - -- of this restriction. + -- so we only proceed if the expander is active. if not Expander_Active + + -- And this expansion is not required in special ALFA mode expansion + or else ALFA_Mode + + -- And there is no need to expand the call if we are compiling under + -- restriction No_Dispatching_Calls; the semantic analyzer has + -- previously notified the violation of this restriction. + or else Restriction_Active (No_Dispatching_Calls) then return; |