diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index eed29f04cce587276287d3e040a0de71597010e5..17be451977da84fc09d92ebe300c11ec6979b4f8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2011-12-12  Torvald Riegel  <triegel@redhat.com>
+
+	* gimplify.c (voidify_wrapper_expr): Add default handling for
+	outermost wrapper.
+
 2011-12-12  Torvald Riegel  <triegel@redhat.com>
 
 	* tree-ssa-tail-merge.c (gimple_equal_p): Don't treat transaction
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index f548e703390523fbcc23aeca031d1b9ed94e6951..fe8d2f801a35446c023d737f435ffd7a39bd4c92 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -1081,6 +1081,15 @@ voidify_wrapper_expr (tree wrapper, tree temp)
 	      break;
 
 	    default:
+	      /* Assume that any tree upon which voidify_wrapper_expr is
+		 directly called is a wrapper, and that its body is op0.  */
+	      if (p == &wrapper)
+		{
+		  TREE_SIDE_EFFECTS (*p) = 1;
+		  TREE_TYPE (*p) = void_type_node;
+		  p = &TREE_OPERAND (*p, 0);
+		  break;
+		}
 	      goto out;
 	    }
 	}