re PR target/66015 (align directives not propagated after __attribute__ ((__optimize__ ("O2"))))
PR target/66015 * config/alpha/alpha.c (alpha_override_options_after_change): New. (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New. (alpha_override_options): Move align_loops, align_jumps and align_functions handling into alpha_override_options_after_change. From-SVN: r222870
This commit is contained in:
parent
06cb4b647a
commit
ad2c39af63
2 changed files with 32 additions and 11 deletions
|
@ -1,3 +1,11 @@
|
|||
2015-05-07 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/66015
|
||||
* config/alpha/alpha.c (alpha_override_options_after_change): New.
|
||||
(TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
|
||||
(alpha_override_options): Move align_loops, align_jumps and
|
||||
align_functions handling into alpha_override_options_after_change.
|
||||
|
||||
2015-05-06 Sandra Loosemore <sandra@codesourcery.com>
|
||||
Chris Jones <chrisj@nvidia.com>
|
||||
Joshua Conner <jconner@nvidia.com>
|
||||
|
|
|
@ -241,6 +241,7 @@ static struct machine_function *alpha_init_machine_status (void);
|
|||
static rtx alpha_emit_xfloating_compare (enum rtx_code *, rtx, rtx);
|
||||
static void alpha_handle_trap_shadows (void);
|
||||
static void alpha_align_insns (void);
|
||||
static void alpha_override_options_after_change (void);
|
||||
|
||||
#if TARGET_ABI_OPEN_VMS
|
||||
static void alpha_write_linkage (FILE *, const char *);
|
||||
|
@ -628,17 +629,7 @@ alpha_option_override (void)
|
|||
else if (flag_pic == 2)
|
||||
target_flags &= ~MASK_SMALL_DATA;
|
||||
|
||||
/* Align labels and loops for optimal branching. */
|
||||
/* ??? Kludge these by not doing anything if we don't optimize. */
|
||||
if (optimize > 0)
|
||||
{
|
||||
if (align_loops <= 0)
|
||||
align_loops = 16;
|
||||
if (align_jumps <= 0)
|
||||
align_jumps = 16;
|
||||
}
|
||||
if (align_functions <= 0)
|
||||
align_functions = 16;
|
||||
alpha_override_options_after_change ();
|
||||
|
||||
/* Register variables and functions with the garbage collector. */
|
||||
|
||||
|
@ -662,6 +653,24 @@ alpha_option_override (void)
|
|||
register_pass (&handle_trap_shadows_info);
|
||||
register_pass (&align_insns_info);
|
||||
}
|
||||
|
||||
/* Implement targetm.override_options_after_change. */
|
||||
|
||||
static void
|
||||
alpha_override_options_after_change (void)
|
||||
{
|
||||
/* Align labels and loops for optimal branching. */
|
||||
/* ??? Kludge these by not doing anything if we don't optimize. */
|
||||
if (optimize > 0)
|
||||
{
|
||||
if (align_loops <= 0)
|
||||
align_loops = 16;
|
||||
if (align_jumps <= 0)
|
||||
align_jumps = 16;
|
||||
}
|
||||
if (align_functions <= 0)
|
||||
align_functions = 16;
|
||||
}
|
||||
|
||||
/* Returns 1 if VALUE is a mask that contains full bytes of zero or ones. */
|
||||
|
||||
|
@ -10098,6 +10107,10 @@ alpha_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update)
|
|||
#undef TARGET_OPTION_OVERRIDE
|
||||
#define TARGET_OPTION_OVERRIDE alpha_option_override
|
||||
|
||||
#undef TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE
|
||||
#define TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE \
|
||||
alpha_override_options_after_change
|
||||
|
||||
#ifdef TARGET_ALTERNATE_LONG_DOUBLE_MANGLING
|
||||
#undef TARGET_MANGLE_TYPE
|
||||
#define TARGET_MANGLE_TYPE alpha_mangle_type
|
||||
|
|
Loading…
Add table
Reference in a new issue