Commit fc1a63ef authored by ebotcazou's avatar ebotcazou

2014-10-27 Eric Botcazou <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Type>: Remove
	superfluous computation for the max size.
	<E_Array_Subtype>: Likewise.  Make sure that the max size calculation
	does not overflow at compile time.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_9-branch@216726 138bc75d-0d04-0410-961f-82ee72b054a4
parent efce4ba6
2014-10-27 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Type>: Remove
superfluous computation for the max size.
<E_Array_Subtype>: Likewise. Make sure that the max size calculation
does not overflow at compile time.
2014-10-13 Eric Botcazou <ebotcazou@adacore.com>
Alan Modra <amodra@gmail.com>
......
......@@ -2200,11 +2200,8 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
tree gnu_max
= convert (sizetype, TYPE_MAX_VALUE (gnu_index_type));
tree gnu_this_max
= size_binop (MAX_EXPR,
size_binop (PLUS_EXPR, size_one_node,
size_binop (MINUS_EXPR,
gnu_max, gnu_min)),
size_zero_node);
= size_binop (PLUS_EXPR, size_one_node,
size_binop (MINUS_EXPR, gnu_max, gnu_min));
if (TREE_CODE (gnu_this_max) == INTEGER_CST
&& TREE_OVERFLOW (gnu_this_max))
......@@ -2525,18 +2522,24 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
gnu_max_size = NULL_TREE;
else
{
tree gnu_this_max
= size_binop (MAX_EXPR,
size_binop (PLUS_EXPR, size_one_node,
tree gnu_this_max;
/* Use int_const_binop if the bounds are constant to
avoid any unwanted overflow. */
if (TREE_CODE (gnu_base_min) == INTEGER_CST
&& TREE_CODE (gnu_base_max) == INTEGER_CST)
gnu_this_max
= int_const_binop (PLUS_EXPR, size_one_node,
int_const_binop (MINUS_EXPR,
gnu_base_max,
gnu_base_min));
else
gnu_this_max
= size_binop (PLUS_EXPR, size_one_node,
size_binop (MINUS_EXPR,
gnu_base_max,
gnu_base_min)),
size_zero_node);
gnu_base_min));
if (TREE_CODE (gnu_this_max) == INTEGER_CST
&& TREE_OVERFLOW (gnu_this_max))
gnu_max_size = NULL_TREE;
else
gnu_max_size
= size_binop (MULT_EXPR, gnu_max_size, gnu_this_max);
}
......
2014-10-27 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/entry_queues2.adb: New test.
2014-10-25 Yury Gribov <y.gribov@samsung.com>
PR sanitizer/63638
......
-- { dg-do compile }
procedure Entry_Queues2 is
F1 : Integer := 17;
generic
type T is limited private;
procedure Check;
procedure Check is
begin
declare
type Poe is new T;
begin
declare
type Arr is array (1 .. 2) of Poe;
X : Arr;
pragma Unreferenced (X);
begin
null;
end;
end;
end;
begin
declare
protected type Poe (D3 : Integer := F1) is
entry E (D3 .. F1); -- F1 evaluated
end Poe;
protected body Poe is
entry E (for I in D3 .. F1) when True is
begin
null;
end E;
end Poe;
procedure Chk is new Check (Poe);
begin
Chk;
end;
end;
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