diff options
Diffstat (limited to 'gcc/ada/sem_ch5.adb')
-rw-r--r-- | gcc/ada/sem_ch5.adb | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/ada/sem_ch5.adb b/gcc/ada/sem_ch5.adb index e1d6be4..0661e64 100644 --- a/gcc/ada/sem_ch5.adb +++ b/gcc/ada/sem_ch5.adb @@ -807,7 +807,14 @@ package body Sem_Ch5 is if Is_Tag_Indeterminate (Rhs) then if Is_Class_Wide_Type (T1) then - Propagate_Tag (Lhs, Rhs); + + -- No need to propagate the tag when the RHS has function calls + -- that already propagated it (see Expand_Call_Helper), or if + -- some error was reported analyzing RHS. + + if not (Error_Posted (Rhs) or else Tag_Propagated (Lhs)) then + Propagate_Tag (Lhs, Rhs); + end if; elsif Nkind (Rhs) = N_Function_Call and then Is_Entity_Name (Name (Rhs)) |