summaryrefslogtreecommitdiff
path: root/gcc/flags.h
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2018-07-17 11:19:27 +0200
committerMartin Liska <marxin@gcc.gnu.org>2018-07-17 09:19:27 +0000
commite6de53356769e13178975c18b4ce019a800ea946 (patch)
tree76fa6fbb2e76fcb986efcbb0143316749fbf1e29 /gcc/flags.h
parent118f2d8bc3e6804996ca2953b86454ec950054bf (diff)
Clean up of new format of -falign-FOO.
2018-07-17 Martin Liska <mliska@suse.cz> * align.h: New file. * config/alpha/alpha.c (alpha_align_insns_1): Use align_functions directly. * config/i386/i386.c (ix86_avoid_jump_mispredicts): Use new return type align_flags of label_to_alignment. * config/m32r/m32r.h (LOOP_ALIGN): Wrap returned values into align_flags class. * config/m68k/m68k.c: Do not use removed align_labels_value and align_loops_value. * config/nds32/nds32.h (JUMP_ALIGN): Wrap result into align_flags class. (LOOP_ALIGN): Likewise. (LABEL_ALIGN): Likewise. * config/powerpcspe/powerpcspe.c (TARGET_ASM_LOOP_ALIGN_MAX_SKIP): Remove not used macro. (rs6000_loop_align): Change return type to align_flags. (rs6000_loop_align_max_skip): Remove. * config/rs6000/rs6000-protos.h (rs6000_loop_align): Change return type to align_flags. * config/rs6000/rs6000.c (TARGET_ASM_LOOP_ALIGN_MAX_SKIP): Remove not used macro. (rs6000_loop_align): Change return type to align_flags. (rs6000_loop_align_max_skip): Remove. * config/rx/rx.h (JUMP_ALIGN): Wrap integer values * config/rx/rx-protos.h (rx_align_for_label): Make it static function. * config/rx/rx.c (rx_align_for_label): Change return type to align_flags. (rx_max_skip_for_label): Remove TARGET_ASM_*_ALIGN_MAX_SKIP macro definitions. into align_flags class. (LABEL_ALIGN): Likewise. (LOOP_ALIGN): Likewise. * config/s390/s390.c (s390_label_align): Use align_flags class member. (s390_asm_output_function_label): Likewise. * config/sh/sh.c (sh_override_options_after_change): Use align_flags class directly without macros. (find_barrier): Likewise. (barrier_align): Likewise. (sh_loop_align): Likewise. * config/spu/spu.c (spu_option_override): Use align_flags_tuple::get_value instead of removed macros. (spu_sched_init): Likewise. * config/spu/spu.h (GTY): Likewise. * config/visium/visium.c (visium_option_override): Set "8" as default secondary alignment. * config/visium/visium.h (SUBALIGN_LOG): Define to 3 in order to guarantee secondary alignment of 8. * coretypes.h: Include align.h header file. * doc/tm.texi: Remove TARGET_ASM_JUMP_ALIGN_MAX_SKIP, TARGET_ASM_LOOP_ALIGN_MAX_SKIP, TARGET_ASM_LABEL_ALIGN_MAX_SKIP and TARGET_ASM_LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP macros. * doc/tm.texi.in: Likewise. * final.c (struct label_alignment): Remove not used structure. (LABEL_ALIGN): Change type to align_flags. (LOOP_ALIGN): Likewise. (JUMP_ALIGN): Likewise. (default_loop_align_max_skip): Remove. (default_label_align_max_skip): Likewise. (default_jump_align_max_skip): Likewise. (default_label_align_after_barrier_max_skip): (LABEL_TO_ALIGNMENT): Change to access label_align vector. (LABEL_TO_MAX_SKIP): Remove. (label_to_alignment): Return align_flags type instead of integer. (label_to_max_skip): Remove. (align_fuzz): Use align_flags type. (compute_alignments): Use align_flags type and use align_flags::max to combine multiple alignments. (grow_label_align): Grow vec instead of C array. (update_alignments): Assign just LABEL_TO_ALIGNMENT. (shorten_branches): Use align_flags type and use align_flags::max to combine multiple alignments. (final_scan_insn_1): Remove usage of secondary alignment that comes from label alignment, but instead use proper secondary alignment which is computed in grow_label_align. * flags.h (struct align_flags_tuple): Move to align.h. (struct align_flags): Likewise. (state_align_loops): Rename to align_loops. (state_align_jumps): Rename to align_jumps. (state_align_labels): Rename to align_labels. (state_align_functions): Rename to align_functions. (align_loops_log): Remove. (align_jumps_log): Remove. (align_labels_log): Remove. (align_functions_log): Remove. (align_loops_max_skip): Remove. (align_jumps_max_skip): Remove. (align_labels_max_skip): Remove. (align_functions_max_skip): Remove. (align_loops_value): Remove. (align_jumps_value): Remove. (align_labels_value): Remove. (align_functions_value): Remove. * output.h (label_to_alignment): Change return type to align_flags. (label_to_max_skip): Remove. * target.def: Remove loop_align_max_skip, label_align_max_skip, jump_align_max_skip macros. * targhooks.h (default_loop_align_max_skip): Remove. (default_label_align_max_skip): Likewise. (default_jump_align_max_skip): Likewise. (default_label_align_after_barrier_max_skip): Remove. * toplev.c (read_log_maxskip): Use ::normalize function. (parse_N_M): Remove not used argument and also call ::normalize. (parse_alignment_opts): Do not pass unused arguments. * varasm.c (assemble_start_function): Use directly align_functions instead of removed macros. * system.h: Do not poison removed macros. 2018-07-17 Martin Liska <mliska@suse.cz> * gcc.target/powerpc/loop_align.c: Update scanned pattern. From-SVN: r262804
Diffstat (limited to 'gcc/flags.h')
-rw-r--r--gcc/flags.h38
1 files changed, 4 insertions, 34 deletions
diff --git a/gcc/flags.h b/gcc/flags.h
index bfd645b7f29..f025efb4b8e 100644
--- a/gcc/flags.h
+++ b/gcc/flags.h
@@ -42,24 +42,6 @@ extern bool final_insns_dump_p;
/* Other basic status info about current function. */
-/* Align flags tuple with alignment in log form and with a maximum skip. */
-
-struct align_flags_tuple
-{
- /* Values of the -falign-* flags: how much to align labels in code.
- log is "align to 2^log" (so 0 means no alignment).
- maxskip is the maximum allowed amount of padding to insert. */
- int log;
- int maxskip;
-};
-
-/* Target-dependent global state. */
-
-struct align_flags
-{
- align_flags_tuple levels[2];
-};
-
struct target_flag_state
{
/* Each falign-foo can generate up to two levels of alignment:
@@ -80,22 +62,10 @@ extern struct target_flag_state *this_target_flag_state;
#define this_target_flag_state (&default_target_flag_state)
#endif
-#define state_align_loops (this_target_flag_state->x_align_loops)
-#define state_align_jumps (this_target_flag_state->x_align_jumps)
-#define state_align_labels (this_target_flag_state->x_align_labels)
-#define state_align_functions (this_target_flag_state->x_align_functions)
-#define align_loops_log (state_align_loops.levels[0].log)
-#define align_jumps_log (state_align_jumps.levels[0].log)
-#define align_labels_log (state_align_labels.levels[0].log)
-#define align_functions_log (state_align_functions.levels[0].log)
-#define align_loops_max_skip (state_align_loops.levels[0].maxskip)
-#define align_jumps_max_skip (state_align_jumps.levels[0].maxskip)
-#define align_labels_max_skip (state_align_labels.levels[0].maxskip)
-#define align_functions_max_skip (state_align_functions.levels[0].maxskip)
-#define align_loops_value (align_loops_max_skip + 1)
-#define align_jumps_value (align_jumps_max_skip + 1)
-#define align_labels_value (align_labels_max_skip + 1)
-#define align_functions_value (align_functions_max_skip + 1)
+#define align_loops (this_target_flag_state->x_align_loops)
+#define align_jumps (this_target_flag_state->x_align_jumps)
+#define align_labels (this_target_flag_state->x_align_labels)
+#define align_functions (this_target_flag_state->x_align_functions)
/* String representaions of the above options are available in
const char *str_align_foo. NULL if not set. */