]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/57756 (Function target attribute is retaining state of previously seen...
authorMichael Meissner <meissner@linux.vnet.ibm.com>
Wed, 16 Oct 2013 23:06:36 +0000 (23:06 +0000)
committerMichael Meissner <meissner@gcc.gnu.org>
Wed, 16 Oct 2013 23:06:36 +0000 (23:06 +0000)
2013-10-16  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/57756
* config/rs6000/rs6000.opt (rs6000_isa_flags_explicit): Move the
explicit isa flag to be an options variable, instead of using
global_options_set.  Remove define from rs6000.h.
* config/rs6000/rs6000.h (rs6000_isa_flags_explicit): Likewise.

* config/rs6000/rs6000.c (rs6000_option_override_internal):
Initialize rs6000_isa_flags_explicit.
(rs6000_function_specific_save): Add gcc_options* parameter, so
that the powerpc builds after the 2013-10-15 changes.
(rs6000_function_specific_restore): Likewise.

From-SVN: r203734

gcc/ChangeLog
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.h
gcc/config/rs6000/rs6000.opt

index 83541b2ce8026d5e4030881b5af3b7462722b475..de8bf8891a9827802ca8526a41b3cbf506c32915 100644 (file)
@@ -1,3 +1,17 @@
+2013-10-16  Michael Meissner  <meissner@linux.vnet.ibm.com>
+
+       PR target/57756
+       * config/rs6000/rs6000.opt (rs6000_isa_flags_explicit): Move the
+       explicit isa flag to be an options variable, instead of using
+       global_options_set.  Remove define from rs6000.h.
+       * config/rs6000/rs6000.h (rs6000_isa_flags_explicit): Likewise.
+
+       * config/rs6000/rs6000.c (rs6000_option_override_internal):
+       Initialize rs6000_isa_flags_explicit.
+       (rs6000_function_specific_save): Add gcc_options* parameter, so
+       that the powerpc builds after the 2013-10-15 changes.
+       (rs6000_function_specific_restore): Likewise.
+
 2013-10-16  DJ Delorie  <dj@redhat.com>
 
        * config/rl78/rl78.c (rl78_alloc_address_registers_macax): Verify
index 1523816fe63cbb728fe456faf70e690ead789166..63f68c47bd53bd7358440da4d3023792eb9d1ca5 100644 (file)
@@ -2796,6 +2796,10 @@ rs6000_option_override_internal (bool global_init_p)
     = ((global_init_p || target_option_default_node == NULL)
        ? NULL : TREE_TARGET_OPTION (target_option_default_node));
 
+  /* Remember the explicit arguments.  */
+  if (global_init_p)
+    rs6000_isa_flags_explicit = global_options_set.x_rs6000_isa_flags;
+
   /* On 64-bit Darwin, power alignment is ABI-incompatible with some C
      library functions, so warn about it. The flag may be useful for
      performance studies from time to time though, so don't disable it
@@ -29995,19 +29999,22 @@ rs6000_set_current_function (tree fndecl)
 /* Save the current options */
 
 static void
-rs6000_function_specific_save (struct cl_target_option *ptr)
+rs6000_function_specific_save (struct cl_target_option *ptr,
+                              struct gcc_options *opts)
 {
-  ptr->x_rs6000_isa_flags = rs6000_isa_flags;
-  ptr->x_rs6000_isa_flags_explicit = rs6000_isa_flags_explicit;
+  ptr->x_rs6000_isa_flags = opts->x_rs6000_isa_flags;
+  ptr->x_rs6000_isa_flags_explicit = opts->x_rs6000_isa_flags_explicit;
 }
 
 /* Restore the current options */
 
 static void
-rs6000_function_specific_restore (struct cl_target_option *ptr)
+rs6000_function_specific_restore (struct gcc_options *opts,
+                                 struct cl_target_option *ptr)
+                                 
 {
-  rs6000_isa_flags = ptr->x_rs6000_isa_flags;
-  rs6000_isa_flags_explicit = ptr->x_rs6000_isa_flags_explicit;
+  opts->x_rs6000_isa_flags = ptr->x_rs6000_isa_flags;
+  opts->x_rs6000_isa_flags_explicit = ptr->x_rs6000_isa_flags_explicit;
   (void) rs6000_option_override_internal (false);
 }
 
index c4d57d863afe320c386bb89401a189bff92812e5..745437edb814700eff35352ad4ac8c7eac47d9a9 100644 (file)
@@ -593,9 +593,6 @@ extern int rs6000_vector_align[];
 #define MASK_PROTOTYPE                 OPTION_MASK_PROTOTYPE
 #endif
 
-/* Explicit ISA options that were set.  */
-#define rs6000_isa_flags_explicit      global_options_set.x_rs6000_isa_flags
-
 /* For power systems, we want to enable Altivec and VSX builtins even if the
    user did not use -maltivec or -mvsx to allow the builtins to be used inside
    of #pragma GCC target or the target attribute to change the code level for a
index eae75f57680153cbb1cc39c542a5d44def52375d..c3f9c2d44a3447c7b0f695754f4a0ceafe4c53e7 100644 (file)
@@ -30,6 +30,9 @@ TargetSave
 HOST_WIDE_INT x_rs6000_isa_flags
 
 ;; Miscellaneous flag bits that were set explicitly by the user
+Variable
+HOST_WIDE_INT rs6000_isa_flags_explicit
+
 TargetSave
 HOST_WIDE_INT x_rs6000_isa_flags_explicit