Index: Makefile.in =================================================================== RCS file: /cvsroot/gcc/gcc/gcc/Makefile.in,v retrieving revision 1.903.2.179.2.11 diff -c -3 -p -r1.903.2.179.2.11 Makefile.in *** Makefile.in 10 Jun 2004 21:17:12 -0000 1.903.2.179.2.11 --- Makefile.in 30 Jul 2004 05:53:44 -0000 *************** OBJS-common = \ *** 909,915 **** OBJS-md = $(out_object_file) OBJS-archive = $(EXTRA_OBJS) $(host_hook_obj) tree-inline.o \ ! cgraph.o cgraphunit.o tree-nomudflap.o OBJS = $(OBJS-common) $(out_object_file) $(OBJS-archive) --- 909,915 ---- OBJS-md = $(out_object_file) OBJS-archive = $(EXTRA_OBJS) $(host_hook_obj) tree-inline.o \ ! cgraph.o ipa_prop.o cgraphunit.o tree-nomudflap.o OBJS = $(OBJS-common) $(out_object_file) $(OBJS-archive) *************** c-incpath.o: c-incpath.c c-incpath.h $(C *** 1346,1352 **** c-decl.o : c-decl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ $(RTL_H) $(C_TREE_H) $(GGC_H) $(TARGET_H) flags.h function.h output.h \ $(EXPR_H) debug.h toplev.h intl.h $(TM_P_H) tree-inline.h $(TIMEVAR_H) \ ! opts.h c-pragma.h gt-c-decl.h cgraph.h $(HASHTAB_H) libfuncs.h except.h \ $(LANGHOOKS_DEF_H) $(TREE_DUMP_H) c-typeck.o : c-typeck.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(C_TREE_H) \ $(TARGET_H) flags.h intl.h output.h $(EXPR_H) $(RTL_H) toplev.h $(TM_P_H) \ --- 1346,1352 ---- c-decl.o : c-decl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ $(RTL_H) $(C_TREE_H) $(GGC_H) $(TARGET_H) flags.h function.h output.h \ $(EXPR_H) debug.h toplev.h intl.h $(TM_P_H) tree-inline.h $(TIMEVAR_H) \ ! opts.h c-pragma.h gt-c-decl.h cgraph.h ipa_prop.h $(HASHTAB_H) libfuncs.h except.h \ $(LANGHOOKS_DEF_H) $(TREE_DUMP_H) c-typeck.o : c-typeck.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(C_TREE_H) \ $(TARGET_H) flags.h intl.h output.h $(EXPR_H) $(RTL_H) toplev.h $(TM_P_H) \ *************** c-ppoutput.o : c-ppoutput.c $(CONFIG_H) *** 1365,1371 **** c-objc-common.o : c-objc-common.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ $(C_TREE_H) $(RTL_H) insn-config.h $(INTEGRATE_H) $(EXPR_H) $(C_TREE_H) \ flags.h toplev.h tree-inline.h $(DIAGNOSTIC_H) $(VARRAY_H) \ ! langhooks.h $(GGC_H) $(TARGET_H) cgraph.h c-aux-info.o : c-aux-info.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ $(C_TREE_H) flags.h toplev.h c-convert.o : c-convert.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ --- 1365,1371 ---- c-objc-common.o : c-objc-common.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ $(C_TREE_H) $(RTL_H) insn-config.h $(INTEGRATE_H) $(EXPR_H) $(C_TREE_H) \ flags.h toplev.h tree-inline.h $(DIAGNOSTIC_H) $(VARRAY_H) \ ! langhooks.h $(GGC_H) $(TARGET_H) cgraph.h ipa_prop.h c-aux-info.o : c-aux-info.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ $(C_TREE_H) flags.h toplev.h c-convert.o : c-convert.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ *************** tree-dump.o: tree-dump.c $(CONFIG_H) $(S *** 1553,1559 **** tree-inline.o : tree-inline.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(TREE_H) $(RTL_H) $(EXPR_H) flags.h $(PARAMS_H) input.h insn-config.h \ $(INTEGRATE_H) $(VARRAY_H) $(HASHTAB_H) $(SPLAY_TREE_H) toplev.h \ ! langhooks.h $(C_COMMON_H) tree-inline.h cgraph.h intl.h function.h \ $(TREE_GIMPLE_H) print-tree.o : print-tree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ $(GGC_H) langhooks.h real.h --- 1553,1559 ---- tree-inline.o : tree-inline.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(TREE_H) $(RTL_H) $(EXPR_H) flags.h $(PARAMS_H) input.h insn-config.h \ $(INTEGRATE_H) $(VARRAY_H) $(HASHTAB_H) $(SPLAY_TREE_H) toplev.h \ ! langhooks.h $(C_COMMON_H) tree-inline.h cgraph.h ipa_prop.h intl.h function.h \ $(TREE_GIMPLE_H) print-tree.o : print-tree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ $(GGC_H) langhooks.h real.h *************** tree-alias-type.o: tree-alias-type.c tre *** 1564,1573 **** $(GGC_H) $(TM_H) coretypes.h $(VARRAY_H) tree-alias-ander.o: tree-alias-ander.c tree-alias-ander.h $(SYSTEM_H) \ $(CONFIG_H) $(GGC_H) $(TREE_H) $(TREE_FLOW_H) tree-alias-common.h \ ! $(TM_H) coretypes.h cgraph.h tree-pass.h tree-alias-common.o: tree-alias-common.c tree-alias-common.h $(SYSTEM_H) \ $(CONFIG_H) $(GGC_H) $(TREE_H) gt-tree-alias-common.h $(TREE_FLOW_H) \ ! $(TM_H) coretypes.h cgraph.h tree-pass.h $(TIMEVAR_H) tree-ssa.o : tree-ssa.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) output.h diagnostic.h \ errors.h toplev.h function.h $(TIMEVAR_H) tree-alias-common.h \ --- 1564,1573 ---- $(GGC_H) $(TM_H) coretypes.h $(VARRAY_H) tree-alias-ander.o: tree-alias-ander.c tree-alias-ander.h $(SYSTEM_H) \ $(CONFIG_H) $(GGC_H) $(TREE_H) $(TREE_FLOW_H) tree-alias-common.h \ ! $(TM_H) coretypes.h cgraph.h ipa_prop.h tree-pass.h tree-alias-common.o: tree-alias-common.c tree-alias-common.h $(SYSTEM_H) \ $(CONFIG_H) $(GGC_H) $(TREE_H) gt-tree-alias-common.h $(TREE_FLOW_H) \ ! $(TM_H) coretypes.h cgraph.h ipa_prop.h tree-pass.h $(TIMEVAR_H) tree-ssa.o : tree-ssa.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) output.h diagnostic.h \ errors.h toplev.h function.h $(TIMEVAR_H) tree-alias-common.h \ *************** tree-tailcall.o : tree-tailcall.c $(TREE *** 1631,1637 **** $(TREE_DUMP_H) diagnostic.h except.h tree-pass.h flags.h langhooks.h tree-nested.o: tree-nested.c $(CONFIG_H) $(SYSTEM_H) $(TM_H) $(TREE_H) \ $(RTL_H) $(TM_P_H) function.h tree-dump.h tree-inline.h tree-iterator.h \ ! tree-gimple.h cgraph.h $(EXPR_H) langhooks.h $(GGC_H) gt-tree-nested.h tree-iterator.o : tree-iterator.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \ coretypes.h $(GGC_H) tree-iterator.h tree-gimple.h gt-tree-iterator.h tree-dfa.o : tree-dfa.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ --- 1631,1637 ---- $(TREE_DUMP_H) diagnostic.h except.h tree-pass.h flags.h langhooks.h tree-nested.o: tree-nested.c $(CONFIG_H) $(SYSTEM_H) $(TM_H) $(TREE_H) \ $(RTL_H) $(TM_P_H) function.h tree-dump.h tree-inline.h tree-iterator.h \ ! tree-gimple.h cgraph.h ipa_prop.h $(EXPR_H) langhooks.h $(GGC_H) gt-tree-nested.h tree-iterator.o : tree-iterator.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \ coretypes.h $(GGC_H) tree-iterator.h tree-gimple.h gt-tree-iterator.h tree-dfa.o : tree-dfa.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ *************** tree-optimize.o : tree-optimize.c $(TREE *** 1657,1663 **** $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) \ $(GGC_H) output.h diagnostic.h errors.h flags.h tree-alias-common.h \ $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) toplev.h function.h \ ! langhooks.h flags.h cgraph.h tree-inline.h tree-mudflap.h $(GGC_H) \ cgraph.h tree-pass.h c-gimplify.o : c-gimplify.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) errors.h \ $(C_TREE_H) $(C_COMMON_H) diagnostic.h $(TREE_GIMPLE_H) varray.h flags.h \ --- 1657,1663 ---- $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) \ $(GGC_H) output.h diagnostic.h errors.h flags.h tree-alias-common.h \ $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) toplev.h function.h \ ! langhooks.h flags.h cgraph.h ipa_prop.h tree-inline.h tree-mudflap.h $(GGC_H) \ cgraph.h tree-pass.h c-gimplify.o : c-gimplify.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) errors.h \ $(C_TREE_H) $(C_COMMON_H) diagnostic.h $(TREE_GIMPLE_H) varray.h flags.h \ *************** toplev.o : toplev.c $(CONFIG_H) $(SYSTEM *** 1709,1715 **** graph.h $(LOOP_H) except.h $(REGS_H) $(TIMEVAR_H) value-prof.h \ $(PARAMS_H) $(TM_P_H) reload.h dwarf2asm.h $(TARGET_H) \ langhooks.h insn-flags.h cfglayout.h real.h cfgloop.h \ ! hosthooks.h $(LANGHOOKS_DEF_H) cgraph.h $(COVERAGE_H) alloc-pool.h $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ -DTARGET_NAME=\"$(target_noncanonical)\" \ -c $(srcdir)/toplev.c $(OUTPUT_OPTION) --- 1709,1715 ---- graph.h $(LOOP_H) except.h $(REGS_H) $(TIMEVAR_H) value-prof.h \ $(PARAMS_H) $(TM_P_H) reload.h dwarf2asm.h $(TARGET_H) \ langhooks.h insn-flags.h cfglayout.h real.h cfgloop.h \ ! hosthooks.h $(LANGHOOKS_DEF_H) cgraph.h ipa_prop.h $(COVERAGE_H) alloc-pool.h $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ -DTARGET_NAME=\"$(target_noncanonical)\" \ -c $(srcdir)/toplev.c $(OUTPUT_OPTION) *************** passes.o : passes.c $(CONFIG_H) $(SYSTEM *** 1721,1727 **** graph.h $(LOOP_H) except.h $(REGS_H) $(TIMEVAR_H) value-prof.h \ $(PARAMS_H) $(TM_P_H) reload.h dwarf2asm.h $(TARGET_H) \ langhooks.h insn-flags.h cfglayout.h real.h cfgloop.h \ ! hosthooks.h $(LANGHOOKS_DEF_H) cgraph.h $(COVERAGE_H) alloc-pool.h main.o : main.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) toplev.h --- 1721,1727 ---- graph.h $(LOOP_H) except.h $(REGS_H) $(TIMEVAR_H) value-prof.h \ $(PARAMS_H) $(TM_P_H) reload.h dwarf2asm.h $(TARGET_H) \ langhooks.h insn-flags.h cfglayout.h real.h cfgloop.h \ ! hosthooks.h $(LANGHOOKS_DEF_H) cgraph.h ipa_prop.h $(COVERAGE_H) alloc-pool.h main.o : main.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) toplev.h *************** builtins.o : builtins.c $(CONFIG_H) $(SY *** 1775,1781 **** except.h $(TM_P_H) $(PREDICT_H) libfuncs.h real.h langhooks.h basic-block.h calls.o : calls.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(TREE_H) flags.h \ $(EXPR_H) $(OPTABS_H) langhooks.h $(TARGET_H) \ ! libfuncs.h $(REGS_H) toplev.h output.h function.h $(TIMEVAR_H) $(TM_P_H) cgraph.h except.h expmed.o : expmed.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(TREE_H) \ flags.h insn-config.h $(EXPR_H) $(OPTABS_H) $(RECOG_H) real.h \ toplev.h $(TM_P_H) langhooks.h --- 1775,1782 ---- except.h $(TM_P_H) $(PREDICT_H) libfuncs.h real.h langhooks.h basic-block.h calls.o : calls.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(TREE_H) flags.h \ $(EXPR_H) $(OPTABS_H) langhooks.h $(TARGET_H) \ ! libfuncs.h $(REGS_H) toplev.h output.h function.h $(TIMEVAR_H) $(TM_P_H) cgraph.h \ ! ipa_prop.h except.h expmed.o : expmed.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(TREE_H) \ flags.h insn-config.h $(EXPR_H) $(OPTABS_H) $(RECOG_H) real.h \ toplev.h $(TM_P_H) langhooks.h *************** dwarf2out.o : dwarf2out.c $(CONFIG_H) $( *** 1799,1805 **** $(TREE_H) $(RTL_H) dwarf2.h debug.h flags.h insn-config.h reload.h \ output.h $(DIAGNOSTIC_H) real.h hard-reg-set.h $(REGS_H) $(EXPR_H) \ libfuncs.h toplev.h dwarf2out.h varray.h $(GGC_H) except.h dwarf2asm.h \ ! $(TM_P_H) langhooks.h $(HASHTAB_H) gt-dwarf2out.h $(TARGET_H) cgraph.h \ $(MD5_H) input.h dwarf2asm.o : dwarf2asm.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) flags.h $(RTL_H) \ $(TREE_H) output.h dwarf2asm.h $(TM_P_H) $(GGC_H) gt-dwarf2asm.h --- 1800,1806 ---- $(TREE_H) $(RTL_H) dwarf2.h debug.h flags.h insn-config.h reload.h \ output.h $(DIAGNOSTIC_H) real.h hard-reg-set.h $(REGS_H) $(EXPR_H) \ libfuncs.h toplev.h dwarf2out.h varray.h $(GGC_H) except.h dwarf2asm.h \ ! $(TM_P_H) langhooks.h $(HASHTAB_H) gt-dwarf2out.h $(TARGET_H) cgraph.h ipa_prop.h\ $(MD5_H) input.h dwarf2asm.o : dwarf2asm.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) flags.h $(RTL_H) \ $(TREE_H) output.h dwarf2asm.h $(TM_P_H) $(GGC_H) gt-dwarf2asm.h *************** simplify-rtx.o : simplify-rtx.c $(CONFIG *** 1825,1834 **** $(REGS_H) hard-reg-set.h flags.h real.h insn-config.h $(RECOG_H) $(EXPR_H) toplev.h \ output.h function.h $(GGC_H) $(OBSTACK_H) $(TM_P_H) $(TREE_H) $(TARGET_H) cgraph.o : cgraph.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ ! langhooks.h toplev.h flags.h $(GGC_H) $(TARGET_H) cgraph.h gt-cgraph.h \ output.h intl.h cgraphunit.o : cgraphunit.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ ! langhooks.h tree-inline.h toplev.h flags.h $(GGC_H) $(TARGET_H) cgraph.h intl.h \ function.h coverage.o : coverage.c gcov-io.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(TM_H) $(RTL_H) $(TREE_H) flags.h output.h $(REGS_H) $(EXPR_H) function.h \ --- 1826,1838 ---- $(REGS_H) hard-reg-set.h flags.h real.h insn-config.h $(RECOG_H) $(EXPR_H) toplev.h \ output.h function.h $(GGC_H) $(OBSTACK_H) $(TM_P_H) $(TREE_H) $(TARGET_H) cgraph.o : cgraph.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ ! langhooks.h toplev.h flags.h $(GGC_H) $(TARGET_H) cgraph.h ipa_prop.h gt-cgraph.h \ output.h intl.h + ipa_prop.o : ipa_prop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ + langhooks.h toplev.h $(FLAGS_H) $(GGC_H) $(TARGET_H) cgraph.h ipa_prop.h gt-cgraph.h \ + output.h tree-iterator.h tree-gimple.h tree-inline.h cgraphunit.o : cgraphunit.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ ! langhooks.h tree-inline.h toplev.h flags.h $(GGC_H) $(TARGET_H) cgraph.h ipa_prop.h intl.h \ function.h coverage.o : coverage.c gcov-io.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(TM_H) $(RTL_H) $(TREE_H) flags.h output.h $(REGS_H) $(EXPR_H) function.h \ *************** reorg.o : reorg.c $(CONFIG_H) $(SYSTEM_H *** 2000,2006 **** alias.o : alias.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) flags.h \ hard-reg-set.h $(BASIC_BLOCK_H) $(REGS_H) toplev.h output.h $(ALIAS_H) $(EMIT_RTL_H) \ $(GGC_H) function.h cselib.h $(TREE_H) $(TM_P_H) langhooks.h $(TARGET_H) \ ! gt-alias.h $(TIMEVAR_H) cgraph.h regmove.o : regmove.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) insn-config.h \ $(RECOG_H) output.h $(REGS_H) hard-reg-set.h flags.h function.h \ $(EXPR_H) $(BASIC_BLOCK_H) toplev.h $(TM_P_H) except.h reload.h --- 2004,2010 ---- alias.o : alias.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) flags.h \ hard-reg-set.h $(BASIC_BLOCK_H) $(REGS_H) toplev.h output.h $(ALIAS_H) $(EMIT_RTL_H) \ $(GGC_H) function.h cselib.h $(TREE_H) $(TM_P_H) langhooks.h $(TARGET_H) \ ! gt-alias.h $(TIMEVAR_H) cgraph.h ipa_prop.h regmove.o : regmove.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) insn-config.h \ $(RECOG_H) output.h $(REGS_H) hard-reg-set.h flags.h function.h \ $(EXPR_H) $(BASIC_BLOCK_H) toplev.h $(TM_P_H) except.h reload.h Index: cgraph.c =================================================================== RCS file: /cvsroot/gcc/gcc/gcc/cgraph.c,v retrieving revision 1.4.4.18.2.5 diff -c -3 -p -r1.4.4.18.2.5 cgraph.c *** cgraph.c 4 Jun 2004 20:44:50 -0000 1.4.4.18.2.5 --- cgraph.c 30 Jul 2004 05:53:44 -0000 *************** cgraph_create_node (void) *** 156,161 **** --- 156,165 ---- node = ggc_alloc_cleared (sizeof (*node)); node->next = cgraph_nodes; node->uid = cgraph_max_uid++; + node->ipcp_cval = NULL; + node->ipcp_arg_num =0; + node-> ipcp_param_tree = NULL; + node->ipcp_mod = NULL; if (cgraph_nodes) cgraph_nodes->previous = node; node->previous = NULL; *************** cgraph_create_edge (struct cgraph_node * *** 249,254 **** --- 253,260 ---- edge->next_callee = caller->callees; caller->callees = edge; callee->callers = edge; + edge->ipcp_param_map = NULL; + edge->ipcp_param_num = 0; return edge; } Index: cgraph.h =================================================================== RCS file: /cvsroot/gcc/gcc/gcc/cgraph.h,v retrieving revision 1.1.4.16.2.3 diff -c -3 -p -r1.1.4.16.2.3 cgraph.h *** cgraph.h 27 May 2004 00:33:38 -0000 1.1.4.16.2.3 --- cgraph.h 30 Jul 2004 05:53:44 -0000 *************** Software Foundation, 59 Temple Place - S *** 22,27 **** --- 22,28 ---- #ifndef GCC_CGRAPH_H #define GCC_CGRAPH_H #include "hashtab.h" + #include "ipa_prop.h" /* Information about the function collected locally. Available after function is analyzed. */ *************** struct cgraph_rtl_info GTY(()) *** 70,76 **** bool pure_function; }; - /* The cgraph data structure. Each function decl has assigned cgraph_node listing callees and callers. */ --- 71,76 ---- *************** struct cgraph_node GTY((chain_next ("%h. *** 109,114 **** --- 109,122 ---- bool analyzed; /* Set when function is scheduled to be assembled. */ bool output; + /* Fields needed by IPA Constant Propagation algorithm. */ + /* Array of cvals. */ + struct ipcp_formal* GTY ((skip (""))) ipcp_cval; + int ipcp_arg_num; + /* Mapping each parameter to its PARM_DECL tree. */ + struct ipcp_tree_map* GTY ((skip (""))) ipcp_param_tree; + /* Indicating which parameter is modified in its method. */ + struct ipcp_modify* GTY ((skip (""))) ipcp_mod; }; struct cgraph_edge GTY((chain_next ("%h.next_caller"))) *************** struct cgraph_edge GTY((chain_next ("%h. *** 122,127 **** --- 130,139 ---- /* When NULL, inline this call. When non-NULL, points to the explanation why function was not inlined. */ const char *inline_failed; + /* Fields needed by IPA Constant Propagation algorithm. */ + /* Jump functions' array */ + struct ipcp_jump_func* GTY ((skip (""))) ipcp_param_map; + int ipcp_param_num; }; /* The cgraph_varpool data structure. Index: cgraphunit.c =================================================================== RCS file: /cvsroot/gcc/gcc/gcc/cgraphunit.c,v retrieving revision 1.1.4.35.2.11 diff -c -3 -p -r1.1.4.35.2.11 cgraphunit.c *** cgraphunit.c 4 Jun 2004 20:44:50 -0000 1.1.4.35.2.11 --- cgraphunit.c 30 Jul 2004 05:53:44 -0000 *************** record_call_1 (tree *tp, int *walk_subtr *** 410,415 **** --- 410,417 ---- tree decl = TREE_OPERAND (*tp, 0); if (TREE_CODE (decl) == FUNCTION_DECL) cgraph_mark_needed_node (cgraph_node (decl)); + if (flag_ipa_cp && decl == NULL_TREE) + flag_ipa_cp = 0; } break; *************** record_call_1 (tree *tp, int *walk_subtr *** 431,436 **** --- 433,440 ---- visited_nodes); *walk_subtrees = 0; } + if (flag_ipa_cp && decl == NULL_TREE) + flag_ipa_cp = 0; break; } *************** cgraph_optimize (void) *** 1728,1733 **** --- 1732,1739 ---- #endif if (!flag_unit_at_a_time) return; + if (flag_ipa_cp && flag_ipa_no_cloning) + ipcp_driver (); timevar_push (TV_CGRAPHOPT); if (!quiet_flag) fprintf (stderr, "Performing intraprocedural optimizations\n"); Index: common.opt =================================================================== RCS file: /cvsroot/gcc/gcc/gcc/common.opt,v retrieving revision 1.14.2.20.2.8 diff -c -3 -p -r1.14.2.20.2.8 common.opt *** common.opt 27 May 2004 00:33:39 -0000 1.14.2.20.2.8 --- common.opt 30 Jul 2004 05:53:44 -0000 *************** funit-at-a-time *** 787,792 **** --- 787,800 ---- Common Compile whole compilation unit at a time + fipa-cp + Common Report Var(flag_ipa_cp) + Perform IPA constant propagation + + fipa-no-cloning + Common Report Var(flag_ipa_no_cloning) + Perform IPA cp, without cloning of methods + funroll-loops Common Perform loop unrolling when iteration count is known Index: flags.h =================================================================== RCS file: /cvsroot/gcc/gcc/gcc/flags.h,v retrieving revision 1.86.2.46.2.9 diff -c -3 -p -r1.86.2.46.2.9 flags.h *** flags.h 4 Jun 2004 20:44:58 -0000 1.86.2.46.2.9 --- flags.h 30 Jul 2004 05:53:44 -0000 *************** extern int flag_signaling_nans; *** 782,787 **** --- 782,791 ---- extern int flag_unit_at_a_time; + extern int flag_ipa_cp; + + extern int flag_ipa_no_cloning; + extern int flag_web; /* Nonzero means that we defer emitting functions until they are actually Index: opts.c =================================================================== RCS file: /cvsroot/gcc/gcc/gcc/opts.c,v retrieving revision 1.31.2.28.2.12 diff -c -3 -p -r1.31.2.28.2.12 opts.c *** opts.c 27 May 2004 00:34:05 -0000 1.31.2.28.2.12 --- opts.c 30 Jul 2004 05:53:45 -0000 *************** common_handle_option (size_t scode, cons *** 1555,1560 **** --- 1555,1568 ---- flag_unit_at_a_time = value; break; + case OPT_fipa_cp: + flag_ipa_cp = value; + break; + + case OPT_fipa_no_cloning: + flag_ipa_no_cloning = value; + break; + case OPT_funroll_all_loops: flag_unroll_all_loops = value; break; Index: toplev.c =================================================================== RCS file: /cvsroot/gcc/gcc/gcc/toplev.c,v retrieving revision 1.654.2.97.2.12 diff -c -3 -p -r1.654.2.97.2.12 toplev.c *** toplev.c 4 Jun 2004 20:45:04 -0000 1.654.2.97.2.12 --- toplev.c 30 Jul 2004 05:53:45 -0000 *************** int flag_tracer = 0; *** 865,870 **** --- 865,879 ---- int flag_unit_at_a_time = 0; + /* Nonzero if we perform IPA constant propagation. */ + + int flag_ipa_cp = 0; + + /* Nonzero if we perform IPA constant propagation without cloning. */ + + int flag_ipa_no_cloning = 0; + + /* Nonzero if we should track variables. When flag_var_tracking == AUTODETECT_FLAG_VAR_TRACKING it will be set according to optimize, debug_info_level and debug_hooks in process_options (). */ *************** static const lang_independent_options f_ *** 956,961 **** --- 965,972 ---- {"optimize-sibling-calls", &flag_optimize_sibling_calls, 1 }, {"tracer", &flag_tracer, 1 }, {"unit-at-a-time", &flag_unit_at_a_time, 1 }, + {"ipa-cp", &flag_ipa_cp, 1 }, + {"ipa-no-cloning", &flag_ipa_no_cloning, 1 }, {"cse-follow-jumps", &flag_cse_follow_jumps, 1 }, {"cse-skip-blocks", &flag_cse_skip_blocks, 1 }, {"expensive-optimizations", &flag_expensive_optimizations, 1 },