@@ -2728,17 +2728,19 @@ assembly output.
Passes if @var{symbol} is not defined as a hidden symbol in the test's
assembly output.
-@item check-function-bodies @var{prefix} @var{terminator} [@var{option} [@{ target/xfail @var{selector} @}]]
+@item check-function-bodies @var{prefix} @var{terminator} [@var{options} [@{ target/xfail @var{selector} @}]]
Looks through the source file for comments that give the expected assembly
output for selected functions. Each line of expected output starts with the
prefix string @var{prefix} and the expected output for a function as a whole
is followed by a line that starts with the string @var{terminator}.
Specifying an empty terminator is equivalent to specifying @samp{"*/"}.
-If @var{option} is specified, the test only applies to command lines
-that contain @var{option}. This can be useful if a source file is compiled
-both with and without optimization, since it is rarely useful to check the
-assembly output for unoptimized code.
+@var{options}, if specified, is a list of regular expressions, each of
+which matches a full command-line option. A non-empty list prevents
+the test from running unless all of the given options are present on the
+command line. This can help if a source file is compiled both with
+and without optimization, since it is rarely useful to check the full
+function body for unoptimized code.
The first line of the expected output for a function @var{fn} has the form:
@@ -617,7 +617,7 @@ proc check-function-bodies { args } {
}
if { [llength $args] >= 3 } {
- set required_flag [lindex $args 2]
+ set required_flags [lindex $args 2]
upvar 2 dg-extra-tool-flags extra_tool_flags
set flags $extra_tool_flags
@@ -626,8 +626,18 @@ proc check-function-bodies { args } {
if { [info exists torture_current_flags] } {
append flags " " $torture_current_flags
}
- if { ![regexp " $required_flag " $flags] } {
- return
+ foreach required_flag $required_flags {
+ switch -- $required_flag {
+ target -
+ xfail {
+ error "misplaced $required_flag in check-function-bodies"
+ }
+ }
+ }
+ foreach required_flag $required_flags {
+ if { ![regexp " $required_flag " $flags] } {
+ return
+ }
}
}
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <arm_sve.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -fno-stack-clash-protection -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <arm_sve.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -fno-stack-clash-protection -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <arm_sve.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -fno-stack-clash-protection -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <arm_sve.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
/*
** callee_pred:
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -msve-vector-bits=1024 -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
/*
** callee_pred:
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -msve-vector-bits=128 -g" } */
-/* { dg-final { check-function-bodies "**" "" { target { aarch64_little_endian && lp64 } } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target { aarch64_little_endian && lp64 } } } } */
/*
** callee_pred:
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -msve-vector-bits=2048 -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
/*
** callee_pred:
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -msve-vector-bits=256 -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
/*
** callee_pred:
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -msve-vector-bits=512 -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
/*
** callee_pred:
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <arm_sve.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <arm_sve.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#define CALLEE(SUFFIX, TYPE) \
TYPE __attribute__((noipa)) \
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -msve-vector-bits=1024 -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#define CALLEE(SUFFIX, TYPE) \
TYPE __attribute__((noipa)) \
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -msve-vector-bits=128 -g" } */
-/* { dg-final { check-function-bodies "**" "" { target { aarch64_little_endian && lp64 } } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target { aarch64_little_endian && lp64 } } } } */
#define CALLEE(SUFFIX, TYPE) \
TYPE __attribute__((noipa)) \
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -msve-vector-bits=2048 -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#define CALLEE(SUFFIX, TYPE) \
TYPE __attribute__((noipa)) \
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -msve-vector-bits=256 -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#define CALLEE(SUFFIX, TYPE) \
TYPE __attribute__((noipa)) \
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -msve-vector-bits=512 -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#define CALLEE(SUFFIX, TYPE) \
TYPE __attribute__((noipa)) \
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <arm_sve.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -msve-vector-bits=1024 -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <arm_sve.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -msve-vector-bits=128 -g" } */
-/* { dg-final { check-function-bodies "**" "" { target { aarch64_little_endian && lp64 } } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target { aarch64_little_endian && lp64 } } } } */
#include <arm_sve.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -msve-vector-bits=2048 -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <arm_sve.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -msve-vector-bits=256 -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <arm_sve.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -msve-vector-bits=512 -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <arm_sve.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <stdint.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -msve-vector-bits=1024 -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <stdint.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -msve-vector-bits=128 -g" } */
-/* { dg-final { check-function-bodies "**" "" { target { aarch64_little_endian && lp64 } } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target { aarch64_little_endian && lp64 } } } } */
#include <stdint.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -msve-vector-bits=2048 -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <stdint.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -msve-vector-bits=256 -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <stdint.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -msve-vector-bits=512 -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <stdint.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -mbig-endian -fno-shrink-wrap -fno-stack-clash-protection -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
void standard_callee (void);
__attribute__((aarch64_vector_pcs)) void vpcs_callee (void);
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -mbig-endian -fshrink-wrap -fno-stack-clash-protection -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
void standard_callee (void);
__attribute__((aarch64_vector_pcs)) void vpcs_callee (void);
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -mlittle-endian -fno-shrink-wrap -fno-stack-clash-protection -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
void standard_callee (void);
__attribute__((aarch64_vector_pcs)) void vpcs_callee (void);
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -mlittle-endian -fshrink-wrap -fno-stack-clash-protection -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
void standard_callee (void);
__attribute__((aarch64_vector_pcs)) void vpcs_callee (void);
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <arm_sve.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -mbig-endian -fno-stack-clash-protection -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
void standard_callee (__SVInt8_t *);
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -mlittle-endian -fno-stack-clash-protection -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
void standard_callee (__SVInt8_t *);
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -fshrink-wrap -fstack-clash-protection -msve-vector-bits=128 -g" } */
-/* { dg-final { check-function-bodies "**" "" { target { aarch64_little_endian && lp64 } } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target { aarch64_little_endian && lp64 } } } } */
#pragma GCC aarch64 "arm_sve.h"
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fno-stack-clash-protection -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <arm_sve.h>
#include <stdarg.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fno-stack-clash-protection -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <arm_sve.h>
#include <stdarg.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fno-stack-clash-protection -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <arm_sve.h>
#include <stdarg.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fno-stack-clash-protection -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <arm_sve.h>
#include <stdarg.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fno-stack-clash-protection -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <arm_sve.h>
#include <stdarg.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fno-stack-clash-protection -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <arm_sve.h>
#include <stdarg.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fno-stack-clash-protection -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <arm_sve.h>
#include <stdarg.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fno-stack-clash-protection -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <arm_sve.h>
#include <stdarg.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fno-stack-clash-protection -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <arm_sve.h>
#include <stdarg.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fno-stack-clash-protection -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <arm_sve.h>
#include <stdarg.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fno-stack-clash-protection -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <arm_sve.h>
#include <stdarg.h>
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fno-stack-clash-protection -g" } */
-/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */
+/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include <arm_sve.h>
#include <stdarg.h>