diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2010-03-19 07:18:47 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2010-03-19 07:18:47 +0000 |
commit | 72c53a837c70288ab4e06a5cae11c63276ebe157 (patch) | |
tree | a08f34bfaecaef021561c721c8ff6a7790da892e /gcc | |
parent | 9fd52c6c0f62cff3b65d6a196d09fcf6e787f685 (diff) | |
download | gcc-72c53a837c70288ab4e06a5cae11c63276ebe157.zip gcc-72c53a837c70288ab4e06a5cae11c63276ebe157.tar.gz gcc-72c53a837c70288ab4e06a5cae11c63276ebe157.tar.bz2 |
re PR ada/43106 (optimization error in a case statement)
PR ada/43106
* gnat.dg/case_optimization2.adb: New test.
* gnat.dg/case_optimization_pkg2.ad[sb]: New helper.
From-SVN: r157558
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/case_optimization2.adb | 14 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/case_optimization_pkg2.adb | 23 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/case_optimization_pkg2.ads | 23 |
4 files changed, 66 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ef33f4c..482b385 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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 index 0000000..f548a84 --- /dev/null +++ b/gcc/testsuite/gnat.dg/case_optimization2.adb @@ -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 index 0000000..57f9224 --- /dev/null +++ b/gcc/testsuite/gnat.dg/case_optimization_pkg2.adb @@ -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 index 0000000..c41a05c --- /dev/null +++ b/gcc/testsuite/gnat.dg/case_optimization_pkg2.ads @@ -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; |