Commit d358fb9d by Michael Meissner Committed by Michael Meissner

re PR target/57756 (Function target attribute is retaining state of previously seen function)

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
parent c71aed47
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> 2013-10-16 DJ Delorie <dj@redhat.com>
* config/rl78/rl78.c (rl78_alloc_address_registers_macax): Verify * config/rl78/rl78.c (rl78_alloc_address_registers_macax): Verify
......
...@@ -2796,6 +2796,10 @@ rs6000_option_override_internal (bool global_init_p) ...@@ -2796,6 +2796,10 @@ rs6000_option_override_internal (bool global_init_p)
= ((global_init_p || target_option_default_node == NULL) = ((global_init_p || target_option_default_node == NULL)
? NULL : TREE_TARGET_OPTION (target_option_default_node)); ? 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 /* On 64-bit Darwin, power alignment is ABI-incompatible with some C
library functions, so warn about it. The flag may be useful for library functions, so warn about it. The flag may be useful for
performance studies from time to time though, so don't disable it performance studies from time to time though, so don't disable it
...@@ -29995,19 +29999,22 @@ rs6000_set_current_function (tree fndecl) ...@@ -29995,19 +29999,22 @@ rs6000_set_current_function (tree fndecl)
/* Save the current options */ /* Save the current options */
static void 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 = opts->x_rs6000_isa_flags;
ptr->x_rs6000_isa_flags_explicit = rs6000_isa_flags_explicit; ptr->x_rs6000_isa_flags_explicit = opts->x_rs6000_isa_flags_explicit;
} }
/* Restore the current options */ /* Restore the current options */
static void 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; opts->x_rs6000_isa_flags = ptr->x_rs6000_isa_flags;
rs6000_isa_flags_explicit = ptr->x_rs6000_isa_flags_explicit; opts->x_rs6000_isa_flags_explicit = ptr->x_rs6000_isa_flags_explicit;
(void) rs6000_option_override_internal (false); (void) rs6000_option_override_internal (false);
} }
......
...@@ -593,9 +593,6 @@ extern int rs6000_vector_align[]; ...@@ -593,9 +593,6 @@ extern int rs6000_vector_align[];
#define MASK_PROTOTYPE OPTION_MASK_PROTOTYPE #define MASK_PROTOTYPE OPTION_MASK_PROTOTYPE
#endif #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 /* 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 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 of #pragma GCC target or the target attribute to change the code level for a
......
...@@ -30,6 +30,9 @@ TargetSave ...@@ -30,6 +30,9 @@ TargetSave
HOST_WIDE_INT x_rs6000_isa_flags HOST_WIDE_INT x_rs6000_isa_flags
;; Miscellaneous flag bits that were set explicitly by the user ;; Miscellaneous flag bits that were set explicitly by the user
Variable
HOST_WIDE_INT rs6000_isa_flags_explicit
TargetSave TargetSave
HOST_WIDE_INT x_rs6000_isa_flags_explicit HOST_WIDE_INT x_rs6000_isa_flags_explicit
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment