@item non_strict_align
Target does not require strict alignment.
+@item opt_mstrict_align
+Target supports @option{-mstrict-align} and @option{-mno-strict-align}.
+
@item pie_copyreloc
The x86-64 target linker supports PIE with copy reloc.
{ dg-options "-O2 -Wall -fdump-tree-optimized" }
{ dg-additional-options "-msse" { target i?86-*-* x86_64-*-* } } */
+/* On powerpc configurations that have -mstrict-align by default,
+ the memcpy calls for ncpylog >= 3 are not turned into MEM_REFs.
+ { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
#define CHAR_BIT __CHAR_BIT__
#define SIZE_MAX __SIZE_MAX__
#define LEN_MAX (__PTRDIFF_MAX__ - 2)
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Test for that only vectorize the epilogue with vector access with length,
the main body still use normal vector load/store. */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Test for that only vectorize the epilogue with vector access with length,
the main body still use normal vector load/store. */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Test for that only vectorize the epilogue with vector access with length,
the main body still use normal vector load/store. */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Test for that only vectorize the epilogue with vector access with length,
the main body still use normal vector load/store. */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Test for that only vectorize the epilogue with vector access with length,
the main body still use normal vector load/store. */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Test for that only vectorize the epilogue with vector access with length,
the main body still use normal vector load/store. */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Test for that only vectorize the epilogue with vector access with length,
the main body still use normal vector load/store. */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Test for that only vectorize the epilogue with vector access with length,
the main body still use normal vector load/store. */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Check whether it runs successfully if we only vectorize the epilogue
with vector access with length. */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Check whether it runs successfully if we only vectorize the epilogue
with vector access with length. */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Check whether it runs successfully if we only vectorize the epilogue
with vector access with length. */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Check whether it runs successfully if we only vectorize the epilogue
with vector access with length. */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Check whether it runs successfully if we only vectorize the epilogue
with vector access with length. */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Check whether it runs successfully if we only vectorize the epilogue
with vector access with length. */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Check whether it runs successfully if we only vectorize the epilogue
with vector access with length. */
/* { dg-additional-options "--param=vect-partial-vector-usage=1" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Check whether it runs successfully if we only vectorize the epilogue
with vector access with length. */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Test for fully with length, the loop body uses vector access with length,
there should not be any epilogues. */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Test for fully with length, the loop body uses vector access with length,
there should not be any epilogues. */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Test for fully with length, the loop body uses vector access with length,
there should not be any epilogues. */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Test for fully with length, the loop body uses vector access with length,
there should not be any epilogues. */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Test for fully with length, the loop body uses vector access with length,
there should not be any epilogues. */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Test for fully with length, the loop body uses vector access with length,
there should not be any epilogues. */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Test for fully with length, the loop body uses vector access with length,
there should not be any epilogues. */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Test for fully with length, the loop body uses vector access with length,
there should not be any epilogues. */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Check whether it runs successfully if we vectorize the loop fully
with vector access with length. */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Check whether it runs successfully if we vectorize the loop fully
with vector access with length. */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Check whether it runs successfully if we vectorize the loop fully
with vector access with length. */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Check whether it runs successfully if we vectorize the loop fully
with vector access with length. */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Check whether it runs successfully if we vectorize the loop fully
with vector access with length. */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Check whether it runs successfully if we vectorize the loop fully
with vector access with length. */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Check whether it runs successfully if we vectorize the loop fully
with vector access with length. */
/* { dg-additional-options "--param=vect-partial-vector-usage=2" } */
+/* { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
+
/* Check whether it runs successfully if we vectorize the loop fully
with vector access with length. */
/* { dg-require-effective-target powerpc_prefixed_addr } */
/* { dg-require-effective-target lp64 } */
/* { dg-options "-O2 -mdejagnu-cpu=power10" } */
+/* If -mstrict-align is enabled by default, we don't get the expected opcodes.
+ { dg-additional-options "-mno-strict-align" { target opt_mstrict_align } } */
/* Tests whether we generate a prefixed load/store operation for addresses that
don't meet DS/DQ offset constraints. 64-bit is needed for testing the use
} "-Wcast-align"]
}
+# Return 1 if the target supports -mstrict-align (and -mno-strict-align).
+
+proc check_effective_target_opt_mstrict_align {} {
+ return [check_no_compiler_messages opt_mstrict_align assembly {
+ void foo(void) {}
+ } "-mstrict-align -mno-strict-align"]
+}
+
# Return 1 if the target has <ucontext.h>.
proc check_effective_target_ucontext_h { } {