diff mbox

Minor C++ PATCH to check_noexcept_r

Message ID 55D22A9B.7090106@redhat.com
State New
Headers show

Commit Message

Jason Merrill Aug. 17, 2015, 6:40 p.m. UTC
For a while, on the concepts branch check_noexcept_r was seeing a 
CALL_EXPR where the fn operand was not a pointer or reference to 
function, which caused trouble.  Let's add an assert for that.

Tested x86_64-pc-linux-gnu, applying to trunk.
diff mbox

Patch

commit 4fbc043d90cbc3820e1eeb381d709c2631b7daeb
Author: Jason Merrill <jason@redhat.com>
Date:   Wed Aug 5 21:37:23 2015 -0400

    	* except.c (check_noexcept_r): Assert that fn is POINTER_TYPE_P.

diff --git a/gcc/cp/except.c b/gcc/cp/except.c
index 6c36646..4f06f52 100644
--- a/gcc/cp/except.c
+++ b/gcc/cp/except.c
@@ -1155,7 +1155,9 @@  check_noexcept_r (tree *tp, int * /*walk_subtrees*/, void * /*data*/)
          We could use TREE_NOTHROW (t) for !TREE_PUBLIC fns, though... */
       tree fn = (code == AGGR_INIT_EXPR
 		 ? AGGR_INIT_EXPR_FN (t) : CALL_EXPR_FN (t));
-      tree type = TREE_TYPE (TREE_TYPE (fn));
+      tree type = TREE_TYPE (fn);
+      gcc_assert (POINTER_TYPE_P (type));
+      type = TREE_TYPE (type);
 
       STRIP_NOPS (fn);
       if (TREE_CODE (fn) == ADDR_EXPR)