# DP: Revert the fix for PR target/100067, breaking the ARM multilib build

--- a/src/gcc/config/arm/arm.c
+++ b/src/gcc/config/arm/arm.c
@@ -3230,22 +3230,21 @@ arm_configure_build_target (struct arm_b
 	  bitmap_xor (isa_delta, cpu_isa, target->isa);
 	  /* Ignore any bits that are quirk bits.  */
 	  bitmap_and_compl (isa_delta, isa_delta, isa_quirkbits);
-	  /* If the user (or the default configuration) has specified a
-	     specific FPU, then ignore any bits that depend on the FPU
-	     configuration.  Do similarly if using the soft-float
-	     ABI.  */
-	  if (opts->x_arm_fpu_index != TARGET_FPU_auto
-	      || arm_float_abi == ARM_FLOAT_ABI_SOFT)
+	  /* Ignore (for now) any bits that might be set by -mfpu.  */
+	  bitmap_and_compl (isa_delta, isa_delta, isa_all_fpubits_internal);
+
+	  /* And if the target ISA lacks floating point, ignore any
+	     extensions that depend on that.  */
+	  if (!bitmap_bit_p (target->isa, isa_bit_vfpv2))
 	    bitmap_and_compl (isa_delta, isa_delta, isa_all_fpbits);
 
 	  if (!bitmap_empty_p (isa_delta))
 	    {
 	      if (warn_compatible)
 		warning (0, "switch %<-mcpu=%s%> conflicts "
-			 "with switch %<-march=%s%>",
-			 opts->x_arm_cpu_string,
-			 opts->x_arm_arch_string);
-
+			 "with %<-march=%s%> switch",
+			 arm_selected_cpu->common.name,
+			 arm_selected_arch->common.name);
 	      /* -march wins for code generation.
 		 -mcpu wins for default tuning.  */
 	      if (!arm_selected_tune)
@@ -3396,10 +3395,6 @@ arm_configure_build_target (struct arm_b
       auto_sbitmap fpu_bits (isa_num_bits);
 
       arm_initialize_isa (fpu_bits, arm_selected_fpu->isa_bits);
-      /* This should clear out ALL bits relating to the FPU/simd
-	 extensions, to avoid potentially invalid combinations later on
-	 that we can't match.  At present we only clear out those bits
-	 that can be set by -mfpu.  This should be fixed in GCC-12.  */
       bitmap_and_compl (target->isa, target->isa, isa_all_fpubits_internal);
       bitmap_ior (target->isa, target->isa, fpu_bits);
     }
@@ -3861,7 +3856,7 @@ arm_options_perform_arch_sanity_checks (
 	  arm_pcs_default = ARM_PCS_AAPCS_VFP;
 	  if (!bitmap_bit_p (arm_active_target.isa, isa_bit_vfpv2)
 	      && !bitmap_bit_p (arm_active_target.isa, isa_bit_mve))
-	    error ("%<-mfloat-abi=hard%>: selected architecture lacks an FPU");
+	    error ("%<-mfloat-abi=hard%>: selected processor lacks an FPU");
 	}
       else
 	arm_pcs_default = ARM_PCS_AAPCS;
--- a/src/libgomp/testsuite/libgomp.fortran/alloc-1.F90
+++ b/src/libgomp/testsuite/libgomp.fortran/alloc-1.F90
@@ -155,13 +155,12 @@
         cp = omp_alloc (ONEoFIVE,                                       &
      &                  omp_null_allocator)
         if (mod (transfer (cp, intptr), 32_c_intptr_t) /= 0) stop 17
-        call c_f_pointer (cp, p, [ONEoFIVE                              &
+        call c_f_pointer (cq, q, [ONEoFIVE                              &
      &                            / c_sizeof (i)])
         p(1) = 5
         p(ONEoFIVE / c_sizeof (i)) = 6
         cq = omp_alloc (768_c_size_t, omp_null_allocator)
         if (mod (transfer (cq, intptr), 128_c_intptr_t) /= 0) stop 18
-        call c_f_pointer (cq, q, [768 / c_sizeof (i)])
         q(1) = 7
         q(768 / c_sizeof (i)) = 8
         if (c_associated (omp_alloc (768_c_size_t, omp_null_allocator))) &
--- a/src/gcc/testsuite/g++.target/arm/arm.exp
+++ b/src/gcc/testsuite/g++.target/arm/arm.exp
@@ -35,7 +35,7 @@ if ![info exists DEFAULT_CXXFLAGS] then
 
 global dg_runtest_extra_prunes
 set dg_runtest_extra_prunes ""
-lappend dg_runtest_extra_prunes "warning: switch '-m(cpu|arch)=.*' conflicts with switch '-m(cpu|arch)=.*'"
+lappend dg_runtest_extra_prunes "warning: switch '-m(cpu|arch)=.*' conflicts with '-m(cpu|arch)=.*' switch"
 
 # Initialize `dg'.
 dg-init
--- a/src/gcc/testsuite/g++.target/arm/mve.exp
+++ b/src/gcc/testsuite/g++.target/arm/mve.exp
@@ -33,7 +33,7 @@ if ![info exists DEFAULT_CXXFLAGS] then
 # This variable should only apply to tests called in this exp file.
 global dg_runtest_extra_prunes
 set dg_runtest_extra_prunes ""
-lappend dg_runtest_extra_prunes "warning: switch '-m(cpu|arch)=.*' conflicts with switch '-m(cpu|arch)=.*'"
+lappend dg_runtest_extra_prunes "warning: switch -m(cpu|arch)=.* conflicts with -m(cpu|arch)=.* switch"
 
 set save-dg-do-what-default ${dg-do-what-default}
 set dg-do-what-default "assemble"
--- a/src/gcc/testsuite/gcc.target/arm/arm.exp
+++ b/src/gcc/testsuite/gcc.target/arm/arm.exp
@@ -33,7 +33,7 @@ if ![info exists DEFAULT_CFLAGS] then {
 # This variable should only apply to tests called in this exp file.
 global dg_runtest_extra_prunes
 set dg_runtest_extra_prunes ""
-lappend dg_runtest_extra_prunes "warning: switch '-m(cpu|arch)=.*' conflicts with switch '-m(cpu|arch)=.*'"
+lappend dg_runtest_extra_prunes "warning: switch '-m(cpu|arch)=.*' conflicts with '-m(cpu|arch)=.*' switch"
 
 # Initialize `dg'.
 dg-init
--- a/src/gcc/testsuite/gcc.target/arm/mve/mve.exp
+++ b/src/gcc/testsuite/gcc.target/arm/mve/mve.exp
@@ -33,7 +33,7 @@ if ![info exists DEFAULT_CFLAGS] then {
 # This variable should only apply to tests called in this exp file.
 global dg_runtest_extra_prunes
 set dg_runtest_extra_prunes ""
-lappend dg_runtest_extra_prunes "warning: switch '-m(cpu|arch)=.*' conflicts with switch '-m(cpu|arch)=.*'"
+lappend dg_runtest_extra_prunes "warning: switch -m(cpu|arch)=.* conflicts with -m(cpu|arch)=.* switch"
 
 set dg-do-what-default "assemble"
 
