[COMMITTED,27/31] ada: Fix crash on reference to aliased object of packed array type with -g

Message ID 20250911091904.1505690-27-poulhies@adacore.com
State Committed
Commit c93fe0be50bcf622181b3036c89ebda0a71132d7
Headers
Series [COMMITTED,01/31] ada: Disable new warning for composite equality ops that can raise Program_Error |

Commit Message

Marc Poulhiès Sept. 11, 2025, 9:18 a.m. UTC
  From: Eric Botcazou <ebotcazou@adacore.com>

This happens when the object is declared in another compilation unit.

gcc/ada/ChangeLog:

	* gcc-interface/misc.cc (gnat_get_array_descr_info): In the record
	type case, bail out if the original array type cannot be retrieved.

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

---
 gcc/ada/gcc-interface/misc.cc | 2 ++
 1 file changed, 2 insertions(+)
  

Patch

diff --git a/gcc/ada/gcc-interface/misc.cc b/gcc/ada/gcc-interface/misc.cc
index 7711f8b0f82a..a79b87e3bdb2 100644
--- a/gcc/ada/gcc-interface/misc.cc
+++ b/gcc/ada/gcc-interface/misc.cc
@@ -837,6 +837,8 @@  gnat_get_array_descr_info (const_tree const_type,
       if (TYPE_IMPL_PACKED_ARRAY_P (array_type)
           && TYPE_ORIGINAL_PACKED_ARRAY (array_type))
         array_type = TYPE_ORIGINAL_PACKED_ARRAY (array_type);
+      if (TREE_CODE (array_type) != ARRAY_TYPE)
+	return false;
 
       /* Shift back the address to get the address of the template.  */
       tree shift_amount