diff gcc/gimplify.c @ 73:ce75bd9117e4

merge calls.c, cfgexpand.c, gcc.c, gimple.c, gimple.h and gimplify.c
author Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
date Mon, 22 Aug 2011 01:54:47 +0900
parents b81903832de2
children ab0bcb71f44d
line wrap: on
line diff
--- a/gcc/gimplify.c	Sun Aug 21 22:22:32 2011 +0900
+++ b/gcc/gimplify.c	Mon Aug 22 01:54:47 2011 +0900
@@ -46,6 +46,9 @@
 #include "vec.h"
 #include "gimple.h"
 #include "tree-pass.h"
+#ifndef noCbC
+#include "cbc-tree.h"
+#endif
 
 #include "langhooks-def.h"	/* FIXME: for lhd_set_decl_assembler_name.  */
 #include "expr.h"		/* FIXME: for can_move_by_pieces
@@ -1234,7 +1237,16 @@
       return GS_ALL_DONE;
     }
 
-  if (VOID_TYPE_P (TREE_TYPE (TREE_TYPE (current_function_decl))))
+  if (VOID_TYPE_P (TREE_TYPE (TREE_TYPE (current_function_decl)))
+#ifndef noCbC
+      || ( ret_expr
+           && TREE_CODE(ret_expr)==CALL_EXPR
+       && CbC_IS_CbC_GOTO(ret_expr)
+       //&& !CbC_IS_CODE_SEGMENT(TREE_TYPE(current_function_decl)))
+       && !(current_function_decl&&CbC_IS_CODE_SEGMENT(TREE_TYPE(current_function_decl))))
+       //&& !(current_function_decl&&CbC_IS_CODE_SEGMENT(current_function_decl)))
+#endif
+     )
     result_decl = NULL_TREE;
   else
     {