Don't enable -fprefetch-loop-arrays for TARGET_SOFTWARE_PREFETCHING_BENEFICIAL if...
authorJoseph Myers <joseph@codesourcery.com>
Sun, 12 Apr 2015 21:35:17 +0000 (22:35 +0100)
committerJoseph Myers <jsm28@gcc.gnu.org>
Sun, 12 Apr 2015 21:35:17 +0000 (22:35 +0100)
Testing an x86_64 toolchain configured for a processor with
TARGET_SOFTWARE_PREFETCHING_BENEFICIAL produces failures

FAIL: g++.dg/pr60518.C  -std=gnu++98 (test for excess errors)
FAIL: g++.dg/pr60518.C  -std=gnu++11 (test for excess errors)
FAIL: g++.dg/pr60518.C  -std=gnu++14 (test for excess errors)

where the failure is from the message "pr60518.C:1:0: warning:
-fprefetch-loop-arrays is not supported with -Os".

Given that lack of support, it seems appropriate for the back end not
to enable this option in the -Os case; this patch implements that.

Bootstrapped with no regressions on x86_64-unknown-linux-gnu; tested
for a cross to x86_64-linux-gnu --with-arch=btver2, where those test
failures duly disappear.

* config/i386/i386.c (ix86_option_override_internal): Don't set
-fprefetch-loop-arrays if optimizing for size.

From-SVN: r222033

gcc/ChangeLog
gcc/config/i386/i386.c

index 5e1b6173caa2d270e35607456607e255204e32d5..dfd76ab6147f41f342fe1e9663c548d6edc19a2e 100644 (file)
@@ -1,3 +1,8 @@
+2015-04-12  Joseph Myers  <joseph@codesourcery.com>
+
+       * config/i386/i386.c (ix86_option_override_internal): Don't set
+       -fprefetch-loop-arrays if optimizing for size.
+
 2015-04-12  Jan Hubicka  <hubicka@ucw.cz>
            Gerald Pfeifer  <gerald@pfeifer.com>
 
index 110ec4adc681eee648d62d8adf492d434e1c77ea..b442da9802e01b729caa022707e999b246b47204 100644 (file)
@@ -4168,6 +4168,7 @@ ix86_option_override_internal (bool main_args_p,
   if (opts->x_flag_prefetch_loop_arrays < 0
       && HAVE_prefetch
       && (opts->x_optimize >= 3 || opts->x_flag_profile_use)
+      && !opts->x_optimize_size
       && TARGET_SOFTWARE_PREFETCHING_BENEFICIAL)
     opts->x_flag_prefetch_loop_arrays = 1;