aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>2016-02-26 16:02:21 +0000
committerKyrylo Tkachov <ktkachov@gcc.gnu.org>2016-02-26 16:02:21 +0000
commit6cfccbb231b0b4a94094ae59344c61e6380fee27 (patch)
tree3b03a463c18e96eca2efc620683dadd67c12a917 /gcc
parentac59ad4efc2f01ea4aaae648d59195616e3fa894 (diff)
downloadgcc-6cfccbb231b0b4a94094ae59344c61e6380fee27.zip
gcc-6cfccbb231b0b4a94094ae59344c61e6380fee27.tar.gz
gcc-6cfccbb231b0b4a94094ae59344c61e6380fee27.tar.bz2
[AArch64] Set TREE_TARGET_GLOBALS in aarch64_set_current_function when new tree is the default node to recalculate optab availability
PR target/69245 * config/aarch64/aarch64.c (aarch64_set_current_function): Save/restore target globals when switching to target_option_default_node. * gcc.target/aarch64/pr69245_1.c: New test. From-SVN: r233745
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/aarch64/aarch64.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/aarch64/pr69245_1.c18
4 files changed, 31 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 916c381..a34883e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,12 @@
2016-02-26 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-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
PR target/69613
* config/aarch64/aarch64.c (aarch64_shift_truncation_mask):
Return 0 if !SHIFT_COUNT_TRUNCATED.
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index 30d6f41..3519c7b 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -8576,7 +8576,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/ChangeLog b/gcc/testsuite/ChangeLog
index d5b890d..99e0f2f 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2016-02-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+ PR target/69245
+ * gcc.target/aarch64/pr69245_1.c: New test.
+
+2016-02-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
PR target/69613
* gcc.dg/torture/pr69613.c: New test.
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 0000000..dcc542b
--- /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" } } */