From df592811f950301ed3b10a08e476dad0f2eff26a Mon Sep 17 00:00:00 2001 From: Martin Liska Date: Mon, 4 Oct 2021 14:06:14 +0200 Subject: [PATCH] target: support spaces in target attribute. PR target/102374 gcc/ChangeLog: * config/i386/i386-options.c (ix86_valid_target_attribute_inner_p): Strip whitespaces. * system.h (strip_whilespaces): New function. gcc/testsuite/ChangeLog: * gcc.target/i386/pr102374.c: New test. --- gcc/config/i386/i386-options.c | 2 ++ gcc/system.h | 21 +++++++++++++++++++++ gcc/testsuite/gcc.target/i386/pr102374.c | 3 +++ 3 files changed, 26 insertions(+) create mode 100644 gcc/testsuite/gcc.target/i386/pr102374.c diff --git a/gcc/config/i386/i386-options.c b/gcc/config/i386/i386-options.c index e7a3bd4..c9523b2 100644 --- a/gcc/config/i386/i386-options.c +++ b/gcc/config/i386/i386-options.c @@ -1146,6 +1146,8 @@ ix86_valid_target_attribute_inner_p (tree fndecl, tree args, char *p_strings[], next_optstr = NULL; } + p = strip_whitespaces (p, &len); + /* Recognize no-xxx. */ if (len > 3 && p[0] == 'n' && p[1] == 'o' && p[2] == '-') { diff --git a/gcc/system.h b/gcc/system.h index adde3e2..17a6a55 100644 --- a/gcc/system.h +++ b/gcc/system.h @@ -1305,4 +1305,25 @@ startswith (const char *str, const char *prefix) return strncmp (str, prefix, strlen (prefix)) == 0; } +/* Strip white spaces from STRING with LEN length. + A stripped string is returned and LEN is updated accordingly. */ + +static inline char * +strip_whitespaces (char *string, size_t *len) +{ + while (string[0] == ' ' || string[0] == '\t') + { + --(*len); + ++string; + } + + while (string[*len - 1] == ' ' || string[*len - 1] == '\t') + { + string[*len - 1] = '\0'; + --(*len); + } + + return string; +} + #endif /* ! GCC_SYSTEM_H */ diff --git a/gcc/testsuite/gcc.target/i386/pr102374.c b/gcc/testsuite/gcc.target/i386/pr102374.c new file mode 100644 index 0000000..21aa760 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr102374.c @@ -0,0 +1,3 @@ +/* PR target/102374 */ + +void calculate_sse(void) __attribute__ ((__target__ (" no-avx, sse2 "))); -- 2.7.4