On 03/05/2015 06:25 PM, Aldy Hernandez wrote:
+       tree ret = TREE_OPERAND (*expr_p, 0);
+       if (ret && (TREE_CODE (ret) == INIT_EXPR
+                   || TREE_CODE (ret) == MODIFY_EXPR)
+           && TREE_CODE (TREE_OPERAND (ret, 0)) == RESULT_DECL
+           && is_gimple_lvalue (TREE_OPERAND (ret, 0))
+           && is_really_empty_class (TREE_TYPE (TREE_OPERAND (ret, 0))))
+         {
+           tree result_decl = TREE_OPERAND (ret, 0);
+           tree list = alloc_stmt_list ();
+           append_to_statement_list (TREE_OPERAND (ret, 1), &list);
+           append_to_statement_list (build1 (RETURN_EXPR, void_type_node,
+                                             result_decl), &list);
+           *expr_p = list;
+           return GS_OK;
+         }

This should really use the MODIFY_EXPR case rather than duplicate it here. Actually, why don't we already hit that case when processing the RETURN_EXPR?

Jason

Reply via email to