aboutsummaryrefslogtreecommitdiff
path: root/gcc/opts.c
diff options
context:
space:
mode:
authorMartin Jambor <mjambor@suse.cz>2014-06-26 16:54:59 +0200
committerMartin Jambor <jamborm@gcc.gnu.org>2014-06-26 16:54:59 +0200
commit680a5a7c025e3a124a81266c173db490948ba3bc (patch)
tree004cb921ce0d40fd638fdd30852170ac3fba00d1 /gcc/opts.c
parenta5ad7492f88de013afdf2183c96cf1225fb6021e (diff)
downloadgcc-680a5a7c025e3a124a81266c173db490948ba3bc.zip
gcc-680a5a7c025e3a124a81266c173db490948ba3bc.tar.gz
gcc-680a5a7c025e3a124a81266c173db490948ba3bc.tar.bz2
2014-06-26 Martin Jambor <mjambor@suse.cz>
* params.def (PARAM_ALLOW_LOAD_DATA_RACES) (PARAM_ALLOW_PACKED_LOAD_DATA_RACES) (PARAM_ALLOW_PACKED_STORE_DATA_RACES): Removed. (PARAM_ALLOW_STORE_DATA_RACES): Set default to zero. * opts.c (default_options_optimization): Set PARAM_ALLOW_STORE_DATA_RACES to one at -Ofast. * doc/invoke.texi (allow-load-data-races) (allow-packed-load-data-races, allow-packed-store-data-races): Removed. (allow-store-data-races): Document the new default. testsuite/ * g++.dg/simulate-thread/bitfields-2.C: Remove allow-load-data-races parameter. * g++.dg/simulate-thread/bitfields.C: Likewise. * gcc.dg/simulate-thread/strict-align-global.c: Remove allow-packed-store-data-races parameter. * gcc.dg/simulate-thread/subfields.c: Likewise. * gcc.dg/tree-ssa/20050314-1.c: Set parameter allow-store-data-races to one. From-SVN: r212034
Diffstat (limited to 'gcc/opts.c')
-rw-r--r--gcc/opts.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/opts.c b/gcc/opts.c
index 3ab06c6..19203dc 100644
--- a/gcc/opts.c
+++ b/gcc/opts.c
@@ -620,6 +620,13 @@ default_options_optimization (struct gcc_options *opts,
opt2 ? default_param_value (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP) : 1000,
opts->x_param_values, opts_set->x_param_values);
+ /* At -Ofast, allow store motion to introduce potential race conditions. */
+ maybe_set_param_value
+ (PARAM_ALLOW_STORE_DATA_RACES,
+ opts->x_optimize_fast ? 1
+ : default_param_value (PARAM_ALLOW_STORE_DATA_RACES),
+ opts->x_param_values, opts_set->x_param_values);
+
if (opts->x_optimize_size)
/* We want to crossjump as much as possible. */
maybe_set_param_value (PARAM_MIN_CROSSJUMP_INSNS, 1,