Hi,
this is a regression present on the mainline and 10 branch: on the one hand,
IPA-SRA does *not* disqualify accesses with zero size but, on the other hand,
it checks that accesses present in the tree have a (strictly) positive size,
thus trivially yielding an ICE, for example on the attached Ada testcase.
The attached fix relaxes the check, OK for mainline and 10 branch?
2020-12-03 Eric Botcazou <ebotca...@adacore.com>
* ipa-sra.c (verify_access_tree_1): Relax assertion on the size.
2020-12-03 Eric Botcazou <ebotca...@adacore.com>
* gnat.dg/opt91.ad[sb]: New test.
* gnat.dg/opt91_pkg.ad[sb]: New helper.
--
Eric Botcazou
diff --git a/gcc/ipa-sra.c b/gcc/ipa-sra.c
index 82acc6a21cb..7adc4b688f3 100644
--- a/gcc/ipa-sra.c
+++ b/gcc/ipa-sra.c
@@ -1480,7 +1480,7 @@ verify_access_tree_1 (gensum_param_access *access, HOST_WIDE_INT parent_offset,
{
while (access)
{
- gcc_assert (access->offset >= 0 && access->size > 0);
+ gcc_assert (access->offset >= 0 && access->size >= 0);
if (parent_size != 0)
{
package body Opt91_Pkg is
package body Pure_Relation is
overriding function Custom_Image (Self : Rel) return String is
begin
return Custom_Image (Self.Rel);
end Custom_Image;
end Pure_Relation;
end Opt91_Pkg;
package Opt91_Pkg is
type Base_Relation is abstract tagged null record;
function Custom_Image (Self : Base_Relation) return String is abstract;
generic
type Ty is private;
with function Custom_Image (Self : Ty) return String is <>;
package Pure_Relation is
type Rel is new Base_Relation with record
Rel : Ty;
end record;
overriding function Custom_Image (Self : Rel) return String;
end Pure_Relation;
end Opt91_Pkg;
-- { dg-do compile }
-- { dg-options "-O2 -fchecking=1" }
package body Opt91 is
function Custom_Image (Self : True_Relation_Rec) return String is
begin
return "<True>";
end;
end Opt91;
with Opt91_Pkg; use Opt91_Pkg;
package Opt91 is
type True_Relation_Rec is null record;
function Custom_Image (Self : True_Relation_Rec) return String;
package True_Relation is new Pure_Relation (Ty => True_Relation_Rec);
end Opt91;