This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[Ada] fix gnat_write_global_declarations glitch in LTO mode
- From: Eric Botcazou <ebotcazou at adacore dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Sun, 20 May 2012 11:36:09 +0200
- Subject: [Ada] fix gnat_write_global_declarations glitch in LTO mode
The routine uses an anonymous static variable and this breaks in LTO mode
because a DECL_NAME is expected.
Tested on i586-suse-linux, applied on the mainline and 4.7 branch.
2012-05-20 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/utils.c (gnat_write_global_declarations): Put a name
on the dummy global variable.
2012-05-20 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/lto13.adb: New test.
* gnat.dg/lto13_pkg.ad[sb]: New helper.
--
Eric Botcazou
Index: gcc-interface/utils.c
===================================================================
--- gcc-interface/utils.c (revision 187691)
+++ gcc-interface/utils.c (working copy)
@@ -5586,8 +5586,12 @@ gnat_write_global_declarations (void)
if (!VEC_empty (tree, types_used_by_cur_var_decl))
{
struct varpool_node *node;
+ char *label;
+
+ ASM_FORMAT_PRIVATE_NAME (label, first_global_object_name, 0);
dummy_global
- = build_decl (BUILTINS_LOCATION, VAR_DECL, NULL_TREE, void_type_node);
+ = build_decl (BUILTINS_LOCATION, VAR_DECL, get_identifier (label),
+ void_type_node);
TREE_STATIC (dummy_global) = 1;
TREE_ASM_WRITTEN (dummy_global) = 1;
node = varpool_node (dummy_global);
-- { dg-do link }
-- { dg-options "-g -flto" { target lto } }
with Lto13_Pkg; use Lto13_Pkg;
procedure Lto13 is
begin
Proc;
end;
package Lto13_Pkg is
procedure Proc;
private
type T;
end Lto13_Pkg;
package body Lto13_Pkg is
procedure Proc is
begin
raise Constraint_Error;
end;
type T is null record;
end Lto13_Pkg;