From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1851) id EE240385781A; Thu, 13 May 2021 12:04:02 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org EE240385781A Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Martin Liska To: gcc-cvs@gcc.gnu.org Subject: [gcc(refs/users/marxin/heads/PR100504-target_clones-non-str)] attributes: target_clone expects a string argument X-Act-Checkin: gcc X-Git-Author: Martin Liska X-Git-Refname: refs/users/marxin/heads/PR100504-target_clones-non-str X-Git-Oldrev: 23eb66d1d46a34cb28c4acbdf8a1deb80a7c5a05 X-Git-Newrev: d5177ceb9a05cb43a7555fe520a3a1e19e6cd201 Message-Id: <20210513120402.EE240385781A@sourceware.org> Date: Thu, 13 May 2021 12:04:02 +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: Thu, 13 May 2021 12:04:03 -0000 https://gcc.gnu.org/g:d5177ceb9a05cb43a7555fe520a3a1e19e6cd201 commit d5177ceb9a05cb43a7555fe520a3a1e19e6cd201 Author: Martin Liska Date: Thu May 13 13:59:59 2021 +0200 attributes: target_clone expects a string argument PR middle-end/100504 gcc/c-family/ChangeLog: * c-attribs.c (handle_target_clones_attribute): Expect a string argument to target_clone argument. gcc/testsuite/ChangeLog: * gcc.target/i386/pr100504.c: New test. Diff: --- gcc/c-family/c-attribs.c | 6 ++++++ gcc/testsuite/gcc.target/i386/pr100504.c | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/gcc/c-family/c-attribs.c b/gcc/c-family/c-attribs.c index c1f652d1dc9..9905ee56947 100644 --- a/gcc/c-family/c-attribs.c +++ b/gcc/c-family/c-attribs.c @@ -5300,6 +5300,12 @@ handle_target_clones_attribute (tree *node, tree name, tree ARG_UNUSED (args), "with %qs attribute", name, "target"); *no_add_attrs = true; } + else if (TREE_CODE (TREE_VALUE (args)) != STRING_CST) + { + error ("%qE attribute argument not a string constant", name); + *no_add_attrs = true; + } + else /* Do not inline functions with multiple clone targets. */ DECL_UNINLINABLE (*node) = 1; diff --git a/gcc/testsuite/gcc.target/i386/pr100504.c b/gcc/testsuite/gcc.target/i386/pr100504.c new file mode 100644 index 00000000000..2910dfb948b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr100504.c @@ -0,0 +1,7 @@ +/* PR middle-end/100504 */ +/* { dg-do compile } */ + +__attribute__((target_clones(0))) +foo() +{ /* { dg-error ".target_clones. attribute argument not a string constant" } */ +}