summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gnat.dg
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gnat.dg')
-rw-r--r--gcc/testsuite/gnat.dg/controlled2.adb3
-rw-r--r--gcc/testsuite/gnat.dg/controlled4.adb3
-rw-r--r--gcc/testsuite/gnat.dg/delta_aggr.adb51
-rw-r--r--gcc/testsuite/gnat.dg/elab3.adb9
-rw-r--r--gcc/testsuite/gnat.dg/elab3.ads3
-rw-r--r--gcc/testsuite/gnat.dg/elab3_pkg.adb11
-rw-r--r--gcc/testsuite/gnat.dg/elab3_pkg.ads7
-rw-r--r--gcc/testsuite/gnat.dg/finalized.adb1
-rw-r--r--gcc/testsuite/gnat.dg/gcov/check.adb27
-rw-r--r--gcc/testsuite/gnat.dg/gcov/gcov.exp44
-rw-r--r--gcc/testsuite/gnat.dg/opt69.adb28
-rw-r--r--gcc/testsuite/gnat.dg/out_param.adb21
-rw-r--r--gcc/testsuite/gnat.dg/overriding_ops2.adb8
-rw-r--r--gcc/testsuite/gnat.dg/overriding_ops2.ads12
-rw-r--r--gcc/testsuite/gnat.dg/overriding_ops2_pkg-high.ads5
-rw-r--r--gcc/testsuite/gnat.dg/overriding_ops2_pkg.ads9
-rw-r--r--gcc/testsuite/gnat.dg/unreferenced.adb11
-rw-r--r--gcc/testsuite/gnat.dg/vect18.adb2
18 files changed, 252 insertions, 3 deletions
diff --git a/gcc/testsuite/gnat.dg/controlled2.adb b/gcc/testsuite/gnat.dg/controlled2.adb
index 4fa61aff805..69665c942ae 100644
--- a/gcc/testsuite/gnat.dg/controlled2.adb
+++ b/gcc/testsuite/gnat.dg/controlled2.adb
@@ -1,4 +1,5 @@
--- { dg-do compile }
+-- { dg-do compile }
+-- { dg-options "-gnatws" }
with controlled1; use controlled1;
package body controlled2 is
diff --git a/gcc/testsuite/gnat.dg/controlled4.adb b/gcc/testsuite/gnat.dg/controlled4.adb
index b823cc9f4e5..f8159c9204d 100644
--- a/gcc/testsuite/gnat.dg/controlled4.adb
+++ b/gcc/testsuite/gnat.dg/controlled4.adb
@@ -1,4 +1,5 @@
--- { dg-do compile }
+-- { dg-do compile }
+-- { dg-options "-gnatws" }
package body controlled4 is
procedure Test_Suite is
diff --git a/gcc/testsuite/gnat.dg/delta_aggr.adb b/gcc/testsuite/gnat.dg/delta_aggr.adb
new file mode 100644
index 00000000000..57e0a69693a
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/delta_aggr.adb
@@ -0,0 +1,51 @@
+-- { dg-do compile }
+-- { dg-options "-gnat2020" }
+
+procedure Delta_Aggr is
+ type T1 is tagged record
+ F1, F2, F3 : Integer := 0;
+ end record;
+
+ function Make (X : Integer) return T1 is
+ begin
+ return (10, 20, 30);
+ end Make;
+
+ package Pkg is
+ type T2 is new T1 with private;
+ X, Y : constant T2;
+ function Make (X : Integer) return T2;
+ private
+ type T2 is new T1 with
+ record
+ F4 : Integer := 0;
+ end record;
+ X : constant T2 := (0, 0, 0, 0);
+ Y : constant T2 := (1, 2, 0, 0);
+ end Pkg;
+
+ package body Pkg is
+ function Make (X : Integer) return T2 is
+ begin
+ return (X, X ** 2, X ** 3, X ** 4);
+ end Make;
+ end Pkg;
+
+ use Pkg;
+
+ Z : T2 := (Y with delta F1 => 111);
+
+ -- a legal delta aggregate whose type is a private extension
+ pragma Assert (Y = (X with delta F1 => 1, F2 => 2));
+ pragma assert (Y.F2 = X.F1);
+
+begin
+ Z := (X with delta F1 => 1);
+
+ -- The base of the delta aggregate can be overloaded, in which case
+ -- the candidate interpretations for the aggregate are those of the
+ -- base, to be resolved from context.
+
+ Z := (Make (2) with delta F1 => 1);
+ null;
+end Delta_Aggr;
diff --git a/gcc/testsuite/gnat.dg/elab3.adb b/gcc/testsuite/gnat.dg/elab3.adb
new file mode 100644
index 00000000000..2c0a4b2df25
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/elab3.adb
@@ -0,0 +1,9 @@
+-- { dg-do compile }
+
+with Elab3_Pkg;
+
+package body Elab3 is
+ package Inst is new Elab3_Pkg (False, ABE);
+
+ procedure ABE is begin null; end ABE;
+end Elab3;
diff --git a/gcc/testsuite/gnat.dg/elab3.ads b/gcc/testsuite/gnat.dg/elab3.ads
new file mode 100644
index 00000000000..92fd4c3821b
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/elab3.ads
@@ -0,0 +1,3 @@
+package Elab3 is
+ procedure ABE;
+end Elab3;
diff --git a/gcc/testsuite/gnat.dg/elab3_pkg.adb b/gcc/testsuite/gnat.dg/elab3_pkg.adb
new file mode 100644
index 00000000000..76616d00eaf
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/elab3_pkg.adb
@@ -0,0 +1,11 @@
+package body Elab3_Pkg is
+ procedure Elaborator is
+ begin
+ Proc;
+ end Elaborator;
+
+begin
+ if Elaborate then
+ Elaborator;
+ end if;
+end Elab3_Pkg;
diff --git a/gcc/testsuite/gnat.dg/elab3_pkg.ads b/gcc/testsuite/gnat.dg/elab3_pkg.ads
new file mode 100644
index 00000000000..b4abf3a6a42
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/elab3_pkg.ads
@@ -0,0 +1,7 @@
+generic
+ Elaborate : Boolean := True;
+ with procedure Proc;
+
+package Elab3_Pkg is
+ procedure Elaborator;
+end Elab3_Pkg;
diff --git a/gcc/testsuite/gnat.dg/finalized.adb b/gcc/testsuite/gnat.dg/finalized.adb
index 36400d53ecc..a8d2f8808c6 100644
--- a/gcc/testsuite/gnat.dg/finalized.adb
+++ b/gcc/testsuite/gnat.dg/finalized.adb
@@ -1,4 +1,5 @@
-- { dg-do compile }
+-- { dg-options "-gnatws" }
with Ada.Finalization; use Ada.Finalization;
procedure finalized is
diff --git a/gcc/testsuite/gnat.dg/gcov/check.adb b/gcc/testsuite/gnat.dg/gcov/check.adb
new file mode 100644
index 00000000000..b3cb8e36b92
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/gcov/check.adb
@@ -0,0 +1,27 @@
+-- { dg-options "-fprofile-arcs -ftest-coverage" }
+-- { dg-do run { target native } } */
+
+procedure Check is
+
+ function Add1 (I1, I2 : Integer) return Integer is
+ begin
+ return I1 + I2; -- count(1)
+ end;
+
+ function Add2 (I1, I2 : Integer) return Integer is
+ pragma Suppress (Overflow_Check);
+ begin
+ return I1 + I2; -- count(1)
+ end;
+
+begin
+ if Add1 (1, 2) /= 3 then
+ raise Program_Error;
+ end if;
+
+ if Add2 (1, 2) /= 3 then
+ raise Program_Error;
+ end if;
+end;
+
+-- { dg-final { run-gcov check.adb } }
diff --git a/gcc/testsuite/gnat.dg/gcov/gcov.exp b/gcc/testsuite/gnat.dg/gcov/gcov.exp
new file mode 100644
index 00000000000..732ff877638
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/gcov/gcov.exp
@@ -0,0 +1,44 @@
+# Copyright (C) 1997-2017 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+
+# Gcov test driver.
+
+# Load support procs.
+load_lib gnat-dg.exp
+load_lib gcov.exp
+
+global GCC_UNDER_TEST
+
+# For now find gcov in the same directory as $GCC_UNDER_TEST.
+if { ![is_remote host] && [string match "*/*" [lindex $GCC_UNDER_TEST 0]] } {
+ set GCOV [file dirname [lindex $GCC_UNDER_TEST 0]]/gcov
+} else {
+ set GCOV gcov
+}
+
+# Initialize harness.
+dg-init
+
+# Delete old .gcda files.
+set files [glob -nocomplain *.gcda]
+if { $files != "" } {
+ eval "remote_file build delete $files"
+}
+
+# Main loop.
+dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.adb]] "" ""
+
+dg-finish
diff --git a/gcc/testsuite/gnat.dg/opt69.adb b/gcc/testsuite/gnat.dg/opt69.adb
new file mode 100644
index 00000000000..e8c94dae2dc
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/opt69.adb
@@ -0,0 +1,28 @@
+-- { dg-do compile }
+-- { dg-options "-O" }
+
+with Ada.Text_IO;
+
+procedure Opt69 is
+
+ procedure Inner
+ (A : String := (1 .. 15 => ASCII.NUL);
+ B : String := (1 .. 5 => ASCII.NUL);
+ C : String := (1 .. 5 => ASCII.NUL))
+ is
+ Aa : String (1 .. 15);
+ Bb : String (1 .. 5);
+ Cc : String (1 .. 5);
+ begin
+ Aa := A;
+ Bb := B;
+ Cc := C;
+
+ Ada.Text_IO.Put_Line (Aa);
+ Ada.Text_IO.Put_Line (Bb);
+ Ada.Text_IO.Put_Line (Cc);
+ end;
+
+begin
+ Inner;
+end;
diff --git a/gcc/testsuite/gnat.dg/out_param.adb b/gcc/testsuite/gnat.dg/out_param.adb
new file mode 100644
index 00000000000..14a2f94ea2a
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/out_param.adb
@@ -0,0 +1,21 @@
+-- { dg-do compile }
+-- { dg-options "-gnat83" }
+
+procedure Out_Param
+ (Source : in String; Dest : out String; Char_Count : out Natural) is
+begin
+ --| Logic_Step:
+ --| Copy string Source to string Dest
+ Dest := (others => ' ');
+ Char_Count := 0;
+ if Source'Length > 0 and then Dest'Length > 0 then
+ if Source'Length > Dest'Length then
+ Char_Count := Dest'Length;
+ else
+ Dest (Dest'First .. (Dest'First + Source'Length - 1)) := Source;
+ Char_Count := Source'Length;
+ end if;
+ else
+ null;
+ end if;
+end Out_Param;
diff --git a/gcc/testsuite/gnat.dg/overriding_ops2.adb b/gcc/testsuite/gnat.dg/overriding_ops2.adb
new file mode 100644
index 00000000000..9ab2f5c507e
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/overriding_ops2.adb
@@ -0,0 +1,8 @@
+-- { dg-do compile }
+
+package body Overriding_Ops2 is
+ overriding procedure Finalize (Self : in out Consumer) is
+ begin
+ null;
+ end Finalize;
+end Overriding_Ops2;
diff --git a/gcc/testsuite/gnat.dg/overriding_ops2.ads b/gcc/testsuite/gnat.dg/overriding_ops2.ads
new file mode 100644
index 00000000000..695cffb1947
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/overriding_ops2.ads
@@ -0,0 +1,12 @@
+with Overriding_Ops2_Pkg.High;
+
+package Overriding_Ops2 is
+ type Consumer is tagged limited private;
+private
+ type Consumer is
+ limited
+ new Overriding_Ops2_Pkg.High.High_Level_Session
+ with null record;
+
+ overriding procedure Finalize (Self : in out Consumer);
+end Overriding_Ops2;
diff --git a/gcc/testsuite/gnat.dg/overriding_ops2_pkg-high.ads b/gcc/testsuite/gnat.dg/overriding_ops2_pkg-high.ads
new file mode 100644
index 00000000000..46eb4629f4e
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/overriding_ops2_pkg-high.ads
@@ -0,0 +1,5 @@
+package Overriding_Ops2_Pkg.High is
+ type High_Level_Session is new Session_Type with private;
+private
+ type High_Level_Session is new Session_Type with null record;
+end Overriding_Ops2_Pkg.High;
diff --git a/gcc/testsuite/gnat.dg/overriding_ops2_pkg.ads b/gcc/testsuite/gnat.dg/overriding_ops2_pkg.ads
new file mode 100644
index 00000000000..85c8f0b6afb
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/overriding_ops2_pkg.ads
@@ -0,0 +1,9 @@
+with Ada.Finalization;
+
+package Overriding_Ops2_Pkg is
+ type Session_Type is abstract tagged limited private;
+ procedure Finalize (Session : in out Session_Type);
+private
+ type Session_Type is
+ abstract new Ada.Finalization.Limited_Controlled with null record;
+end Overriding_Ops2_Pkg;
diff --git a/gcc/testsuite/gnat.dg/unreferenced.adb b/gcc/testsuite/gnat.dg/unreferenced.adb
new file mode 100644
index 00000000000..5b047c26a61
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/unreferenced.adb
@@ -0,0 +1,11 @@
+-- { dg-do compile }
+-- { dg-options "-gnatd.F" }
+
+procedure Unreferenced is
+ X : aliased Integer;
+ Y : access Integer := X'Access;
+ Z : Integer renames Y.all;
+ pragma Unreferenced (Z);
+begin
+ null;
+end Unreferenced;
diff --git a/gcc/testsuite/gnat.dg/vect18.adb b/gcc/testsuite/gnat.dg/vect18.adb
index 91b1175248d..8739f9f1eb6 100644
--- a/gcc/testsuite/gnat.dg/vect18.adb
+++ b/gcc/testsuite/gnat.dg/vect18.adb
@@ -1,5 +1,5 @@
-- { dg-do compile { target i?86-*-* x86_64-*-* } }
--- { dg-options "-O3 -msse2 -fdump-tree-vect-details" }
+-- { dg-options "-O3 -msse2 -fdump-tree-vect-details -fno-predictive-commoning" }
package body Vect18 is