From: Eric Botcazou Date: Tue, 20 Aug 2024 08:34:45 +0000 (+0200) Subject: ada: Fix internal error on pragma pack with discriminated record component X-Git-Tag: basepoints/gcc-16~6150 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9ba7262c8de0a96e85cc1ad05e2c3666228c74e8;p=thirdparty%2Fgcc.git ada: Fix internal error on pragma pack with discriminated record component When updating the size after making a packable type in gnat_to_gnu_field, we fail to clear it again when it is not constant. gcc/ada/ * gcc-interface/decl.cc (gnat_to_gnu_field): Clear again gnu_size after updating it if it is not constant. --- diff --git a/gcc/ada/gcc-interface/decl.cc b/gcc/ada/gcc-interface/decl.cc index 398e01521a3..655ba0b8a10 100644 --- a/gcc/ada/gcc-interface/decl.cc +++ b/gcc/ada/gcc-interface/decl.cc @@ -7686,6 +7686,8 @@ gnat_to_gnu_field (Entity_Id gnat_field, tree gnu_record_type, int packed, gnu_field_type = gnu_packable_type; if (!gnu_size) gnu_size = rm_size (gnu_field_type); + if (TREE_CODE (gnu_size) != INTEGER_CST) + gnu_size = NULL_TREE; } }