[PATCH][PR96791] disable POImode ld/st for memcpy
authorAaron Sawdey <acsawdey@linux.ibm.com>
Thu, 10 Sep 2020 20:12:49 +0000 (15:12 -0500)
committerAaron Sawdey <acsawdey@linux.ibm.com>
Fri, 11 Sep 2020 02:13:38 +0000 (21:13 -0500)
This is a (hopefully temporary) fix to PR96791. This will make
the default be -mno-block-ops-vector-pair even on power10, so we will
not hit the issue of DSE trying to truncate a POImode register. I am
still concerned it will be possible to hit this because the MMA builtins
will also generate POImode stores, but I think any example of that will
be somewhat more contrived.

gcc/ChangeLog:

* config/rs6000/rs6000.c (rs6000_option_override_internal):
Change default.

gcc/config/rs6000/rs6000.c

index f6a3ff6f0896d5ae6d043cc354c653fb2df07d88..9908830b07a7464a2ecf261293a4843289e8d09e 100644 (file)
@@ -4020,10 +4020,11 @@ rs6000_option_override_internal (bool global_init_p)
 
   if (!(rs6000_isa_flags_explicit & OPTION_MASK_BLOCK_OPS_VECTOR_PAIR))
     {
-      if (TARGET_MMA && TARGET_EFFICIENT_UNALIGNED_VSX)
-       rs6000_isa_flags |= OPTION_MASK_BLOCK_OPS_VECTOR_PAIR;
-      else
-       rs6000_isa_flags &= ~OPTION_MASK_BLOCK_OPS_VECTOR_PAIR;
+      /* When the POImode issues of PR96791 are resolved, then we can
+        once again enable use of vector pair for memcpy/memmove on
+        P10 if we have TARGET_MMA.  For now we make it disabled by
+        default for all targets.  */
+      rs6000_isa_flags &= ~OPTION_MASK_BLOCK_OPS_VECTOR_PAIR;
     }
 
   /* Use long double size to select the appropriate long double.  We use