This patch is a preparation patch for the main infrastructure patch.  It
changes the types of the builtin masks and target options from unsigned/signed
int to HOST_WIDE_INT.  I built this with #2c also installed (but the two
patches are independent).  It bootstraped and had no regressions.  Is it ok to
install?

2012-10-09  Michael Meissner  <meiss...@linux.vnet.ibm.com>

        * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Change
        builtin mask, target flags masks type to HOST_WIDE_INT in
        preparation for growing the number of ISA switches from 31 to 63.

        * config/rs6000/rs6000.opt (rs6000_builtin_mask): Make mask type
        HOST_WIDE_INT.

        * config/rs6000/rs6000.c (struct builtin_description): Make
        builtin mask field HOST_WIDE_INT.  Make target flags field
        HOST_WIDE_INT in preparation for growing the # of ISA switches.
        (struct rs6000_builtin_info_type): Likewise.
        (struct rs6000_ptt): Likewise.
        (rs6000_builtin_mask_calculate): Likewise.
        (rs6000_invalid_builtin): Likewise.
        (rs6000_builtin_decl): Likewise.
        (rs6000_common_init_builtins): Likewise.
        (rs6000_darwin_file_start): Likewise.
        (rs6000_final_prescan_insn): Likewise.
        (rs6000_inner_target_options): Likewise.
        (build_target_option_node): Likewise.
        (rs6000_function_specific_print): Likewise.
        (DEBUG_FMT_W): New format for printing HOST_WIDE_INT in hex.

        * config/rs6000/rs6000-protos.h (rs6000_builtin_mask_calculate):
        Make target flags, builtin masks arguments/return values
        HOST_WIDE_INT in preparation for growing the number of ISA from 31
        to 63.
        (rs6000_target_modify_macros): Likewise.
        (rs6000_target_modify_macros_ptr): Likewise.

-- 
Michael Meissner, IBM
5 Technology Place Drive, M/S 2757, Westford, MA 01886-3141, USA
meiss...@linux.vnet.ibm.com     fax +1 (978) 399-6899
Index: gcc/config/rs6000/rs6000-c.c
===================================================================
--- gcc/config/rs6000/rs6000-c.c        (revision 192265)
+++ gcc/config/rs6000/rs6000-c.c        (working copy)
@@ -285,12 +285,15 @@ rs6000_define_or_undefine_macro (bool de
    have both the target flags and the builtin flags as arguments.  */
 
 void
-rs6000_target_modify_macros (bool define_p, int flags, unsigned bu_mask)
+rs6000_target_modify_macros (bool define_p, HOST_WIDE_INT flags,
+                            HOST_WIDE_INT bu_mask)
 {
   if (TARGET_DEBUG_BUILTIN || TARGET_DEBUG_TARGET)
-    fprintf (stderr, "rs6000_target_modify_macros (%s, 0x%x, 0x%x)\n",
+    fprintf (stderr,
+            "rs6000_target_modify_macros (%s, " HOST_WIDE_INT_PRINT_HEX
+            ", " HOST_WIDE_INT_PRINT_HEX ")\n",
             (define_p) ? "define" : "undef",
-            (unsigned) flags, bu_mask);
+            flags, bu_mask);
 
   /* target_flags based options.  */
   rs6000_define_or_undefine_macro (define_p, "_ARCH_PPC");
Index: gcc/config/rs6000/rs6000.opt
===================================================================
--- gcc/config/rs6000/rs6000.opt        (revision 192265)
+++ gcc/config/rs6000/rs6000.opt        (working copy)
@@ -80,7 +80,7 @@ unsigned int rs6000_recip_control
 
 ;; Mask of what builtin functions are allowed
 TargetVariable
-unsigned int rs6000_builtin_mask
+HOST_WIDE_INT rs6000_builtin_mask
 
 ;; Debug flags
 TargetVariable
Index: gcc/config/rs6000/rs6000.c
===================================================================
--- gcc/config/rs6000/rs6000.c  (revision 192265)
+++ gcc/config/rs6000/rs6000.c  (working copy)
@@ -214,7 +214,7 @@ static GTY(()) section *toc_section;
 
 struct builtin_description
 {
-  const unsigned int mask;
+  const HOST_WIDE_INT mask;
   const enum insn_code icode;
   const char *const name;
   const enum rs6000_builtins code;
@@ -288,7 +288,7 @@ typedef rtx (*gen_2arg_fn_t) (rtx, rtx, 
 /* Pointer to function (in rs6000-c.c) that can define or undefine target
    macros that have changed.  Languages that don't support the preprocessor
    don't link in rs6000-c.c, so we can't call it directly.  */
-void (*rs6000_target_modify_macros_ptr) (bool, int, unsigned);
+void (*rs6000_target_modify_macros_ptr) (bool, HOST_WIDE_INT, HOST_WIDE_INT);
 
 
 /* Target cpu costs.  */
@@ -894,7 +894,7 @@ struct processor_costs ppca2_cost = {
 struct rs6000_builtin_info_type {
   const char *name;
   const enum insn_code icode;
-  const unsigned mask;
+  const HOST_WIDE_INT mask;
   const unsigned attr;
 };
 
@@ -1505,7 +1505,7 @@ struct rs6000_ptt
 {
   const char *const name;              /* Canonical processor name.  */
   const enum processor_type processor; /* Processor type enum value.  */
-  const int target_enable;             /* Target flags to enable.  */
+  const HOST_WIDE_INT target_enable;   /* Target flags to enable.  */
 };
 
 static struct rs6000_ptt const processor_target_table[] =
@@ -1719,6 +1719,7 @@ rs6000_debug_reg_print (int first_regno,
 #define DEBUG_FMT_D "%-32s= %d\n"
 #define DEBUG_FMT_X "%-32s= 0x%x\n"
 #define DEBUG_FMT_S "%-32s= %s\n"
+#define DEBUG_FMT_W "%-32s= " HOST_WIDEST_INT_PRINT_HEX "\n"
 
 /* Print various interesting information with -mdebug=reg.  */
 static void
@@ -1948,7 +1949,7 @@ rs6000_debug_reg_global (void)
           (int)END_BUILTINS);
   fprintf (stderr, DEBUG_FMT_D, "Number of rs6000 builtins",
           (int)RS6000_BUILTIN_COUNT);
-  fprintf (stderr, DEBUG_FMT_X, "Builtin mask", rs6000_builtin_mask);
+  fprintf (stderr, DEBUG_FMT_W, "Builtin mask", rs6000_builtin_mask);
 }
 
 /* Initialize the various global tables that are based on register size.  */
@@ -2354,7 +2355,7 @@ darwin_rs6000_override_options (void)
    bits, and some options like SPE and PAIRED are no longer in
    target_flags.  */
 
-unsigned
+HOST_WIDE_INT
 rs6000_builtin_mask_calculate (void)
 {
   return (((TARGET_ALTIVEC)                ? RS6000_BTM_ALTIVEC  : 0)
@@ -2381,7 +2382,7 @@ rs6000_option_override_internal (bool gl
   /* The default cpu requested at configure time, if any.  */
   const char *implicit_cpu = OPTION_TARGET_CPU_DEFAULT;
 
-  int set_masks;
+  HOST_WIDE_INT set_masks;
   int cpu_index;
   int tune_index;
   struct cl_target_option *main_target_opt
@@ -3176,7 +3177,9 @@ rs6000_option_override_internal (bool gl
      target_flags.  */
   rs6000_builtin_mask = rs6000_builtin_mask_calculate ();
   if (TARGET_DEBUG_BUILTIN || TARGET_DEBUG_TARGET)
-    fprintf (stderr, "new builtin mask = 0x%x%s%s%s%s\n", rs6000_builtin_mask,
+    fprintf (stderr,
+            "new builtin mask = " HOST_WIDE_INT_PRINT_HEX "%s%s%s%s\n",
+            rs6000_builtin_mask,
             (rs6000_builtin_mask & RS6000_BTM_ALTIVEC) ? ", altivec" : "",
             (rs6000_builtin_mask & RS6000_BTM_VSX)     ? ", vsx"     : "",
             (rs6000_builtin_mask & RS6000_BTM_PAIRED)  ? ", paired"  : "",
@@ -11274,7 +11277,7 @@ rs6000_invalid_builtin (enum rs6000_buil
 {
   size_t uns_fncode = (size_t)fncode;
   const char *name = rs6000_builtin_info[uns_fncode].name;
-  unsigned fnmask = rs6000_builtin_info[uns_fncode].mask;
+  HOST_WIDE_INT fnmask = rs6000_builtin_info[uns_fncode].mask;
 
   gcc_assert (name != NULL);
   if ((fnmask & RS6000_BTM_CELL) != 0)
@@ -11311,7 +11314,7 @@ rs6000_expand_builtin (tree exp, rtx tar
   size_t i;
   rtx ret;
   bool success;
-  unsigned mask = rs6000_builtin_info[uns_fcode].mask;
+  HOST_WIDE_INT mask = rs6000_builtin_info[uns_fcode].mask;
   bool func_valid_p = ((rs6000_builtin_mask & mask) == mask);
 
   if (TARGET_DEBUG_BUILTIN)
@@ -11694,7 +11697,7 @@ rs6000_init_builtins (void)
 static tree
 rs6000_builtin_decl (unsigned code, bool initialize_p ATTRIBUTE_UNUSED)
 {
-  unsigned fnmask;
+  HOST_WIDE_INT fnmask;
 
   if (code >= RS6000_BUILTIN_COUNT)
     return error_mark_node;
@@ -12566,7 +12569,7 @@ rs6000_common_init_builtins (void)
   tree v2si_ftype_qi = NULL_TREE;
   tree v2si_ftype_v2si_qi = NULL_TREE;
   tree v2si_ftype_int_qi = NULL_TREE;
-  unsigned builtin_mask = rs6000_builtin_mask;
+  HOST_WIDE_INT builtin_mask = rs6000_builtin_mask;
 
   if (!TARGET_PAIRED_FLOAT)
     {
@@ -12588,7 +12591,7 @@ rs6000_common_init_builtins (void)
   for (i = 0; i < ARRAY_SIZE (bdesc_3arg); i++, d++)
     {
       tree type;
-      unsigned mask = d->mask;
+      HOST_WIDE_INT mask = d->mask;
 
       if ((mask & builtin_mask) != mask)
        {
@@ -12629,7 +12632,7 @@ rs6000_common_init_builtins (void)
     {
       enum machine_mode mode0, mode1, mode2;
       tree type;
-      unsigned mask = d->mask;
+      HOST_WIDE_INT mask = d->mask;
 
       if ((mask & builtin_mask) != mask)
        {
@@ -12692,7 +12695,7 @@ rs6000_common_init_builtins (void)
     {
       enum machine_mode mode0, mode1;
       tree type;
-      unsigned mask = d->mask;
+      HOST_WIDE_INT mask = d->mask;
 
       if ((mask & builtin_mask) != mask)
        {
@@ -25246,7 +25249,7 @@ rs6000_darwin_file_start (void)
   {
     const char *arg;
     const char *name;
-    int if_set;
+    HOST_WIDE_INT if_set;
   } mapping[] = {
     { "ppc64", "ppc64", MASK_64BIT },
     { "970", "ppc970", MASK_PPC_GPOPT | MASK_MFCRF | MASK_POWERPC64 },
@@ -27379,7 +27382,7 @@ rs6000_final_prescan_insn (rtx insn, rtx
 
 struct rs6000_opt_mask {
   const char *name;            /* option name */
-  int mask;                    /* mask to set */
+  HOST_WIDE_INT mask;          /* mask to set */
   bool invert;                 /* invert sense of mask */
   bool valid_target;           /* option is a target option */
 };
@@ -27531,7 +27534,7 @@ rs6000_inner_target_options (tree args, 
              for (i = 0; i < ARRAY_SIZE (rs6000_opt_masks); i++)
                if (strcmp (r, rs6000_opt_masks[i].name) == 0)
                  {
-                   int mask = rs6000_opt_masks[i].mask;
+                   HOST_WIDE_INT mask = rs6000_opt_masks[i].mask;
 
                    if (!rs6000_opt_masks[i].valid_target)
                      not_valid_p = true;
@@ -27755,8 +27758,8 @@ rs6000_pragma_target_parse (tree args, t
   tree prev_tree = build_target_option_node ();
   tree cur_tree;
   struct cl_target_option *prev_opt, *cur_opt;
-  unsigned prev_bumask, cur_bumask, diff_bumask;
-  int prev_flags, cur_flags, diff_flags;
+  HOST_WIDE_INT prev_flags, cur_flags, diff_flags;
+  HOST_WIDE_INT prev_bumask, cur_bumask, diff_bumask;
 
   if (TARGET_DEBUG_TARGET)
     {
@@ -27936,7 +27939,7 @@ rs6000_function_specific_print (FILE *fi
 {
   size_t i;
   int flags = ptr->x_target_flags;
-  unsigned bu_mask = ptr->x_rs6000_builtin_mask;
+  HOST_WIDE_INT bu_mask = ptr->x_rs6000_builtin_mask;
 
   /* Print the various mask options.  */
   for (i = 0; i < ARRAY_SIZE (rs6000_opt_masks); i++)
@@ -27958,7 +27961,8 @@ rs6000_function_specific_print (FILE *fi
     }
 
   /* Print the various builtin flags.  */
-  fprintf (file, "%*sbuiltin mask = 0x%x\n", indent, "", bu_mask);
+  fprintf (file, "%*sbuiltin mask = " HOST_WIDE_INT_PRINT_HEX "\n",
+          indent, "", bu_mask);
   for (i = 0; i < ARRAY_SIZE (rs6000_builtin_mask_names); i++)
     if ((bu_mask & rs6000_builtin_mask_names[i].mask) != 0)
       {
Index: gcc/config/rs6000/rs6000-protos.h
===================================================================
--- gcc/config/rs6000/rs6000-protos.h   (revision 192265)
+++ gcc/config/rs6000/rs6000-protos.h   (working copy)
@@ -176,7 +176,7 @@ extern void rs6000_call_indirect_aix (rt
 extern void rs6000_aix_asm_output_dwarf_table_ref (char *);
 extern void get_ppc476_thunk_name (char name[32]);
 extern bool rs6000_overloaded_builtin_p (enum rs6000_builtins);
-extern unsigned rs6000_builtin_mask_calculate (void);
+extern HOST_WIDE_INT rs6000_builtin_mask_calculate (void);
 
 /* Declare functions in rs6000-c.c */
 
@@ -185,8 +185,9 @@ extern void rs6000_cpu_cpp_builtins (str
 #ifdef TREE_CODE
 extern bool rs6000_pragma_target_parse (tree, tree);
 #endif
-extern void rs6000_target_modify_macros (bool, int, unsigned);
-extern void (*rs6000_target_modify_macros_ptr) (bool, int, unsigned);
+extern void rs6000_target_modify_macros (bool, HOST_WIDE_INT, HOST_WIDE_INT);
+extern void (*rs6000_target_modify_macros_ptr) (bool, HOST_WIDE_INT,
+                                               HOST_WIDE_INT);
 
 #if TARGET_MACHO
 char *output_call (rtx, rtx *, int, int);

Reply via email to