OSDN Git Service

ada/
authorhainque <hainque@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 11 Mar 2009 14:20:07 +0000 (14:20 +0000)
committerhainque <hainque@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 11 Mar 2009 14:20:07 +0000 (14:20 +0000)
* 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.

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

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

index 069a96c..a5739f4 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 4f4f8a1..0384d37 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 711eba2..d76bc03 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;
+