Hello!

2015-05-07  Uros Bizjak  <ubiz...@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.

Tested on alphaev68-linux-gnu and committed to mainline SVN. The patch
will be backported to 5.0 branch.

Uros.
Index: config/alpha/alpha.c
===================================================================
--- config/alpha/alpha.c        (revision 222844)
+++ config/alpha/alpha.c        (working copy)
@@ -241,6 +241,7 @@ static struct machine_function *alpha_init_machine
 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
 #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

Reply via email to