Commit 3f273c8a by Eric Botcazou Committed by Eric Botcazou

utils2.c (build_binary_op): Make sure the element type is consistent.

	* gcc-interface/utils2.c (build_binary_op) <ARRAY_RANGE_REF>: Make
	sure the element type is consistent.

From-SVN: r152934
parent 7fc6a96b
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>
......
......@@ -755,6 +755,12 @@ build_binary_op (enum tree_code op_code, tree result_type,
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>
......
-- { 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;
with Slice8_Pkg2;
package Slice8_Pkg1 is new Slice8_Pkg2 (Line_Length => 132, Max_Lines => 1000);
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;
-- { 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;
with Slice8_Pkg2;
generic
with package Str is new Slice8_Pkg2 (<>);
package Slice8_Pkg3 is
function Get return Str.Paragraph;
end Slice8_Pkg3;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment