aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2015-02-12 16:38:33 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2015-02-12 16:38:33 +0100
commit40595b8e01bd43d5c58b5fbf0abed1f30419aed3 (patch)
tree4a62a67e3a8e21cef0635a81ac2fdea84504ea8c /gcc/cp
parent72900b8306c2e0c821009269a5d203bb0658aba6 (diff)
downloadgcc-40595b8e01bd43d5c58b5fbf0abed1f30419aed3.zip
gcc-40595b8e01bd43d5c58b5fbf0abed1f30419aed3.tar.gz
gcc-40595b8e01bd43d5c58b5fbf0abed1f30419aed3.tar.bz2
re PR sanitizer/64984 (ICE in check_noexcept_t with ubsan)
PR sanitizer/64984 * except.c (check_noexcept_r): Return NULL for internal calls. * g++.dg/ubsan/pr64984.C: New test. From-SVN: r220649
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/except.c2
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 73d1b93..b66231d 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2015-02-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR sanitizer/64984
+ * except.c (check_noexcept_r): Return NULL for internal
+ calls.
+
2015-02-10 Jason Merrill <jason@redhat.com>
PR c++/64994
diff --git a/gcc/cp/except.c b/gcc/cp/except.c
index 6aff7b5..3ff1ce6 100644
--- a/gcc/cp/except.c
+++ b/gcc/cp/except.c
@@ -1148,7 +1148,7 @@ check_noexcept_r (tree *tp, int * /*walk_subtrees*/, void * /*data*/)
{
tree t = *tp;
enum tree_code code = TREE_CODE (t);
- if (code == CALL_EXPR
+ if ((code == CALL_EXPR && CALL_EXPR_FN (t))
|| code == AGGR_INIT_EXPR)
{
/* We can only use the exception specification of the called function