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

Reply via email to