diff options
author | Marek Polacek <polacek@redhat.com> | 2016-05-04 13:46:15 +0000 |
---|---|---|
committer | Marek Polacek <mpolacek@gcc.gnu.org> | 2016-05-04 13:46:15 +0000 |
commit | de55efd5a26ac59b22099af9384d9014ca522576 (patch) | |
tree | 497a6cd6c5659738c48cd499a417ed9968eae538 /gcc/c | |
parent | ec6be46228e05303e920886d1baf66323457738b (diff) | |
download | gcc-de55efd5a26ac59b22099af9384d9014ca522576.zip gcc-de55efd5a26ac59b22099af9384d9014ca522576.tar.gz gcc-de55efd5a26ac59b22099af9384d9014ca522576.tar.bz2 |
re PR c/48778 (gcc 4.6 -Waddress adds unhelpful new warning case when using from a macro)
PR c/48778
* c-typeck.c (build_binary_op): Don't issue -Waddress warnings
for macro expansions.
* gcc.dg/Waddress-2.c: New test.
From-SVN: r235878
Diffstat (limited to 'gcc/c')
-rw-r--r-- | gcc/c/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/c/c-typeck.c | 6 |
2 files changed, 10 insertions, 2 deletions
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 8ac13e3..517a8c6 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,9 @@ +2016-05-04 Marek Polacek <polacek@redhat.com> + + PR c/48778 + * c-typeck.c (build_binary_op): Don't issue -Waddress warnings + for macro expansions. + 2016-05-03 Marek Polacek <polacek@redhat.com> PR c/70859 diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c index 204702e..861aa12 100644 --- a/gcc/c/c-typeck.c +++ b/gcc/c/c-typeck.c @@ -11067,7 +11067,8 @@ build_binary_op (location_t location, enum tree_code code, else if (code0 == POINTER_TYPE && null_pointer_constant_p (orig_op1)) { if (TREE_CODE (op0) == ADDR_EXPR - && decl_with_nonnull_addr_p (TREE_OPERAND (op0, 0))) + && decl_with_nonnull_addr_p (TREE_OPERAND (op0, 0)) + && !from_macro_expansion_at (location)) { if (code == EQ_EXPR) warning_at (location, @@ -11087,7 +11088,8 @@ build_binary_op (location_t location, enum tree_code code, else if (code1 == POINTER_TYPE && null_pointer_constant_p (orig_op0)) { if (TREE_CODE (op1) == ADDR_EXPR - && decl_with_nonnull_addr_p (TREE_OPERAND (op1, 0))) + && decl_with_nonnull_addr_p (TREE_OPERAND (op1, 0)) + && !from_macro_expansion_at (location)) { if (code == EQ_EXPR) warning_at (location, |