aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2013-03-06 17:49:33 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2013-03-06 17:49:33 +0000
commit6f71e355ebcc5e6e3474369ea5dd361d3ee5875d (patch)
tree0f2a9d82dd42be855058f014eabbfb2d6e52dc8c /gcc
parentb6ea6dbdc0482fe3a27f4c02e045945c6f02559f (diff)
downloadgcc-6f71e355ebcc5e6e3474369ea5dd361d3ee5875d.zip
gcc-6f71e355ebcc5e6e3474369ea5dd361d3ee5875d.tar.gz
gcc-6f71e355ebcc5e6e3474369ea5dd361d3ee5875d.tar.bz2
trans.c (Raise_Error_to_gnu): Record the unpadded type of the index type on the RCI stack.
* gcc-interface/trans.c (Raise_Error_to_gnu) <CE_Index_Check_Failed>: Record the unpadded type of the index type on the RCI stack. From-SVN: r196504
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog5
-rw-r--r--gcc/ada/gcc-interface/trans.c2
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gnat.dg/loop_optimization15.adb20
-rw-r--r--gcc/testsuite/gnat.dg/loop_optimization15.ads9
5 files changed, 39 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index fc34359..9c6df96 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,8 @@
+2013-06-03 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/trans.c (Raise_Error_to_gnu) <CE_Index_Check_Failed>:
+ Record the unpadded type of the index type on the RCI stack.
+
2013-03-06 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/trans.c (emit_range_check): Assert that the range type
diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c
index 69904bc..8cdc632 100644
--- a/gcc/ada/gcc-interface/trans.c
+++ b/gcc/ada/gcc-interface/trans.c
@@ -4944,7 +4944,7 @@ Raise_Error_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p)
{
rci->low_bound = gnu_low_bound;
rci->high_bound = gnu_high_bound;
- rci->type = gnat_to_gnu_type (gnat_type);
+ rci->type = get_unpadded_type (gnat_type);
rci->invariant_cond = build1 (SAVE_EXPR, boolean_type_node,
boolean_true_node);
gnu_cond = build_binary_op (TRUTH_ANDIF_EXPR,
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index df583d6..393e5a4 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2013-06-03 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/loop_optimization15.ad[sb]: New test.
+
2013-03-06 Jakub Jelinek <jakub@redhat.com>
PR middle-end/56548
diff --git a/gcc/testsuite/gnat.dg/loop_optimization15.adb b/gcc/testsuite/gnat.dg/loop_optimization15.adb
new file mode 100644
index 0000000..ff53575
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/loop_optimization15.adb
@@ -0,0 +1,20 @@
+-- { dg-do compile }
+-- { dg-options "-O3" }
+
+package body Loop_Optimization15 is
+
+ type Integer_Array_T is array (B16_T range <>) of Integer;
+
+ Len : constant B16_T := 10;
+
+ Src : constant Integer_Array_T (1 .. Len) := (others => 0);
+ Dst : Integer_Array_T (1 .. Len);
+
+ procedure Proc (L : B16_T) is
+ begin
+ for I in 1 .. B16_T'Min (L, Len) loop
+ Dst (I) := Src (I);
+ end loop;
+ end;
+
+end Loop_Optimization15;
diff --git a/gcc/testsuite/gnat.dg/loop_optimization15.ads b/gcc/testsuite/gnat.dg/loop_optimization15.ads
new file mode 100644
index 0000000..d7d04e4
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/loop_optimization15.ads
@@ -0,0 +1,9 @@
+package Loop_Optimization15 is
+
+ type B16_T is mod 2 ** 16;
+ for B16_T'Size use 16;
+ for B16_T'Alignment use 1;
+
+ procedure Proc (L : B16_T);
+
+end Loop_Optimization15;