diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/ada/gcc-interface/decl.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/array38.adb | 11 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/array38_pkg.adb | 8 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/array38_pkg.ads | 18 |
6 files changed, 52 insertions, 0 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 896efda..8e11108 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,5 +1,10 @@ 2019-10-11 Eric Botcazou <ebotcazou@adacore.com> + * gcc-interface/decl.c (Gigi_Equivalent_Type) <E_Array_Subtype>: New + case. Return the base type if the subtype is not constrained. + +2019-10-11 Eric Botcazou <ebotcazou@adacore.com> + * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Named_{Integer|Real}>: New case to deal with the definition of named numbers. <E_Variable>: Minor tweaks. Set DECL_IGNORED_P on the CONST_DECL diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c index 4878f5e..2529824 100644 --- a/gcc/ada/gcc-interface/decl.c +++ b/gcc/ada/gcc-interface/decl.c @@ -5026,6 +5026,11 @@ Gigi_Equivalent_Type (Entity_Id gnat_entity) gnat_equiv = Etype (gnat_entity); break; + case E_Array_Subtype: + if (!Is_Constrained (gnat_entity)) + gnat_equiv = Etype (gnat_entity); + break; + case E_Class_Wide_Type: gnat_equiv = Root_Type (gnat_entity); break; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0f55eec..612b22b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-10-11 Eric Botcazou <ebotcazou@adacore.com> + + * gnat.dg/array38.adb: New test. + * gnat.dg/array38_pkg.ad[sb]: New helper. + 2019-10-11 Jakub Jelinek <jakub@redhat.com> PR c++/91987 diff --git a/gcc/testsuite/gnat.dg/array38.adb b/gcc/testsuite/gnat.dg/array38.adb new file mode 100644 index 0000000..fe37b65 --- /dev/null +++ b/gcc/testsuite/gnat.dg/array38.adb @@ -0,0 +1,11 @@ +-- { dg-do compile } + +with Array38_Pkg; use Array38_Pkg; + +procedure Array38 is + + function My_F is new F (Index, Byte, Bytes, Integer); + +begin + null; +end; diff --git a/gcc/testsuite/gnat.dg/array38_pkg.adb b/gcc/testsuite/gnat.dg/array38_pkg.adb new file mode 100644 index 0000000..ebaa66e --- /dev/null +++ b/gcc/testsuite/gnat.dg/array38_pkg.adb @@ -0,0 +1,8 @@ +package body Array38_Pkg is + + function F (Data : Array_Type) return Value_Type is + begin + return Value_Type'First; + end; + +end Array38_Pkg; diff --git a/gcc/testsuite/gnat.dg/array38_pkg.ads b/gcc/testsuite/gnat.dg/array38_pkg.ads new file mode 100644 index 0000000..17c3ef4 --- /dev/null +++ b/gcc/testsuite/gnat.dg/array38_pkg.ads @@ -0,0 +1,18 @@ +package Array38_Pkg is + + type Byte is mod 2**8; + + type Length is new Natural; + subtype Index is Length range 1 .. Length'Last; + + type Bytes is array (Index range <>) of Byte with + Predicate => Bytes'Length > 0; + + generic + type Index_Type is (<>); + type Element_Type is (<>); + type Array_Type is array (Index_Type range <>) of Element_Type; + type Value_Type is (<>); + function F (Data : Array_Type) return Value_Type; + +end Array38_Pkg; |