On Wed, Oct 16, 2013 at 02:34:56PM -0700, Sriraman Tallam wrote: > On Tue, Oct 15, 2013 at 10:54 PM, Alan Modra <amo...@gmail.com> wrote: > > On Tue, Oct 15, 2013 at 02:45:23PM -0700, Sriraman Tallam wrote: > >> I committed this patch after making the above change. > > > > /src/gcc-virgin/gcc/config/rs6000/rs6000.c: At global scope: > > /src/gcc-virgin/gcc/config/rs6000/rs6000.c:31122:29: error: invalid > > conversion from ‘void (*)(cl_target_option*)’ to ‘void > > (*)(cl_target_option*, gcc_options*)’ [-fpermissive] > > /src/gcc-virgin/gcc/config/rs6000/rs6000.c:31122:29: error: invalid > > conversion from ‘void (*)(cl_target_option*)’ to ‘void (*)(gcc_options*, > > cl_target_option*)’ [-fpermissive] > > This patch fixes it, ok to submit?
No. I have just committed a fix for this. Your patch does not replicate the rs6000_isa_flags_explicit field to be a GCC option. Presumably the intent of the 57756 patch was to remove references to the global variables. Your patch still references those variables. What I did was to move the isa explicit flag to be a target variable, so that it is preserved in the gcc_options structure like everything else. However, I wonder why you committed the original changes with changes to the powerpc backend, and DID NOT build a powerpc and fix the compilation errors. 2013-10-16 Michael Meissner <meiss...@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. -- Michael Meissner, IBM IBM, M/S 2506R, 550 King Street, Littleton, MA 01460, USA email: meiss...@linux.vnet.ibm.com, phone: +1 (978) 899-4797
Index: gcc/config/rs6000/rs6000.opt =================================================================== --- gcc/config/rs6000/rs6000.opt (revision 203723) +++ gcc/config/rs6000/rs6000.opt (working copy) @@ -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 Index: gcc/config/rs6000/rs6000.c =================================================================== --- gcc/config/rs6000/rs6000.c (revision 203723) +++ gcc/config/rs6000/rs6000.c (working copy) @@ -2796,6 +2796,10 @@ rs6000_option_override_internal (bool gl = ((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: gcc/config/rs6000/rs6000.h =================================================================== --- gcc/config/rs6000/rs6000.h (revision 203723) +++ gcc/config/rs6000/rs6000.h (working copy) @@ -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