Commit cce30ea8 by Eric Botcazou Committed by Eric Botcazou

utils2.c (gnat_build_constructor): Test the TREE_STATIC flag of elements to…

utils2.c (gnat_build_constructor): Test the TREE_STATIC flag of elements to compute that of the constructor.

	* gcc-interface/utils2.c (gnat_build_constructor): Test the TREE_STATIC
	flag of elements to compute that of the constructor.

From-SVN: r182203
parent 4f96985d
2011-12-11 Eric Botcazou <ebotcazou@adacore.com> 2011-12-11 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/utils2.c (gnat_build_constructor): Test the TREE_STATIC
flag of elements to compute that of the constructor.
2011-12-11 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/decl.c (gnat_to_gnu_param): Set the restrict qualifier * gcc-interface/decl.c (gnat_to_gnu_param): Set the restrict qualifier
on references built for parameters which aren't specifically by-ref. on references built for parameters which aren't specifically by-ref.
......
...@@ -1817,7 +1817,7 @@ gnat_build_constructor (tree type, VEC(constructor_elt,gc) *v) ...@@ -1817,7 +1817,7 @@ gnat_build_constructor (tree type, VEC(constructor_elt,gc) *v)
FOR_EACH_CONSTRUCTOR_ELT (v, n_elmts, obj, val) FOR_EACH_CONSTRUCTOR_ELT (v, n_elmts, obj, val)
{ {
/* The predicate must be in keeping with output_constructor. */ /* The predicate must be in keeping with output_constructor. */
if (!TREE_CONSTANT (val) if ((!TREE_CONSTANT (val) && !TREE_STATIC (val))
|| (TREE_CODE (type) == RECORD_TYPE || (TREE_CODE (type) == RECORD_TYPE
&& CONSTRUCTOR_BITFIELD_P (obj) && CONSTRUCTOR_BITFIELD_P (obj)
&& !initializer_constant_valid_for_bitfield_p (val)) && !initializer_constant_valid_for_bitfield_p (val))
......
2011-12-11 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/specs/elab3.ads: New test.
2011-12-10 Richard Henderson <rth@redhat.com> 2011-12-10 Richard Henderson <rth@redhat.com>
* gcc.target/powerpc/altivec-perm-1.c: New. * gcc.target/powerpc/altivec-perm-1.c: New.
......
-- { dg-do compile }
pragma Restrictions(No_Elaboration_Code);
package Elab3 is
type T_List is array (Positive range <>) of Integer;
type T_List_Access is access constant T_List;
type R is record
A : T_List_Access;
end record;
C : constant R := (A => null);
end Elab3;
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