[arm] PR 80389 - if architecture and cpu mismatch, don't print an architecture name as a CPU name

Message ID 5cc6d019-3f5c-8db2-ade5-5a1e4cba1560@arm.com
State New
Headers show

Commit Message

Richard Earnshaw (lists) April 11, 2017, 3 p.m.
In this PR we incorrectly print the architecture name in a .cpu
directive in the assembly file when the -mcpu and -march options
conflict (don't target the same base architecture).  In this case the
.arch overrides the .cpu directive and we should emit a .arch option.

Fixed thusly.

PR target/80389
* config/arm/arm.c (arm_configure_build_target): When -mcpu and -arch
conflict, set target->arch_name instead of target->cpu_name.

Tested on a cross compiler with no problems.  I'm doing a full bootstrap
as well, but that's very unlikely to hit this scenario, so committed anyway.

R.

Patch

diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 511e163..f04deed 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -3098,15 +3098,15 @@  arm_configure_build_target (struct arm_build_target *target,
 		arm_selected_tune = arm_selected_cpu;
 
 	      arm_selected_cpu = arm_selected_arch;
+	      target->arch_name = arm_selected_arch->name;
 	    }
 	  else
 	    {
 	      /* Architecture and CPU are essentially the same.
 		 Prefer the CPU setting.  */
 	      arm_selected_arch = NULL;
+	      target->core_name = arm_selected_cpu->name;
 	    }
-
-	  target->core_name = arm_selected_cpu->name;
 	}
       else
 	{