aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2019-04-05 14:56:53 +0000
committerMarek Polacek <mpolacek@gcc.gnu.org>2019-04-05 14:56:53 +0000
commit05564120c6b6e3850faa3586824c298f76cc3985 (patch)
treeba3bac0f85dc21bff732a291433b6dc787c55504 /gcc
parent25eafae67f186cfa4c0fd0f89f743d7707d5bf21 (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/c-family/c-warn.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/warn/Waddress-of-packed-member2.C7
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" }