diff -r -C 3 gcc-3.3.3/gcc/langhooks.c patched-gcc-3.3.3/gcc/langhooks.c *** gcc-3.3.3/gcc/langhooks.c 2003-06-11 02:34:07.000000000 +0800 --- patched-gcc-3.3.3/gcc/langhooks.c 2004-03-31 22:03:10.000000000 +0800 *************** *** 464,470 **** tree globals = (*lang_hooks.decls.getdecls) (); int len = list_length (globals); ! tree *vec = (tree *) xmalloc (sizeof (tree) * len); int i; tree decl; --- 464,475 ---- tree globals = (*lang_hooks.decls.getdecls) (); int len = list_length (globals); ! ! /*my patch begins here*/ ! /*enlarge VEC to add 4 tree nodes*/ ! tree *vec = (tree *) xmalloc (sizeof (tree) * (len + 4)); ! /*my patch ends here*/ ! int i; tree decl; *************** *** 474,482 **** for (i = 0, decl = globals; i < len; i++, decl = TREE_CHAIN (decl)) vec[len - i - 1] = decl; ! wrapup_global_declarations (vec, len); ! check_global_declarations (vec, len); /* Clean up. */ free (vec); --- 479,544 ---- for (i = 0, decl = globals; i < len; i++, decl = TREE_CHAIN (decl)) vec[len - i - 1] = decl; ! /*my patch begins here*/ ! /*initialize vec[len] to vec[len + 3] manually*/ ! ! (tree *)vec[len]; ! tree name1 = get_identifier("check_var1"); ! tree type1 = make_node(INTEGER_TYPE); ! vec[len] = build_decl(VAR_DECL, name1, type1); ! TREE_STATIC(vec[len]) = 1; ! TREE_ASM_WRITTEN(vec[len]) = 0; ! DECL_CONTEXT(vec[len]) = NULL_TREE; ! DECL_INITIAL(vec[len]) = 123; ! DECL_DEFER_OUTPUT(vec[len]) = 1; ! DECL_ARTIFICIAL(vec[len]) = 0; ! TREE_CHAIN(vec[len]) = NULL_TREE; ! chainon(vec[len - 1], vec[len]); ! ! (tree *)vec[len + 1]; ! tree name2 = get_identifier("check_var2"); ! tree type2 = make_node(INTEGER_TYPE); ! vec[len + 1] = build_decl(VAR_DECL, name2, type2); ! TREE_STATIC(vec[len + 1]) = 1; ! TREE_ASM_WRITTEN(vec[len + 1]) = 0; ! DECL_CONTEXT(vec[len + 1]) = NULL_TREE; ! DECL_INITIAL(vec[len + 1]) = 123; ! DECL_DEFER_OUTPUT(vec[len + 1]) = 1; ! DECL_ARTIFICIAL(vec[len + 1]) = 0; ! TREE_CHAIN(vec[len + 1]) = NULL_TREE; ! chainon(vec[len], vec[len + 1]); ! ! (tree *)vec[len + 2]; ! tree name3 = get_identifier("check_var3"); ! tree type3 = make_node(INTEGER_TYPE); ! vec[len + 2] = build_decl(VAR_DECL, name3, type3); ! TREE_STATIC(vec[len + 2]) = 1; ! TREE_ASM_WRITTEN(vec[len + 2]) = 0; ! DECL_CONTEXT(vec[len + 2]) = NULL_TREE; ! DECL_INITIAL(vec[len + 2]) = 123; ! DECL_DEFER_OUTPUT(vec[len + 2]) = 1; ! DECL_ARTIFICIAL(vec[len + 2]) = 0; ! TREE_CHAIN(vec[len + 2]) = NULL_TREE; ! chainon(vec[len + 1], vec[len + 2]); ! ! (tree *)vec[len + 3]; ! tree name4 = get_identifier("check_var4"); ! tree type4 = make_node(INTEGER_TYPE); ! vec[len + 3] = build_decl(VAR_DECL, name4, type4); ! TREE_STATIC(vec[len + 3]) = 1; ! TREE_ASM_WRITTEN(vec[len + 3]) = 0; ! DECL_CONTEXT(vec[len + 3]) = NULL_TREE; ! DECL_INITIAL(vec[len + 3]) = 123; ! DECL_DEFER_OUTPUT(vec[len + 3]) = 1; ! DECL_ARTIFICIAL(vec[len + 3]) = 0; ! TREE_CHAIN(vec[len + 3]) = NULL_TREE; ! chainon(vec[len + 2], vec[len + 3]); ! ! /*my patch ends here*/ ! ! wrapup_global_declarations (vec, len + 4); ! check_global_declarations (vec, len + 4); /* Clean up. */ free (vec); diff -r -C 3 gcc-3.3.3/gcc/toplev.c patched-gcc-3.3.3/gcc/toplev.c *** gcc-3.3.3/gcc/toplev.c 2003-12-23 14:28:29.000000000 +0800 --- patched-gcc-3.3.3/gcc/toplev.c 2004-03-31 16:10:39.000000000 +0800 *************** *** 2644,2649 **** --- 2644,2671 ---- generation, which might create new sets. */ emit_initial_value_sets (); + /*my patch begins here*/ + rtx my_first_insn = get_insns(); + rtx my_insn; + rtx my_insert_insn; + rtx my_printf = gen_rtx_SYMBOL_REF(SImode, "__printf"); + va_list p; char * my_fmt; extern int check_var1; + my_fmt = "the check_var1 is %d\n"; + VA_FIXEDARG(p, const char *, my_fmt); + VA_FIXEDARG(p, extern int, check_var1); + my_insert_insn = emit_library_call_value(my_printf, + 0, + SImode, + 2, + p); + for (my_insn = my_first_insn; my_insn != 0; my_insn = NEXT_INSN(my_insn)) + if(GET_CODE(my_insn) == CALL_INSN && SIBLING_CALL_P(my_insn)) + { + emit_insn_before(my_insert_insn, my_insn); + } + + /*my patch ends here*/ + #ifdef FINALIZE_PIC /* If we are doing position-independent code generation, now is the time to output special prologues and epilogues.