diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index dae657493a09..481f9da53e6b 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2018-12-03 Eric Botcazou + + * exp_ch3.adb (Build_Record_Init_Proc): Inherit an + initialization procedure if it is present, even if it is null. + 2018-12-03 Patrick Bernardi * libgnarl/s-taskin.ads (ATC_Level_Base): Redefine to span from diff --git a/gcc/ada/exp_ch3.adb b/gcc/ada/exp_ch3.adb index 65f6805bb7c9..35b8fe3c8166 100644 --- a/gcc/ada/exp_ch3.adb +++ b/gcc/ada/exp_ch3.adb @@ -3712,7 +3712,7 @@ package body Exp_Ch3 is and then not Is_Unchecked_Union (Rec_Type) and then not Has_New_Non_Standard_Rep (Rec_Type) and then not Parent_Subtype_Renaming_Discrims - and then Has_Non_Null_Base_Init_Proc (Etype (Rec_Type)) + and then Present (Base_Init_Proc (Etype (Rec_Type))) then Copy_TSS (Base_Init_Proc (Etype (Rec_Type)), Rec_Type); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fdb6f8b75cab..b69ad6613168 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2018-12-03 Eric Botcazou + + * gnat.dg/overload2.adb, gnat.dg/overload2_p.adb, + gnat.dg/overload2_p.ads, gnat.dg/overload2_q.adb, + gnat.dg/overload2_q.ads: New testcase. + 2018-12-03 Fritz Reese Mark Eggleston diff --git a/gcc/testsuite/gnat.dg/overload2.adb b/gcc/testsuite/gnat.dg/overload2.adb new file mode 100644 index 000000000000..56c8587b57dc --- /dev/null +++ b/gcc/testsuite/gnat.dg/overload2.adb @@ -0,0 +1,13 @@ +-- { dg-do compile } +-- { dg-options "-gnat95" } + +with Overload2_P; use Overload2_P; +with text_io; use text_io; +procedure overload2 is + this, that: t; + yes : boolean := this /= that; +begin + if not yes then + put_line ("FAILED"); + end if; +end; diff --git a/gcc/testsuite/gnat.dg/overload2_p.adb b/gcc/testsuite/gnat.dg/overload2_p.adb new file mode 100644 index 000000000000..49343cd90e00 --- /dev/null +++ b/gcc/testsuite/gnat.dg/overload2_p.adb @@ -0,0 +1,6 @@ +-- { dg-options "-gnat95 -gnatws" } + +package body overload2_p is + function "=" (this, that: t) return boolean is begin return True; end; + this, that : t; +end; diff --git a/gcc/testsuite/gnat.dg/overload2_p.ads b/gcc/testsuite/gnat.dg/overload2_p.ads new file mode 100644 index 000000000000..8d4da7485313 --- /dev/null +++ b/gcc/testsuite/gnat.dg/overload2_p.ads @@ -0,0 +1,6 @@ +with overload2_q; +package overload2_p is + type t is new overload2_q.t; +private + function "=" (this, that: t) return boolean; +end; diff --git a/gcc/testsuite/gnat.dg/overload2_q.adb b/gcc/testsuite/gnat.dg/overload2_q.adb new file mode 100644 index 000000000000..55a756eb3873 --- /dev/null +++ b/gcc/testsuite/gnat.dg/overload2_q.adb @@ -0,0 +1,5 @@ +-- { dg-options "-gnat95" } + +package body overload2_q is + function "=" (this, that: t) return boolean is begin return False; end; +end; diff --git a/gcc/testsuite/gnat.dg/overload2_q.ads b/gcc/testsuite/gnat.dg/overload2_q.ads new file mode 100644 index 000000000000..c4e89aa0ce0c --- /dev/null +++ b/gcc/testsuite/gnat.dg/overload2_q.ads @@ -0,0 +1,4 @@ +package overload2_q is + type t is null record; + function "=" (this, that: t) return boolean; +end;