tech-toolchain archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Regression of GCC >= 4.8.5 for 32-bit powerpc



On 2016/12/14 4:07, Matt Thomas wrote:
I think the right fix is to make that last

	else
	  fputs ("ppc\n", asm_out_file);

into

	else if (!global_options_set.x_rs6000_cpu_index)
	  fputs ("ppc\n", asm_out_file);

I think that's that is needed.

Thank you for your correction. I slightly modified your version
in order to avoid dangling ".machine". With this patch, I obtained
working kernel and userland for IBM 405 (evbppc). Also, build.sh
successfully completes for evbppc-powerpc64. Is this OK with you?

Rin
--- src/external/gpl3/gcc/dist/gcc/config/rs6000/rs6000.c.orig	2016-12-14 09:33:08.692802297 +0900
+++ src/external/gpl3/gcc/dist/gcc/config/rs6000/rs6000.c	2016-12-14 09:43:15.721045362 +0900
@@ -5188,21 +5188,23 @@
   if (rs6000_default_cpu == 0 || rs6000_default_cpu[0] == '\0'
       || !global_options_set.x_rs6000_cpu_index)
     {
-      fputs ("\t.machine ", asm_out_file);
+      const char *p = NULL;
       if ((rs6000_isa_flags & OPTION_MASK_DIRECT_MOVE) != 0)
-	fputs ("power8\n", asm_out_file);
+	p = "power8";
       else if ((rs6000_isa_flags & OPTION_MASK_POPCNTD) != 0)
-	fputs ("power7\n", asm_out_file);
+	p = "power7";
       else if ((rs6000_isa_flags & OPTION_MASK_CMPB) != 0)
-	fputs ("power6\n", asm_out_file);
+	p = "power6";
       else if ((rs6000_isa_flags & OPTION_MASK_POPCNTB) != 0)
-	fputs ("power5\n", asm_out_file);
+	p = "power5";
       else if ((rs6000_isa_flags & OPTION_MASK_MFCRF) != 0)
-	fputs ("power4\n", asm_out_file);
+	p = "power4";
       else if ((rs6000_isa_flags & OPTION_MASK_POWERPC64) != 0)
-	fputs ("ppc64\n", asm_out_file);
-      else
-	fputs ("ppc\n", asm_out_file);
+	p = "ppc64";
+      else if (!global_options_set.x_rs6000_cpu_index)
+	p = "ppc";
+      if (p != NULL)
+	fprintf (asm_out_file, "\t.machine %s\n", p);
     }
 #endif


Home | Main Index | Thread Index | Old Index