2009-10-17 Eric Botcazou <ebotcazou@adacore.com>
+ * gcc-interface/utils2.c (build_binary_op) <ARRAY_RANGE_REF>: Mak
+ sure the element type is consistent.
+
+2009-10-17 Eric Botcazou <ebotcazou@adacore.com>
+
* gcc-interface/trans.c (addressable_p): Handle bitwise operations.
2009-10-16 Eric Botcazou <ebotcazou@adacore.com>
left_type = TREE_TYPE (left_operand);
}
+ /* For a range, make sure the element type is consistent. */
+ if (op_code == ARRAY_RANGE_REF
+ && TREE_TYPE (operation_type) != TREE_TYPE (left_type))
+ operation_type = build_array_type (TREE_TYPE (left_type),
+ TYPE_DOMAIN (operation_type));
+
/* Then convert the right operand to its base type. This will prevent
unneeded sign conversions when sizetype is wider than integer. */
right_operand = convert (right_base_type, right_operand);
2009-10-17 Eric Botcazou <ebotcazou@adacore.com>
+ * gnat.dg/slice8.adb: New test.
+ * gnat.dg/slice8_pkg1.ads: New helper.
+ * gnat.dg/slice8_pkg2.ads: Likewise.
+ * gnat.dg/slice8_pkg3.ad[sb]: Likewise.
+
+2009-10-17 Eric Botcazou <ebotcazou@adacore.com>
+
* gnat.dg/unchecked_convert4.adb: New test.
2009-10-15 Jason Merrill <jason@redhat.com>
--- /dev/null
+-- { dg-do compile }
+-- { dg-options "-gnatws" }
+
+with Slice8_Pkg1;
+with Slice8_Pkg3;
+
+procedure Slice8 is
+
+ package Bp is new Slice8_Pkg3 (Slice8_Pkg1);
+
+begin
+ null;
+end;
--- /dev/null
+with Slice8_Pkg2;
+
+package Slice8_Pkg1 is new Slice8_Pkg2 (Line_Length => 132, Max_Lines => 1000);
--- /dev/null
+generic
+
+ Line_Length : Natural;
+ Max_Lines : Natural;
+
+package Slice8_Pkg2 is
+
+ Subtype Index is Natural Range 0..Line_length;
+ Subtype Line_Count is Natural Range 0..Max_Lines;
+
+ Type Line (Size : Index := 0) is
+ Record
+ Data : String (1..Size);
+ End Record;
+
+ Type Lines is Array (Line_Count Range <>) of Line;
+
+ Type Paragraph (Size : Line_Count) is
+ Record
+ Data : Lines (1..Size);
+ End Record;
+
+end Slice8_Pkg2;
--- /dev/null
+-- { dg-do compile }
+-- { dg-options "-gnatws" }
+
+package body Slice8_Pkg3 is
+
+ Current : Str.Lines (Str.Line_Count);
+ Last : Natural := 0;
+
+ function Get return Str.Paragraph is
+ Result : constant Str.Paragraph := (Size => Last,
+ Data => Current (1..Last));
+ begin
+ Last := 0;
+ return Result;
+ end Get;
+
+end Slice8_Pkg3;
--- /dev/null
+with Slice8_Pkg2;
+
+generic
+
+ with package Str is new Slice8_Pkg2 (<>);
+
+package Slice8_Pkg3 is
+
+ function Get return Str.Paragraph;
+
+end Slice8_Pkg3;