ipa.c (cgraph_build_static_cdtor_1): Add OPTIMIZATION and TARGET parameters.
authorJan Hubicka <hubicka@ucw.cz>
Sat, 15 Dec 2018 10:31:37 +0000 (11:31 +0100)
committerJan Hubicka <hubicka@gcc.gnu.org>
Sat, 15 Dec 2018 10:31:37 +0000 (10:31 +0000)
* ipa.c (cgraph_build_static_cdtor_1): Add OPTIMIZATION and TARGET
parameters.
(cgraph_build_static_cdtor): Update.
(build_cdtor): Use OPTIMIZATION and TARGET of the first real cdtor
callsed.

From-SVN: r267168

gcc/ChangeLog
gcc/ipa.c

index 8e3fb57dbd4b98e134f1ab14d8c89b4bf6b1ecf9..fe75781ecb9038132e354d5d42eacfd23579094e 100644 (file)
@@ -1,3 +1,11 @@
+2018-12-15  Jan Hubicka  <hubicka@ucw.cz>
+
+       * ipa.c (cgraph_build_static_cdtor_1): Add OPTIMIZATION and TARGET
+       parameters.
+       (cgraph_build_static_cdtor): Update.
+       (build_cdtor): Use OPTIMIZATION and TARGET of the first real cdtor
+       callsed.
+
 2018-12-15  Alan Modra  <amodra@gmail.com>
 
        * config/rs6000/rs6000.c (generate_set_vrsave, rs6000_emit_savres_rtx),
index 89fb1da50fd42fd0e3e926c530ec699822efbaa1..591634649bf957bf32185a7516693da495146d6a 100644 (file)
--- a/gcc/ipa.c
+++ b/gcc/ipa.c
@@ -831,7 +831,9 @@ ipa_discover_variable_flags (void)
    be produced. */
 
 static void
-cgraph_build_static_cdtor_1 (char which, tree body, int priority, bool final)
+cgraph_build_static_cdtor_1 (char which, tree body, int priority, bool final,
+                            tree optimization,
+                            tree target)
 {
   static int counter = 0;
   char which_buf[16];
@@ -862,6 +864,8 @@ cgraph_build_static_cdtor_1 (char which, tree body, int priority, bool final)
 
   TREE_STATIC (decl) = 1;
   TREE_USED (decl) = 1;
+  DECL_FUNCTION_SPECIFIC_OPTIMIZATION (decl) = optimization;
+  DECL_FUNCTION_SPECIFIC_TARGET (decl) = target;
   DECL_ARTIFICIAL (decl) = 1;
   DECL_IGNORED_P (decl) = 1;
   DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT (decl) = 1;
@@ -911,7 +915,7 @@ cgraph_build_static_cdtor_1 (char which, tree body, int priority, bool final)
 void
 cgraph_build_static_cdtor (char which, tree body, int priority)
 {
-  cgraph_build_static_cdtor_1 (which, body, priority, false);
+  cgraph_build_static_cdtor_1 (which, body, priority, false, NULL, NULL);
 }
 
 /* When target does not have ctors and dtors, we call all constructor
@@ -993,7 +997,9 @@ build_cdtor (bool ctor_p, const vec<tree> &cdtors)
       gcc_assert (body != NULL_TREE);
       /* Generate a function to call all the function of like
         priority.  */
-      cgraph_build_static_cdtor_1 (ctor_p ? 'I' : 'D', body, priority, true);
+      cgraph_build_static_cdtor_1 (ctor_p ? 'I' : 'D', body, priority, true,
+                                  DECL_FUNCTION_SPECIFIC_OPTIMIZATION (cdtors[0]),
+                                  DECL_FUNCTION_SPECIFIC_TARGET (cdtors[0]));
     }
 }