diff options
author | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2016-02-26 16:02:21 +0000 |
---|---|---|
committer | Kyrylo Tkachov <ktkachov@gcc.gnu.org> | 2016-02-26 16:02:21 +0000 |
commit | 6cfccbb231b0b4a94094ae59344c61e6380fee27 (patch) | |
tree | 3b03a463c18e96eca2efc620683dadd67c12a917 /gcc | |
parent | ac59ad4efc2f01ea4aaae648d59195616e3fa894 (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/aarch64/pr69245_1.c | 18 |
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" } } */ |