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 only on s390x.  Marius did all 
the heavy lifting and posted a fairly extensive investigation report in the 
audit trail (thanks!), so I don't repeat it here; the ultimate issue is too 
weak a test for the addressability of the inner component.

Marius bootstrapped/regtested it on s930x and x86-64 and I conducted a bit 
more testing on my side.  Applied on mainline, 10 and 9 branches.


2021-01-26  Eric Botcazou  <ebotca...@adacore.com>
            Marius Hillenbrand  <mhil...@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.

-- 
Eric Botcazou
diff --git a/gcc/ada/gcc-interface/utils.c b/gcc/ada/gcc-interface/utils.c
index 494f60e0879..95e509c6e8b 100644
--- a/gcc/ada/gcc-interface/utils.c
+++ b/gcc/ada/gcc-interface/utils.c
@@ -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;
     }
 

Reply via email to