Fix PR ada/98228
authorEric Botcazou <ebotcazou@adacore.com>
Tue, 26 Jan 2021 17:54:26 +0000 (18:54 +0100)
committerEric Botcazou <ebotcazou@adacore.com>
Tue, 26 Jan 2021 18:03:58 +0000 (19:03 +0100)
This is the profiled bootstrap failure for s390x/Linux on the mainline,
which has been introduced by the modref pass but actually exposing an
existing issue in the maybe_pad_type function that is visible on s390x.

The issue is too weak a test for the addressability of the inner component.

gcc/ada/
    Marius Hillenbrand  <mhillen@linux.ibm.com>

PR ada/98228
* gcc-interface/utils.c (maybe_pad_type): Test the size of the new
packable type instead of its alignment for addressability's sake.

gcc/ada/gcc-interface/utils.c

index d52220a675e3f198d541651e615bd99d7e16c614..c503bfbb36d7910766394f2b8076f381cc78462d 100644 (file)
@@ -1571,7 +1571,7 @@ maybe_pad_type (tree type, tree size, unsigned int align,
     {
       tree packable_type = make_packable_type (type, true, align);
       if (TYPE_MODE (packable_type) != BLKmode
-         && align >= TYPE_ALIGN (packable_type))
+         && compare_tree_int (TYPE_SIZE (packable_type), align) <= 0)
         type = packable_type;
     }