On Tue, 2007-09-25 at 15:13 +0800, 吴曦 wrote:
> propagate_one_insn), I don't understand why GCC fails the computation
> of liveness if there is no optimization flag :-(.

There is probably something else happening with -O that is recomputing
some liveness or CFG info.  For instance, the flow2 pass will call
split_all_insns and cleanup_cfg, but only with -O.  You could try
selectively disabling other optimization passes to determine which one
is necessary in order for your code to work.  Actually, looking closer,
I see several of them call update_life_info.  regrename for instance has
two update_life_info calls.

Another possibility here is to try calling recompute_reg_usage instead
of doing it yourself.  Or maybe calling just update_life_info directly,
if you need different flags set.

FYI This stuff is all different on mainline since the dataflow merge.
I'm assuming you are using gcc-4.2.x.
-- 
Jim Wilson, GNU Tools Support, http://www.specifix.com


Reply via email to