[COMMITTED] ada: Fix wrong expansion of limited extension aggregate

Message ID 20230613073804.239660-1-poulhies@adacore.com
State Accepted
Headers
Series [COMMITTED] ada: Fix wrong expansion of limited extension aggregate |

Checks

Context Check Description
snail/gcc-patch-check success Github commit url

Commit Message

Marc Poulhiès June 13, 2023, 7:38 a.m. UTC
  From: Eric Botcazou <ebotcazou@adacore.com>

This happens when the ancestor part is itself an aggregate: in this case,
the tag of the extension aggregate is wrongly set to that of the ancestor.

gcc/ada/

	* exp_aggr.adb (Build_Record_Aggr_Code): In the case of an extension
	aggregate of a limited type whose ancestor part is an aggregate, do
	not skip the final code assigning the tag of the extension.

Tested on x86_64-pc-linux-gnu, committed on master.

---
 gcc/ada/exp_aggr.adb | 2 --
 1 file changed, 2 deletions(-)
  

Patch

diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb
index c145d79f482..15230571123 100644
--- a/gcc/ada/exp_aggr.adb
+++ b/gcc/ada/exp_aggr.adb
@@ -3039,8 +3039,6 @@  package body Exp_Aggr is
               and then Nkind (Unqualify (Ancestor)) in
                          N_Aggregate | N_Extension_Aggregate
             then
-               Ancestor_Is_Expression := True;
-
                --  Set up finalization data for enclosing record, because
                --  controlled subcomponents of the ancestor part will be
                --  attached to it.