やっと動いたよー

langhook = namespace {
	function callgraph_expand ( t ) {
		gcc.tree_rest_of_compilation( t );
	}
};

function build_assignment( dst, src )
{
	return gcc.build2( gcc.MODIFY_EXPR, types.integer_type_node, dst, src );
}

function build_return( func, retval )
{
	var ret = func.result;
	return gcc.build1( gcc.RETURN_EXPR, types.void_type_node, build_assignment(ret,retval) );
}

var functype = gcc.build_function_type( types.integer_type_node, [types.void_type_node] );
var func = gcc.build_decl( gcc.FUNCTION_DECL, `main, functype );
func.static = 1;
func.public = 1;
func.arguments = null;


var result = gcc.build_decl( gcc.RESULT_DECL, null, types.integer_type_node );
result.context = func;
func.result = result;
gcc.allocate_struct_function( func );

var block = gcc.build_block( null, null, null, null, null );
var body = gcc.alloc_stmt_list();


body.append_to( build_return(func,0) );
func.saved_tree = gcc.build3( gcc.BIND_EXPR, types.void_type_node,
			      block.vars, body, block );
func.initial = block;

gcc.gimplify_function_tree( func );
gcc.cgraph_finalize_function( func, false );
gcc.cgraph_finalize_compilation_unit();
gcc.cgraph_optimize();

これが、

	.file	"a.c}"
	.text
.globl main
	.type	main, @function
main:
	pushl	%ebp
	movl	%esp, %ebp
	movl	$0, %eax
	leave
	ret
	.size	main, .-main
	.ident	"GCC: (GNU) 4.0.1"
	.section	.note.GNU-stack,"",@progbits

こんな感じ。
http://morihyphen.hp.infoseek.co.jp/files/ilog-vmkinen.tar.gz
記念に今までのを置いときます。使いかたは今度書く。