This is the mail archive of the gcc@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] Question: going in and out of SSA


In message <2C934D0A-3BD9-11D8-9C57-000393A91CAA@apple.com>, Devang Patel write
s:
 >It seems, after going through various optimization passes,
 >SSA tree IR does not maintain form that allows me to
 >rewrite trees in & out of SSA form.
 >
 >For example,
 >
 >--- foo.c ---
 >void foo(int *a, int len)
 >{
 >         int i;
 >         for (i = 0; i < len; i++)
 >           a[i] = 0;
 >         return;
 >}
 >
 >I get following ICE (inside rewrite_into_ssa()) while compiling foo.c 
 >using -O2
 >foo.c:2: internal compiler error: in get_expr_operands, at 
 >tree-ssa-operands.c:905
 >
 >This is the only change I've in my local tree:
If you really need to rewrite everything out of SSA form, then try to
go back into SSA form (or do anything which calls get_expr_operands),
then you need to disable temporary expression replacement (TER).  

TER creates non-gimple code which is the most likely reason why 
you got the abort.


You'd probably be better off only rewriting those variables which are
affected by your changes -- assuming of course that you can compute
that set of variables without an amazing amount of difficulty.  That's
what the dominator optimizer does when it threads jumps -- threading
jumps changes the dominator tree and requires a subset of the program's
variables to be taken out of SSA form, then rewritten back into SSA form.


jeff


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