winnt.c (i386_pe_encode_section_info): Remove obsolete kludge.
authorEric Botcazou <ebotcazou@adacore.com>
Mon, 1 Jun 2015 08:22:14 +0000 (08:22 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Mon, 1 Jun 2015 08:22:14 +0000 (08:22 +0000)
* config/i386/winnt.c (i386_pe_encode_section_info) <FUNCTION_DECL>:
Remove obsolete kludge.
ada/
* gcc-interface/utils.c (create_var_decl_1): If an assembler name is
specified, let the target mangle it before settting.
(create_subprog_decl): Likewise and move this treatment last.

From-SVN: r223918

gcc/ChangeLog
gcc/ada/ChangeLog
gcc/ada/gcc-interface/utils.c
gcc/config/i386/winnt.c

index 22af4a9a59e00fdf4c492cf5be0aca40e04dcb22..5d695b59d0f935f17822096e4baf44dd13871954 100644 (file)
@@ -1,3 +1,8 @@
+2015-06-01  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * config/i386/winnt.c (i386_pe_encode_section_info) <FUNCTION_DECL>:
+       Remove obsolete kludge.
+
 2015-06-01  Richard Biener  <rguenther@suse.de>
 
        * tree-ssa-reassoc.c (get_rank): Simplify.
index 357f0010bc9b9c4c47795bbde3fa1ae4d07c1227..a61837284a4e01ccc749f787ec0e27e66dcf5d81 100644 (file)
@@ -1,3 +1,9 @@
+2015-06-01  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/utils.c (create_var_decl_1): If an assembler name is
+       specified, let the target mangle it before settting.
+       (create_subprog_decl): Likewise and move this treatment last.
+
 2015-06-01  Eric Botcazou  <ebotcazou@adacore.com>
 
        * gcc-interface/lang-specs.h (TARGET_VXWORKS_RTP): Move substitution to
index 31bb3d254ed914937e583988d44867f2fb9a917e..7ec0974f912c998dc0f62a4fd64be43482f80a99 100644 (file)
@@ -2428,7 +2428,13 @@ create_var_decl_1 (tree var_name, tree asm_name, tree type, tree var_init,
   if (TREE_CODE (var_decl) == VAR_DECL)
     {
       if (asm_name)
-       SET_DECL_ASSEMBLER_NAME (var_decl, asm_name);
+       {
+         /* Let the target mangle the name if this isn't a verbatim asm.  */
+         if (*IDENTIFIER_POINTER (asm_name) != '*')
+           asm_name = targetm.mangle_decl_assembler_name (var_decl, asm_name);
+
+         SET_DECL_ASSEMBLER_NAME (var_decl, asm_name);
+       }
 
       if (global_bindings_p ())
        rest_of_decl_compilation (var_decl, true, 0);
@@ -3047,8 +3053,17 @@ create_subprog_decl (tree subprog_name, tree asm_name, tree subprog_type,
   DECL_BY_REFERENCE (result_decl) = TREE_ADDRESSABLE (subprog_type);
   DECL_RESULT (subprog_decl) = result_decl;
 
+  process_attributes (&subprog_decl, &attr_list, true, gnat_node);
+
+  /* Add this decl to the current binding level.  */
+  gnat_pushdecl (subprog_decl, gnat_node);
+
   if (asm_name)
     {
+      /* Let the target mangle the name if this isn't a verbatim asm.  */
+      if (*IDENTIFIER_POINTER (asm_name) != '*')
+       asm_name = targetm.mangle_decl_assembler_name (subprog_decl, asm_name);
+
       SET_DECL_ASSEMBLER_NAME (subprog_decl, asm_name);
 
       /* The expand_main_function circuitry expects "main_identifier_node" to
@@ -3061,11 +3076,6 @@ create_subprog_decl (tree subprog_name, tree asm_name, tree subprog_type,
        DECL_NAME (subprog_decl) = main_identifier_node;
     }
 
-  process_attributes (&subprog_decl, &attr_list, true, gnat_node);
-
-  /* Add this decl to the current binding level.  */
-  gnat_pushdecl (subprog_decl, gnat_node);
-
   /* Output the assembler code and/or RTL for the declaration.  */
   rest_of_decl_compilation (subprog_decl, global_bindings_p (), 0);
 
index da67f5fe5eaf9c90fa72e2c296bf37160a8c5f66..4e07f03c47000b71a83ac5ae6f424d965216587a 100644 (file)
@@ -339,20 +339,6 @@ i386_pe_encode_section_info (tree decl, rtx rtl, int first)
   switch (TREE_CODE (decl))
     {
     case FUNCTION_DECL:
-      /* FIXME:  Imported stdcall names are not modified by the Ada frontend.
-        Check and decorate the RTL name now.  */
-      if  (strcmp (lang_hooks.name, "GNU Ada") == 0)
-       {
-         tree new_id;
-         tree old_id = DECL_ASSEMBLER_NAME (decl);
-         const char* asm_str = IDENTIFIER_POINTER (old_id);
-         /* Do not change the identifier if a verbatim asmspec
-            or if stdcall suffix already added. */
-         if (!(*asm_str == '*' || strchr (asm_str, '@'))
-             && (new_id = i386_pe_maybe_mangle_decl_assembler_name (decl,
-                                                                    old_id)))
-           XSTR (symbol, 0) = IDENTIFIER_POINTER (new_id);
-       }
       break;
 
     case VAR_DECL: