voidify_wrapper_expr didn't handle MUST_NOT_THROW_EXPR before, but was used by the C++ side gimplify function for MUST_NOT_THROW_EXPR. Handle it like other wrappers which have the inner part in operand 0.
OK for trunk?
commit 9cb965d2a5cf9ca6708ee85929784982253ded7a Author: Torvald Riegel <trie...@redhat.com> Date: Mon Nov 21 00:25:08 2011 +0100 Handle MUST_NOT_THROW_EXPR in voidify_wrapper_expr. gcc/ * gimplify.c (voidify_wrapper_expr): Handle MUST_NOT_THROW_EXPR. diff --git a/gcc/gimplify.c b/gcc/gimplify.c index cfe6696..2cd48de 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -1050,6 +1050,7 @@ voidify_wrapper_expr (tree wrapper, tree temp) case CLEANUP_POINT_EXPR: case TRY_FINALLY_EXPR: case TRY_CATCH_EXPR: + case MUST_NOT_THROW_EXPR: TREE_SIDE_EFFECTS (*p) = 1; TREE_TYPE (*p) = void_type_node; p = &TREE_OPERAND (*p, 0);