diff options
author | Marek Polacek <polacek@redhat.com> | 2019-04-05 14:56:53 +0000 |
---|---|---|
committer | Marek Polacek <mpolacek@gcc.gnu.org> | 2019-04-05 14:56:53 +0000 |
commit | 05564120c6b6e3850faa3586824c298f76cc3985 (patch) | |
tree | ba3bac0f85dc21bff732a291433b6dc787c55504 /gcc | |
parent | 25eafae67f186cfa4c0fd0f89f743d7707d5bf21 (diff) | |
download | gcc-05564120c6b6e3850faa3586824c298f76cc3985.zip gcc-05564120c6b6e3850faa3586824c298f76cc3985.tar.gz gcc-05564120c6b6e3850faa3586824c298f76cc3985.tar.bz2 |
PR c++/89973 - -Waddress-of-packed-member ICE with invalid conversion.
PR c++/89973 - -Waddress-of-packed-member ICE with invalid conversion.
* c-warn.c (check_address_or_pointer_of_packed_member): Check the type
of RHS.
* g++.dg/warn/Waddress-of-packed-member2.C: New test.
From-SVN: r270166
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/c-family/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/c-family/c-warn.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/Waddress-of-packed-member2.C | 7 |
4 files changed, 19 insertions, 1 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index ae6b8a7..5cce5de 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,9 @@ +2019-04-05 Marek Polacek <polacek@redhat.com> + + PR c++/89973 - -Waddress-of-packed-member ICE with invalid conversion. + * c-warn.c (check_address_or_pointer_of_packed_member): Check the type + of RHS. + 2019-04-03 Jason Merrill <jason@redhat.com> PR c++/86586 - -fcompare-debug=-Wsign-compare. diff --git a/gcc/c-family/c-warn.c b/gcc/c-family/c-warn.c index 4785887..05ea2bf 100644 --- a/gcc/c-family/c-warn.c +++ b/gcc/c-family/c-warn.c @@ -2769,7 +2769,7 @@ check_address_or_pointer_of_packed_member (tree type, tree rhs) rhs = TREE_TYPE (rhs); /* Pointer type. */ rhs = TREE_TYPE (rhs); /* Function type. */ rhstype = TREE_TYPE (rhs); - if (!POINTER_TYPE_P (rhstype)) + if (!rhstype || !POINTER_TYPE_P (rhstype)) return NULL_TREE; rvalue = true; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e19a1b8..4a9fd96 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-04-05 Marek Polacek <polacek@redhat.com> + + PR c++/89973 - -Waddress-of-packed-member ICE with invalid conversion. + * g++.dg/warn/Waddress-of-packed-member2.C: New test. + 2019-04-05 Richard Biener <rguenther@suse.de> PR debug/89892 diff --git a/gcc/testsuite/g++.dg/warn/Waddress-of-packed-member2.C b/gcc/testsuite/g++.dg/warn/Waddress-of-packed-member2.C new file mode 100644 index 0000000..e9bf7ca --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Waddress-of-packed-member2.C @@ -0,0 +1,7 @@ +// PR c++/89973 +// { dg-do compile { target c++14 } } + +constexpr int a(); // { dg-warning "used but never defined" } + +template <typename> +constexpr void *b = a(); // { dg-error "invalid conversion" } |