This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[autovect] [patch] Implement call-site versioning


Initial implementation of call-site versioning.


            switch (x) {
              case 1:
                  a = 5;
                  break;
              case 2:
                  a = 10;
                  break;
              case 3:
                  a = 100;
                  break;
            }

            foo (a);

will ve converted to

            switch (x) {
              case 1:
                  foo (5);
                  break;
              case 2:
                  foo (10);
                  break;
              case 3:
                  foo (100);
                  break;
            }

New pass runs before inlining.

Bootstrapped and tested on powerpc-linux.
Committed to autovect-branch.

2006-05-07  Mircea Namolaru  <namolaru@il.ibm.com>
            Vladimir Yanovsky  <yanov@il.ibm.com>
            Victor Kaplansky   <victork@il.ibm.com>

        * gcc/tree-pass.h: Define two new passes pass_tree_loop0 and
pass_cv.
        * gcc/timevar.def: Define new timevar.
        * gcc/tree-ssa-loop.c: (gate_loop0) New.
        (pass_tree_loop0): New pass.
        * gcc/ipa-prop.h: (cv_driver): New.
        * gcc/tree-ssa-forwprop.c
(tree_ssa_forward_propagate_single_use_va):
        Add transformation to array access.
        * gcc/common.opt (ftree-early-loop): New option.
        (fcv): New option.
        * gcc/tree-inline.c: Add include of tree-inline-aux.h.
        (copy_body_r): Change condition for tree_inlining.
        (copy_bb): Change to non-static, add call to cgraph_clone_edge.
        (copy_edges_for_bb): Change to non-static.
        * gcc/Makefile.in: Add rules for cv.o
        * gcc/passes.c (pass_cv): Add new pass pass_cv.
        (pass_tree_loop0): New pass.
        (init_optimization_passes): Add call to various existing pass to
make
        scalar expansion happen.
        * gcc/config/rs6000/rs6000.c: Add include of cfgloop.h
        * tree-inline-aux.h: New.
        * cv.c: New.

(See attached file: autovect.cv.patch.txt)
(See attached file: autovect.cv.patch.txt)

Attachment: autovect.cv.patch.txt
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]