public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Kyrill Tkachov <kyrylo.tkachov@foss.arm.com>
To: GCC Patches <gcc-patches@gcc.gnu.org>
Cc: Marcus Shawcroft <marcus.shawcroft@arm.com>,
	 Richard Earnshaw <Richard.Earnshaw@arm.com>,
	James Greenhalgh <james.greenhalgh@arm.com>
Subject: [PATCH][AArch64] Set TREE_TARGET_GLOBALS in aarch64_set_current_function when new tree is the default node to recalculate optab availability
Date: Thu, 25 Feb 2016 11:04:00 -0000	[thread overview]
Message-ID: <56CEDFB5.8050707@foss.arm.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 1137 bytes --]

Hi all,

Seems like aarch64 is suffering from something similar to PR 69245 as well.
If a target pragma sets the target state to the same as the target_option_default_node
the node is just a pointer to target_option_default_node rather than a distinct identical
node. So we must still restore the target globals even when setting to target_option_default_node
in order to force the midend to recompute the availability of various optabs.

If we don't do it, we can get in a problem like in the testcase where the isa_flags are all
set correctly, but the optab HAVE_* predicates have not been recomputed.

There is also a related issue present when popping/resetting target pragmas for which
I'll send out a patch separately.

Bootstrapped and tested on aarch64.

Ok for trunk?
Thanks,
Kyrill


2016-02-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

     PR target/69245
     * config/aarch64/aarch64.c (aarch64_set_current_function): Save/restore
     target globals when switching to target_option_default_node.

2016-02-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

     PR target/69245
     * gcc.target/aarch64/pr69245_1.c: New test.

[-- Attachment #2: aarch64-set-func-default.patch --]
[-- Type: text/x-patch, Size: 1139 bytes --]

diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index 2e69e345545e591d1de76c2d175aac476e6e1107..07590bd43ca81e182ab1e2ba9596cf6881173729 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -8593,7 +8593,7 @@ aarch64_set_current_function (tree fndecl)
       if (old_tree == new_tree)
 	;
 
-      else if (new_tree && new_tree != target_option_default_node)
+      else if (new_tree)
 	{
 	  cl_target_option_restore (&global_options,
 				    TREE_TARGET_OPTION (new_tree));
diff --git a/gcc/testsuite/gcc.target/aarch64/pr69245_1.c b/gcc/testsuite/gcc.target/aarch64/pr69245_1.c
new file mode 100644
index 0000000000000000000000000000000000000000..dcc542b2a8686f1b323433624d4df65ca9e96b36
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/pr69245_1.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -march=armv8-a+fp -fomit-frame-pointer" } */
+
+#pragma GCC target "arch=armv8-a+nofp"
+long a;
+static void
+fn1 ()
+{
+}
+
+#pragma GCC target "arch=armv8-a+fp"
+float
+fn2 (float a)
+{
+  return a + 2.0;
+}
+
+/* { dg-final { scan-assembler-not "__addsf3" } } */

             reply	other threads:[~2016-02-25 11:04 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-25 11:04 Kyrill Tkachov [this message]
2016-02-26 15:51 ` James Greenhalgh
2016-02-29 14:10   ` Christophe Lyon
2016-02-29 14:28     ` Kyrill Tkachov
2016-02-29 14:33       ` Christophe Lyon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=56CEDFB5.8050707@foss.arm.com \
    --to=kyrylo.tkachov@foss.arm.com \
    --cc=Richard.Earnshaw@arm.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=james.greenhalgh@arm.com \
    --cc=marcus.shawcroft@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).