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]

Re: [tree-ssa] More CFG improvements [patch]


In message <20030204185346.GA14391@tornado.toronto.redhat.com>, Diego Novillo w
rites:
 >On Tue, 04 Feb 2003, Jeff Law wrote:
 >
 >> I thought this was going to allow us to enable 20001226-1.c, except that
 >> for some reason we're getting some spurious vuses on some statements,
 >> which in turn is causing certain variables to be nonlocal when they should
 >> local.  That in turn causes us to insert far too many PHI nodes and
 >> 20001226-1.c blows up.
 >> 
 >Fixed.
 >
 >
 >Diego.
 >
 >
 >	* tree-dfa.c (add_stmt_operand): Do not add a VUSE for a pointer
 >	when clobbering its associated INDIRECT_REF variable.
Cool.  Thanks.  20001226-1.c now compiles to completion with -O2 in just
under 4 minutes (non-profiled) on my little 1Ghz machine:

Execution times (seconds)
 garbage collection    :   0.49 ( 0%) usr   0.02 ( 1%) sys   0.51 ( 0%) wall
 cfg construction      :   0.48 ( 0%) usr   0.00 ( 0%) sys   0.48 ( 0%) wall
 cfg cleanup           :   3.39 ( 1%) usr   0.00 ( 0%) sys   3.39 ( 1%) wall
 trivially dead code   :   0.42 ( 0%) usr   0.00 ( 0%) sys   0.43 ( 0%) wall
 life analysis         :   1.24 ( 1%) usr   0.12 ( 6%) sys   1.37 ( 1%) wall
 life info update      :   0.52 ( 0%) usr   0.00 ( 0%) sys   0.53 ( 0%) wall
 preprocessing         :   0.10 ( 0%) usr   0.04 ( 2%) sys   0.21 ( 0%) wall
 lexical analysis      :   0.28 ( 0%) usr   0.09 ( 5%) sys   0.25 ( 0%) wall
 parser                :   0.83 ( 0%) usr   0.06 ( 3%) sys   0.94 ( 0%) wall
 integration           :   0.19 ( 0%) usr   0.01 ( 1%) sys   0.20 ( 0%) wall
 tree gimplify         :   1.13 ( 0%) usr   0.02 ( 1%) sys   1.14 ( 0%) wall
 tree CFG construction :   0.11 ( 0%) usr   0.01 ( 1%) sys   0.13 ( 0%) wall
 tree alias analysis   : 126.94 (55%) usr   0.01 ( 1%) sys 126.95 (55%) wall
 tree PHI insertion    :   0.11 ( 0%) usr   0.00 ( 0%) sys   0.10 ( 0%) wall
 tree SSA rewrite      :   0.15 ( 0%) usr   0.02 ( 1%) sys   0.18 ( 0%) wall
 tree SSA other        :   0.35 ( 0%) usr   0.17 ( 9%) sys   0.52 ( 0%) wall
 tree CCP              :   0.58 ( 0%) usr   0.03 ( 2%) sys   0.61 ( 0%) wall
 dominance frontiers   :   0.42 ( 0%) usr   0.30 (16%) sys   0.71 ( 0%) wall
 expand                :   0.37 ( 0%) usr   0.03 ( 2%) sys   0.40 ( 0%) wall
 jump                  :   3.95 ( 2%) usr   0.12 ( 6%) sys   4.07 ( 2%) wall
 CSE                   :   3.16 ( 1%) usr   0.00 ( 0%) sys   3.15 ( 1%) wall
 global CSE            :   1.33 ( 1%) usr   0.39 (21%) sys   1.72 ( 1%) wall
 loop analysis         :   0.04 ( 0%) usr   0.00 ( 0%) sys   0.06 ( 0%) wall
 bypass jumps          :   0.33 ( 0%) usr   0.18 (10%) sys   0.50 ( 0%) wall
 CSE 2                 :   0.30 ( 0%) usr   0.00 ( 0%) sys   0.30 ( 0%) wall
 branch prediction     :  36.21 (16%) usr   0.04 ( 2%) sys  36.24 (16%) wall
 flow analysis         :   0.14 ( 0%) usr   0.02 ( 1%) sys   0.14 ( 0%) wall
 combiner              :   0.20 ( 0%) usr   0.01 ( 1%) sys   0.21 ( 0%) wall
 if-conversion         :  11.97 ( 5%) usr   0.01 ( 1%) sys  11.98 ( 5%) wall
 regmove               :   0.08 ( 0%) usr   0.01 ( 1%) sys   0.09 ( 0%) wall
 mode switching        :   0.21 ( 0%) usr   0.03 ( 2%) sys   0.24 ( 0%) wall
 local alloc           :   0.25 ( 0%) usr   0.03 ( 2%) sys   0.27 ( 0%) wall
 global alloc          :  26.49 (11%) usr   0.03 ( 2%) sys  26.51 (11%) wall
 reload CSE regs       :   0.40 ( 0%) usr   0.00 ( 0%) sys   0.40 ( 0%) wall
 flow 2                :   0.11 ( 0%) usr   0.00 ( 0%) sys   0.11 ( 0%) wall
 if-conversion 2       :   5.99 ( 3%) usr   0.00 ( 0%) sys   5.99 ( 3%) wall
 peephole 2            :   0.06 ( 0%) usr   0.00 ( 0%) sys   0.06 ( 0%) wall
 rename registers      :   0.09 ( 0%) usr   0.04 ( 2%) sys   0.13 ( 0%) wall
 scheduling 2          :   0.26 ( 0%) usr   0.01 ( 1%) sys   0.27 ( 0%) wall
 reorder blocks        :   0.04 ( 0%) usr   0.00 ( 0%) sys   0.04 ( 0%) wall
 shorten branches      :   0.10 ( 0%) usr   0.00 ( 0%) sys   0.10 ( 0%) wall
 final                 :   0.08 ( 0%) usr   0.01 ( 1%) sys   0.09 ( 0%) wall
 rest of compilation   :   0.50 ( 0%) usr   0.00 ( 0%) sys   0.51 ( 0%) wall
 TOTAL                 : 230.41             1.86           232.25

I'm going to revisit the aliasing code and try my idea of reducing
the iteration space by tracking loads and stores separately.  In theory
if it works we should get our may alias information in a few seconds
(and it should help other code as well).

Once that's done I'll pop back to the dominance code and revisit
get_dominated_by vs your sparse bitmap.


Jeff




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