trans.c (gnat_to_gnu): In range check processing...
authorOlivier Hainque <hainque@adacore.com>
Wed, 11 Mar 2009 14:20:07 +0000 (14:20 +0000)
committerOlivier Hainque <hainque@gcc.gnu.org>
Wed, 11 Mar 2009 14:20:07 +0000 (14:20 +0000)
ada/
* gcc-interface/trans.c (gnat_to_gnu) <case N_Slice>: In range
check processing, remove unintended TREE_TYPE walk on index type
to get to base type.

testsuite/
* gnat.dg/slice_enum.adb: New test.

From-SVN: r144774

gcc/ChangeLog
gcc/ada/gcc-interface/trans.c
gcc/testsuite/ChangeLog
gcc/testsuite/gnat.dg/slice_enum.adb [new file with mode: 0644]

index 069a96cae7d658aa86bb5c997d76a7744e7d0df6..a5739f450fea7f81567853bb9201f260dd85e146 100644 (file)
@@ -1,3 +1,8 @@
+2009-03-11  Olivier Hainque  <hainque@adacore.com>
+
+       * gcc-interface/trans.c (gnat_to_gnu) <case N_Slice>: In range
+       checks processing, remove unintended TREE_TYPE walk on index type.
+
 2009-03-11  Jason Merrill  <jason@redhat.com>
 
        PR debug/39086
index 4f4f8a1a1542c79ca5cea7403e5f5aaf157a6ea6..0384d370da258857c93dbb71517d05287fa41dc2 100644 (file)
@@ -3594,7 +3594,7 @@ gnat_to_gnu (Node_Id gnat_node)
           gnu_max_expr = protect_multiple_eval (gnu_max_expr);
 
            /* Derive a good type to convert everything to.  */
-           gnu_expr_type = get_base_type (TREE_TYPE (gnu_index_type));
+           gnu_expr_type = get_base_type (gnu_index_type);
 
            /* Test whether the minimum slice value is too small.  */
            gnu_expr_l = build_binary_op (LT_EXPR, integer_type_node,
index 711eba2883c7e60590f52cd35aa15941fae4f209..d76bc03855c8ca37864987207afad9f8ec295bed 100644 (file)
@@ -1,3 +1,7 @@
+2009-03-11  Olivier Hainque  <hainque@adacore.com>
+
+       * gnat.dg/slice_enum.adb: New test.
+
 2009-03-11  Jason Merrill  <jason@redhat.com>
 
        PR debug/39086
diff --git a/gcc/testsuite/gnat.dg/slice_enum.adb b/gcc/testsuite/gnat.dg/slice_enum.adb
new file mode 100644 (file)
index 0000000..cdaea47
--- /dev/null
@@ -0,0 +1,8 @@
+--  { dg-do compile }
+
+procedure Slice_Enum is
+   Pos : array (Boolean) of Integer;
+begin
+   Pos (Boolean) := (others => 0);
+end;
+