re PR target/69180 ([ARM] #pragma GCC target should not warn about redefined macros)

PR target/69180
* config/arm/arm-c.c (arm_pragma_target_parse): Set NODE_CONDITIONAL
for __ARM_NEON_FP, __ARM_FP, _ARM_FEATURE_LDREX.

From-SVN: r232276
This commit is contained in:
Christian Bruel 2016-01-12 16:01:12 +01:00 committed by Christian Bruel
parent 0d1ed41261
commit 81b9a3d9f5
3 changed files with 24 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2016-01-12 Christian Bruel <christian.bruel@st.com>
PR target/69180
* config/arm/arm-c.c (arm_pragma_target_parse): Set NODE_CONDITIONAL
for __ARM_NEON_FP, __ARM_FP, _ARM_FEATURE_LDREX.
2016-01-12 Jakub Jelinek <jakub@redhat.com>
PR target/69198

View File

@ -23,6 +23,7 @@
#include "c-family/c-common.h"
#include "tm_p.h"
#include "c-family/c-pragma.h"
#include "stringpool.h"
/* Output C specific EABI object attributes. These can not be done in
arm.c because they require information from the C frontend. */
@ -245,8 +246,18 @@ arm_pragma_target_parse (tree args, tree pop_target)
/* Update macros. */
gcc_assert (cur_opt->x_target_flags == target_flags);
/* This one can be redefined by the pragma without warning. */
cpp_undef (parse_in, "__ARM_FP");
/* Don't warn for macros that have context sensitive values depending on
other attributes.
See warn_of_redefinition, Reset after cpp_create_definition. */
tree acond_macro = get_identifier ("__ARM_NEON_FP");
C_CPP_HASHNODE (acond_macro)->flags |= NODE_CONDITIONAL ;
acond_macro = get_identifier ("__ARM_FP");
C_CPP_HASHNODE (acond_macro)->flags |= NODE_CONDITIONAL;
acond_macro = get_identifier ("__ARM_FEATURE_LDREX");
C_CPP_HASHNODE (acond_macro)->flags |= NODE_CONDITIONAL;
arm_cpu_builtins (parse_in);

View File

@ -1,3 +1,8 @@
2016-01-12 Christian Bruel <christian.bruel@st.com>
PR target/69180
* gcc.target/arm/pr69180.c: New test.
2016-01-12 Richard Biener <rguenther@suse.de>
PR lto/69077