diff mbox series

Fix PR debug/113519 and debug/113777

Message ID 2318264.ElGaqSPkdT@localhost.localdomain
State New
Headers show
Series Fix PR debug/113519 and debug/113777 | expand

Commit Message

Eric Botcazou March 11, 2024, 8:30 a.m. UTC
They both come from an oversight of mine in the placement of the DIE created 
for an enumeration type with reverse scalar storage order.

Tested on x86-64/Linux, both GCC and GDB, applied on mainline as obvious.


2024-03-11  Eric Botcazou  <ebotcazou@adacore.com>

	PR debug/113519
	PR debug/113777
	* dwarf2out.cc (gen_enumeration_type_die): In the reverse case,
	generate the DIE with the same parent as in the regular case.


2024-03-11  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc.dg/sso-20.c: New test.
	* gcc.dg/sso-21.c: Likewise.
diff mbox series

Patch

diff --git a/gcc/dwarf2out.cc b/gcc/dwarf2out.cc
index 03d73f9eecd..9b1548e4ae3 100644
--- a/gcc/dwarf2out.cc
+++ b/gcc/dwarf2out.cc
@@ -22868,18 +22868,19 @@  gen_enumeration_type_die (tree type, dw_die_ref context_die, bool reverse)
 
   if (type_die == NULL || reverse)
     {
+      dw_die_ref scope_die = scope_die_for (type, context_die);
+
       /* The DIE with DW_AT_endianity is placed right after the naked DIE.  */
       if (reverse)
 	{
 	  gcc_assert (type_die);
 	  dw_die_ref after_die = type_die;
 	  type_die = new_die_raw (DW_TAG_enumeration_type);
-	  add_child_die_after (context_die, type_die, after_die);
+	  add_child_die_after (scope_die, type_die, after_die);
 	}
       else
 	{
-	  type_die = new_die (DW_TAG_enumeration_type,
-			      scope_die_for (type, context_die), type);
+	  type_die = new_die (DW_TAG_enumeration_type, scope_die, type);
 	  equate_type_number_to_die (type, type_die);
 	}
       add_name_attribute (type_die, type_tag (type));