Patch committed. I am preparing to send to trunk by splitting this into multiple patches.
Thanks, -Sri. On Wed, May 16, 2012 at 9:23 PM, Xinliang David Li <davi...@google.com> wrote: > ok for google-4_7 branch. This should also be pushed to trunk. > > Thanks, > > David > > On Wed, May 16, 2012 at 6:56 PM, Sriraman Tallam <tmsri...@google.com> wrote: >> Patch too large to be attached, rejected by gcc-patches. Please see: >> >> http://codereview.appspot.com/download/issue6195099_1.diff >> >> Thanks, >> -Sri. >> >> On Wed, May 16, 2012 at 6:52 PM, Sriraman Tallam <tmsri...@google.com> wrote: >>> Hi, >>> >>> This patch ports function reordering support into google/gcc-4_7 branch >>> from google/gcc-4_6 branch. There are 3 parts which are combined: >>> >>> * Adding option -freoder-functions=callgraph. >>> * Dumping callgraph profiles in separate sections. >>> * The linker plugin itself. >>> >>> Port revisions from google/gcc-4_6 >>> r177289, r177308, r179104, r179289, r179303, r179404, r182447 >>> >>> into google/gcc-4_7 >>> >>> adding function reordering support via linker plugin invoked with option >>> -freorder-functions=callgraph. >>> >>> Patch also can be reviewed here: http://codereview.appspot.com/6195099 >>> >>> function_reordering_plugin: >>> >>> * config.h.in: Generate. >>> * configure: Generate. >>> * Makefile.in: New file. >>> * configure.ac: New file. >>> * callgraph.h: New file. >>> * callgraph.c: New file. >>> * function_reordering_plugin.c: New file. >>> * Makefile.am: Generate. >>> * aclocal.m4: Generate. >>> >>> gcc: >>> * doc/invoke.texi: Document -freorder-functions=* >>> * cgraphbuild.c (remove_cgraph_callee_edges): Preserve >>> callgraph till pass_final. >>> * configure: Regenerate. >>> * final.c (dump_cgraph_profiles): New function. >>> (rest_of_handle_final): Call dumping of cgraph profiles in >>> .gnu.text.callgraph sections. >>> * gcc.c (LINK_COMMAND_SPEC): Process -freorder-functions= >>> (set_func_reorder_linker_plugin_spec): New function. >>> (main): Call function reorder plugin. >>> * testsuite/lib/target-supports-dg.exp >>> (dg-require-section-exclude): New proc. >>> (dg-require-linker-function-reordering-plugin): New proc. >>> * testsuite/lib/target-supports.exp >>> (check_section_exclude_available): New proc. >>> (check_linker_function_reordering_plugin_supported): New proc. >>> * testsuite/g++.dg/tree-prof/callgraph-profiles.C: New test. >>> * config.in: undef FRPLUGINSONAME >>> * opts.c >>> * configure.ac (FRPLUGINSONAME): Define >>> * common.opt (fcallgraph-profiles-sections): Remove. >>> (freorder-functions=): New option. >>> * tree-optimize.c (gate_all_optimizations): Mark last cleanup of >>> callgraph. >>> * config.host: Set function reordering plugin. >>> * params.def (PARAM_NOTE_CGRAPH_SECTION_EDGE_THRESHOLD): Remove. >>> (PARAM_GNU_CGRAPH_SECTION_EDGE_THRESHOLD): Add. >>> >>> toplevel: >>> * Makefile.in: Regenerate. >>> * Makefile.def: Build function reordering plugin. >>> * configure.ac: Build function reordering plugin. >>> * configure: Regenerate. >>> >>> Patch attached. >>> >>> Thanks, >>> -Sri.