Am 10/17/19 um 1:22 PM schrieb Eric Botcazou:
r276985 broke avr because it removed PARAM_ALLOW_STORE_DATA_RACES from
--params. The patch fixes that by using flag_store_data_races = 1 instead.
Note that you'll unconditionally override the user, unlike the original code.
You're right. What about this one?
Johann
Fix breakage introduced by r276985.
* config/avr/avr.c (avr_option_override): Remove set of
PARAM_ALLOW_STORE_DATA_RACES.
* common/config/avr/avr-common.c (avr_option_optimization_table)
[OPT_LEVELS_ALL]: Turn on -fallow-store-data-races.
Index: common/config/avr/avr-common.c
===================================================================
--- common/config/avr/avr-common.c (revision 277097)
+++ common/config/avr/avr-common.c (working copy)
@@ -38,6 +38,11 @@ static const struct default_options avr_
{ OPT_LEVELS_ALL, OPT_fcaller_saves, NULL, 0 },
{ OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_mgas_isr_prologues, NULL, 1 },
{ OPT_LEVELS_1_PLUS, OPT_mmain_is_OS_task, NULL, 1 },
+ /* Allow optimizer to introduce store data races. This used to be the
+ default -- it was changed because bigger targets did not see any
+ performance decrease. For the AVR though, disallowing data races
+ introduces additional code in LIM and increases reg pressure. */
+ { OPT_LEVELS_ALL, OPT_fallow_store_data_races, NULL, 1 },
{ OPT_LEVELS_NONE, 0, NULL, 0 }
};
Index: config/avr/avr.c
===================================================================
--- config/avr/avr.c (revision 277097)
+++ config/avr/avr.c (working copy)
@@ -741,15 +741,6 @@ avr_option_override (void)
if (avr_strict_X)
flag_caller_saves = 0;
- /* Allow optimizer to introduce store data races. This used to be the
- default - it was changed because bigger targets did not see any
- performance decrease. For the AVR though, disallowing data races
- introduces additional code in LIM and increases reg pressure. */
-
- maybe_set_param_value (PARAM_ALLOW_STORE_DATA_RACES, 1,
- global_options.x_param_values,
- global_options_set.x_param_values);
-
/* Unwind tables currently require a frame pointer for correctness,
see toplev.c:process_options(). */