From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1851) id 8DDDB385842B; Tue, 19 Oct 2021 06:51:53 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8DDDB385842B MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Martin Liska To: gcc-cvs@gcc.gnu.org Subject: [gcc r12-4489] target: support spaces in target attribute. X-Act-Checkin: gcc X-Git-Author: Martin Liska X-Git-Refname: refs/heads/master X-Git-Oldrev: 38f6ee6bfc4633175ca6f6d29e597d379ccae820 X-Git-Newrev: df592811f950301ed3b10a08e476dad0f2eff26a Message-Id: <20211019065153.8DDDB385842B@sourceware.org> Date: Tue, 19 Oct 2021 06:51:53 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Oct 2021 06:51:53 -0000 https://gcc.gnu.org/g:df592811f950301ed3b10a08e476dad0f2eff26a commit r12-4489-gdf592811f950301ed3b10a08e476dad0f2eff26a Author: Martin Liska Date: Mon Oct 4 14:06:14 2021 +0200 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. Diff: --- gcc/config/i386/i386-options.c | 2 ++ gcc/system.h | 21 +++++++++++++++++++++ gcc/testsuite/gcc.target/i386/pr102374.c | 3 +++ 3 files changed, 26 insertions(+) diff --git a/gcc/config/i386/i386-options.c b/gcc/config/i386/i386-options.c index e7a3bd4aaea..c9523b26f49 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 adde3e264b6..17a6a553b0b 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 00000000000..21aa76011ed --- /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 ")));