OSDN Git Service

PR ada/43106
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 19 Mar 2010 07:18:47 +0000 (07:18 +0000)
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 19 Mar 2010 07:18:47 +0000 (07:18 +0000)
* gnat.dg/case_optimization2.adb: New test.
* gnat.dg/case_optimization_pkg2.ad[sb]: New helper.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@157558 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/gnat.dg/case_optimization2.adb [new file with mode: 0644]
gcc/testsuite/gnat.dg/case_optimization_pkg2.adb [new file with mode: 0644]
gcc/testsuite/gnat.dg/case_optimization_pkg2.ads [new file with mode: 0644]

index ef33f4c..482b385 100644 (file)
@@ -1,3 +1,9 @@
+2010-03-19  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR ada/43106
+       * gnat.dg/case_optimization2.adb: New test.
+       * gnat.dg/case_optimization_pkg2.ad[sb]: New helper.
+
 2010-03-11  Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
            Jack Howarth <howarth@bromo.med.uc.edu>
 
diff --git a/gcc/testsuite/gnat.dg/case_optimization2.adb b/gcc/testsuite/gnat.dg/case_optimization2.adb
new file mode 100644 (file)
index 0000000..f548a84
--- /dev/null
@@ -0,0 +1,14 @@
+-- PR ada/43106
+-- Testcase by Bill Neven <neven@hitt.nl>
+
+-- { dg-do run }
+-- { dg-options "-O" }
+
+with Case_Optimization_Pkg2; use Case_Optimization_Pkg2;
+
+procedure Case_Optimization2 is
+   Radar : Radar_T;
+begin
+   Radar.Sensor_Type := radcmb;
+   Initialize (Radar);
+end;
diff --git a/gcc/testsuite/gnat.dg/case_optimization_pkg2.adb b/gcc/testsuite/gnat.dg/case_optimization_pkg2.adb
new file mode 100644 (file)
index 0000000..57f9224
--- /dev/null
@@ -0,0 +1,23 @@
+package body Case_Optimization_Pkg2 is
+
+  procedure Initialize (Radar : in Radar_T) is
+    Antenna1 : Antenna_Type_T;
+    Antenna2 : Antenna_Type_T;
+  begin
+    case Radar.Sensor_Type is
+      when radpr | radssr =>
+        Antenna1 := Radar.Sensor_Type;
+        Antenna2 := Radar.Sensor_Type;
+      when radcmb =>
+        Antenna1 := radpr;
+        Antenna2 := radssr;
+      when others =>
+        Antenna1 := radpr;
+        Antenna2 := radssr;
+    end case;
+    if Antenna1 /= radpr or Antenna2 /= radssr then
+      raise Program_Error;
+    end if;
+  end Initialize;
+
+end Case_Optimization_Pkg2;
diff --git a/gcc/testsuite/gnat.dg/case_optimization_pkg2.ads b/gcc/testsuite/gnat.dg/case_optimization_pkg2.ads
new file mode 100644 (file)
index 0000000..c41a05c
--- /dev/null
@@ -0,0 +1,23 @@
+package Case_Optimization_Pkg2 is
+
+   type Unsigned_64 is mod 2 ** 64;
+
+   type Associated_Report_T is (miss, radpr, radssr, radcmb);
+
+   -- sensor type : primary, secondary, co-rotating (combined)
+   subtype Sensor_Type_T is Associated_Report_T; -- range radpr .. radcmb;
+   subtype Antenna_Type_T is Sensor_Type_T range radpr .. radssr;
+
+   type Filtering_Level_T is (none, pr_in_clutter, ssr_plots, pr_plots);
+   type Filtering_Levels_T is array (Filtering_Level_T) of boolean;
+
+   type Radar_T is record
+      External_Sensor_ID : Unsigned_64;
+      Dual_Radar_Index : Integer;
+      Compatible_Filtering_Levels : Filtering_Levels_T;
+      Sensor_Type : Sensor_Type_T;
+   end record;
+
+   procedure Initialize (Radar : in Radar_T);
+
+end Case_Optimization_Pkg2;