Hi!

While -falign-{functions,jumps,labels,loops} are marked Optimization,
-falign-{functions,jumps,labels,loops}= are not.  They use the same Var(),
for that it makes no difference, but it means we reject them in optimize
attribute starting with r237174.

Fixed thusly, bootstrapped/regtested on x86_64-linux and i686-linux, ok for
trunk?

2018-01-30  Jakub Jelinek  <ja...@redhat.com>

        PR c/84100
        * common.opt (falign-functions=, falign-jumps=, falign-labels=,
        falign-loops=): Add Optimization flag.

        * gcc.dg/pr84100.c: New test.

--- gcc/common.opt.jj   2018-01-18 21:11:58.664207128 +0100
+++ gcc/common.opt      2018-01-30 14:53:25.091842202 +0100
@@ -954,7 +954,7 @@ Common Report Var(align_functions,0) Opt
 Align the start of functions.
 
 falign-functions=
-Common RejectNegative Joined UInteger Var(align_functions)
+Common RejectNegative Joined UInteger Var(align_functions) Optimization
 
 flimit-function-alignment
 Common Report Var(flag_limit_function_alignment) Optimization Init(0)
@@ -964,21 +964,21 @@ Common Report Var(align_jumps,0) Optimiz
 Align labels which are only reached by jumping.
 
 falign-jumps=
-Common RejectNegative Joined UInteger Var(align_jumps)
+Common RejectNegative Joined UInteger Var(align_jumps) Optimization
 
 falign-labels
 Common Report Var(align_labels,0) Optimization UInteger
 Align all labels.
 
 falign-labels=
-Common RejectNegative Joined UInteger Var(align_labels)
+Common RejectNegative Joined UInteger Var(align_labels) Optimization
 
 falign-loops
 Common Report Var(align_loops,0) Optimization UInteger
 Align the start of loops.
 
 falign-loops=
-Common RejectNegative Joined UInteger Var(align_loops)
+Common RejectNegative Joined UInteger Var(align_loops) Optimization
 
 fargument-alias
 Common Ignore
--- gcc/testsuite/gcc.dg/pr84100.c.jj   2018-01-30 15:01:59.243703278 +0100
+++ gcc/testsuite/gcc.dg/pr84100.c      2018-01-30 15:00:30.569726685 +0100
@@ -0,0 +1,14 @@
+/* PR c/84100 */
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+void bar (void);
+
+__attribute__((optimize ("align-loops=16", "align-jumps=16",
+                        "align-labels=16", "align-functions=16")))
+void
+foo (void)
+{                      /* { dg-bogus "bad option" } */
+  for (int i = 0; i < 1024; ++i)
+    bar ();
+}

        Jakub

Reply via email to