This is the mail archive of the 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 <>, Diego Novillo w
 >Reduces the number of basic blocks in the CFG by making
 >COND_EXPRs and SWITCH_EXPRs not create a new block.  Rather, it
 >makes them the last statement in the block.
 >Before, we would create three basic blocks for this fragment:
 >	s1;		<- BB0
 >	if (...)	<- BB1
 >	  s2;		<- BB2
 >Now we only create two:
 >	s1;
 >	if (...)	<- BB0
 >	  s2;		<- BB1
 >This change reduces compile times for some files like c-parse.c
 >by about 50%.  It should also help the semi-pruning heuristic
 >that we have now for inserting PHI nodes.  Bigger blocks should
 >provide more opportunities for finding locally dead variables.
 >The change is fairly simple:
 >- COND_EXPR and SWITCH_EXPR mark the termination of a block.
 >- Control statements are not taken from the top of a block.  They
 >  all appear at the bottom.
 >Bootstrapped and tested on x86.

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.

Anyway, it's still significant progress..  Thanks!


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