diff mbox

Make powerpc honor PROCESSOR_DEFAULT{,64} in tm*.h files

Message ID 20120308181741.GA22470@ibm-tiger.the-meissners.org
State New
Headers show

Commit Message

Michael Meissner March 8, 2012, 6:17 p.m. UTC
David noticed that I set default_cpu twice in my previous patch.  This patch
fixes that, and also updates the ChangeLog message to indicate fixing some
tests for using >= 0 instead of > 0, since processor 0 is a valid index.  I've
bootstrapped both 4.7 and 4.8 with this new patch.  Is it ok to install?  As I
said, in the original message, we would like to install in 4.7 rather than
waiting for 4.7.1.

2012-03-08  Michael Meissner  <meissner@the-meissners.org>

	* config/rs6000/linux64.h (OPTION_TARGET_CPU_DEFAULT): Do not
	redefine to be NULL if the current bit-size is different from the
	configured bit-size.

	* config/rs6000/rs6000.c (rs6000_option_override_internal): If the
	cpu is defaulted, use PROCESSOR_DEFAULT and PROCESSOR_DEFAULT64 to
	set the default tuning.  Add asserts to make sure the cpu and tune
	indexes are defined.  Fix tests for cpu/tune index to use >= 0 to
	test whether the index is set, instead of > 0.
	(rs6000_file_start): Do not reset the default cpu if the current
	bit-size is different from the configured bit-size.

Comments

David Edelsohn March 9, 2012, 4:04 p.m. UTC | #1
On Thu, Mar 8, 2012 at 1:17 PM, Michael Meissner
<meissner@linux.vnet.ibm.com> wrote:
> David noticed that I set default_cpu twice in my previous patch.  This patch
> fixes that, and also updates the ChangeLog message to indicate fixing some
> tests for using >= 0 instead of > 0, since processor 0 is a valid index.  I've
> bootstrapped both 4.7 and 4.8 with this new patch.  Is it ok to install?  As I
> said, in the original message, we would like to install in 4.7 rather than
> waiting for 4.7.1.
>
> 2012-03-08  Michael Meissner  <meissner@the-meissners.org>
>
>        * config/rs6000/linux64.h (OPTION_TARGET_CPU_DEFAULT): Do not
>        redefine to be NULL if the current bit-size is different from the
>        configured bit-size.
>
>        * config/rs6000/rs6000.c (rs6000_option_override_internal): If the
>        cpu is defaulted, use PROCESSOR_DEFAULT and PROCESSOR_DEFAULT64 to
>        set the default tuning.  Add asserts to make sure the cpu and tune
>        indexes are defined.  Fix tests for cpu/tune index to use >= 0 to
>        test whether the index is set, instead of > 0.
>        (rs6000_file_start): Do not reset the default cpu if the current
>        bit-size is different from the configured bit-size.

This patch is okay.

Let's try this on trunk and hopefully it can be included in the
release candidate.

Thanks, David
Michael Meissner March 9, 2012, 4:57 p.m. UTC | #2
On Fri, Mar 09, 2012 at 11:04:17AM -0500, David Edelsohn wrote:
> Let's try this on trunk and hopefully it can be included in the
> release candidate.

Committed, subversion id 185146.
Richard Biener March 12, 2012, 11:39 a.m. UTC | #3
On Fri, Mar 9, 2012 at 5:57 PM, Michael Meissner
<meissner@linux.vnet.ibm.com> wrote:
> On Fri, Mar 09, 2012 at 11:04:17AM -0500, David Edelsohn wrote:
>> Let's try this on trunk and hopefully it can be included in the
>> release candidate.
>
> Committed, subversion id 185146.

Ok for the branch.

Thanks,
Richard.

> --
> Michael Meissner, IBM
> 5 Technology Place Drive, M/S 2757, Westford, MA 01886-3141, USA
> meissner@linux.vnet.ibm.com     fax +1 (978) 399-6899
>
diff mbox

Patch

Index: gcc/config/rs6000/linux64.h
===================================================================
--- gcc/config/rs6000/linux64.h	(revision 185105)
+++ gcc/config/rs6000/linux64.h	(working copy)
@@ -159,15 +159,6 @@  extern int dot_symbols;
     }								\
   while (0)
 
-#ifdef	RS6000_BI_ARCH
-
-#undef	OPTION_TARGET_CPU_DEFAULT
-#define	OPTION_TARGET_CPU_DEFAULT \
-  (((TARGET_DEFAULT ^ target_flags) & MASK_64BIT) \
-   ? (char *) 0 : TARGET_CPU_DEFAULT)
-
-#endif
-
 #undef	ASM_DEFAULT_SPEC
 #undef	ASM_SPEC
 #undef	LINK_OS_LINUX_SPEC
Index: gcc/config/rs6000/rs6000.c
===================================================================
--- gcc/config/rs6000/rs6000.c	(revision 185105)
+++ gcc/config/rs6000/rs6000.c	(working copy)
@@ -2596,6 +2596,7 @@  static bool
 rs6000_option_override_internal (bool global_init_p)
 {
   bool ret = true;
+  bool have_cpu = false;
   const char *default_cpu = OPTION_TARGET_CPU_DEFAULT;
   int set_masks;
   int cpu_index;
@@ -2652,43 +2653,55 @@  rs6000_option_override_internal (bool gl
   /* Don't override by the processor default if given explicitly.  */
   set_masks &= ~target_flags_explicit;
 
-  /* Identify the processor type.  */
-  if (!default_cpu)
-    {
-      if (TARGET_POWERPC64)
-	default_cpu = "powerpc64";
-      else if (TARGET_POWERPC)
-	default_cpu = "powerpc";
-    }
-
   /* Process the -mcpu=<xxx> and -mtune=<xxx> argument.  If the user changed
      the cpu in a target attribute or pragma, but did not specify a tuning
      option, use the cpu for the tuning option rather than the option specified
      with -mtune on the command line.  */
-  if (rs6000_cpu_index > 0)
-    cpu_index = rs6000_cpu_index;
-  else if (main_target_opt != NULL && main_target_opt->x_rs6000_cpu_index > 0)
-    rs6000_cpu_index = cpu_index = main_target_opt->x_rs6000_cpu_index;
+  if (rs6000_cpu_index >= 0)
+    {
+      cpu_index = rs6000_cpu_index;
+      have_cpu = true;
+    }
+  else if (main_target_opt != NULL && main_target_opt->x_rs6000_cpu_index >= 0)
+    {
+      rs6000_cpu_index = cpu_index = main_target_opt->x_rs6000_cpu_index;
+      have_cpu = true;
+    }
   else
-    rs6000_cpu_index = cpu_index = rs6000_cpu_name_lookup (default_cpu);
+    {
+      if (!default_cpu)
+	default_cpu = (TARGET_POWERPC64 ? "powerpc64" : "powerpc");
+
+      rs6000_cpu_index = cpu_index = rs6000_cpu_name_lookup (default_cpu);
+    }
 
-  if (rs6000_tune_index > 0)
+  gcc_assert (cpu_index >= 0);
+
+  target_flags &= ~set_masks;
+  target_flags |= (processor_target_table[cpu_index].target_enable
+		   & set_masks);
+
+  if (rs6000_tune_index >= 0)
     tune_index = rs6000_tune_index;
-  else
+  else if (have_cpu)
     rs6000_tune_index = tune_index = cpu_index;
-
-  if (cpu_index >= 0)
+  else
     {
-      target_flags &= ~set_masks;
-      target_flags |= (processor_target_table[cpu_index].target_enable
-		       & set_masks);
+      size_t i;
+      enum processor_type tune_proc
+	= (TARGET_POWERPC64 ? PROCESSOR_DEFAULT64 : PROCESSOR_DEFAULT);
+
+      tune_index = -1;
+      for (i = 0; i < ARRAY_SIZE (processor_target_table); i++)
+	if (processor_target_table[i].processor == tune_proc)
+	  {
+	    rs6000_tune_index = tune_index = i;
+	    break;
+	  }
     }
 
-  rs6000_cpu = ((tune_index >= 0)
-		? processor_target_table[tune_index].processor
-		: (TARGET_POWERPC64
-		   ? PROCESSOR_DEFAULT64
-		   : PROCESSOR_DEFAULT));
+  gcc_assert (tune_index >= 0);
+  rs6000_cpu = processor_target_table[tune_index].processor;
 
   if (rs6000_cpu == PROCESSOR_PPCE300C2 || rs6000_cpu == PROCESSOR_PPCE300C3
       || rs6000_cpu == PROCESSOR_PPCE500MC || rs6000_cpu == PROCESSOR_PPCE500MC64)
@@ -4023,11 +4036,6 @@  rs6000_file_start (void)
 
   default_file_start ();
 
-#ifdef TARGET_BI_ARCH
-  if ((TARGET_DEFAULT ^ target_flags) & MASK_64BIT)
-    rs6000_default_cpu = 0;
-#endif
-
   if (flag_verbose_asm)
     {
       sprintf (buffer, "\n%s rs6000/powerpc options:", ASM_COMMENT_START);