+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
= ((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
/* 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);
}
#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