Commit 0d3c8800 by Richard Kenner Committed by Richard Kenner

stor-layout.c (layout_type, [...]): Add missing code to handle "superflat arrays" in Ada.

	* stor-layout.c (layout_type, case ARRAY_TYPE): Add missing code to
	handle "superflat arrays" in Ada.

From-SVN: r65595
parent 2443af37
2003-04-14 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> 2003-04-14 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* stor-layout.c (layout_type, case ARRAY_TYPE): Add missing code to
handle "superflat arrays" in Ada.
* integrate.c (expand_inline_function): Don't inline if would * integrate.c (expand_inline_function): Don't inline if would
lose /u on a BLKmode TARGET. lose /u on a BLKmode TARGET.
......
...@@ -1740,6 +1740,15 @@ layout_type (type) ...@@ -1740,6 +1740,15 @@ layout_type (type)
element_size = integer_one_node; element_size = integer_one_node;
} }
/* If neither bound is a constant and sizetype is signed, make
sure the size is never negative. We should really do this
if *either* bound is non-constant, but this is the best
compromise between C and Ada. */
if (! TREE_UNSIGNED (sizetype)
&& TREE_CODE (TYPE_MIN_VALUE (index)) != INTEGER_CST
&& TREE_CODE (TYPE_MAX_VALUE (index)) != INTEGER_CST)
length = size_binop (MAX_EXPR, length, size_zero_node);
TYPE_SIZE (type) = size_binop (MULT_EXPR, element_size, TYPE_SIZE (type) = size_binop (MULT_EXPR, element_size,
convert (bitsizetype, length)); convert (bitsizetype, length));
......
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