Commit 8b7b0c36 by Jan Hubicka Committed by Jan Hubicka

re PR ada/42068 (ICE in function_and_variable_visibility)

	PR middle-end/42068
	(create_var_decl_1): Do not set COMMON flag for unit local variables.

From-SVN: r156010
parent 413ebfc3
2010-01-18 Jan Hubicka <jh@suse.cz>
PR middle-end/42068
(create_var_decl_1): Do not set COMMON flag for unit local variables.
2010-01-17 Laurent GUERBY <laurent@guerby.net> 2010-01-17 Laurent GUERBY <laurent@guerby.net>
* gcc-interface/Makefile.in: Fix typo in arm*-*-linux-gnueabi. * gcc-interface/Makefile.in: Fix typo in arm*-*-linux-gnueabi.
......
...@@ -1387,6 +1387,13 @@ create_var_decl_1 (tree var_name, tree asm_name, tree type, tree var_init, ...@@ -1387,6 +1387,13 @@ create_var_decl_1 (tree var_name, tree asm_name, tree type, tree var_init,
that is, not violating a No_Elaboration_Code restriction. */ that is, not violating a No_Elaboration_Code restriction. */
if (global_bindings_p () && var_init != 0 && ! init_const) if (global_bindings_p () && var_init != 0 && ! init_const)
Check_Elaboration_Code_Allowed (gnat_node); Check_Elaboration_Code_Allowed (gnat_node);
DECL_INITIAL (var_decl) = var_init;
TREE_READONLY (var_decl) = const_flag;
DECL_EXTERNAL (var_decl) = extern_flag;
TREE_PUBLIC (var_decl) = public_flag || extern_flag;
TREE_CONSTANT (var_decl) = constant_p;
TREE_THIS_VOLATILE (var_decl) = TREE_SIDE_EFFECTS (var_decl)
= TYPE_VOLATILE (type);
/* Ada doesn't feature Fortran-like COMMON variables so we shouldn't /* Ada doesn't feature Fortran-like COMMON variables so we shouldn't
try to fiddle with DECL_COMMON. However, on platforms that don't try to fiddle with DECL_COMMON. However, on platforms that don't
...@@ -1394,15 +1401,9 @@ create_var_decl_1 (tree var_name, tree asm_name, tree type, tree var_init, ...@@ -1394,15 +1401,9 @@ create_var_decl_1 (tree var_name, tree asm_name, tree type, tree var_init,
go in DATA instead, thus increasing the size of the executable. */ go in DATA instead, thus increasing the size of the executable. */
if (!flag_no_common if (!flag_no_common
&& TREE_CODE (var_decl) == VAR_DECL && TREE_CODE (var_decl) == VAR_DECL
&& TREE_PUBLIC (var_decl)
&& !have_global_bss_p ()) && !have_global_bss_p ())
DECL_COMMON (var_decl) = 1; DECL_COMMON (var_decl) = 1;
DECL_INITIAL (var_decl) = var_init;
TREE_READONLY (var_decl) = const_flag;
DECL_EXTERNAL (var_decl) = extern_flag;
TREE_PUBLIC (var_decl) = public_flag || extern_flag;
TREE_CONSTANT (var_decl) = constant_p;
TREE_THIS_VOLATILE (var_decl) = TREE_SIDE_EFFECTS (var_decl)
= TYPE_VOLATILE (type);
/* If it's public and not external, always allocate storage for it. /* If it's public and not external, always allocate storage for it.
At the global binding level we need to allocate static storage for the At the global binding level we need to allocate static storage for the
......
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