http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48272

--- Comment #3 from Vladimir Makarov <vmakarov at redhat dot com> 2011-04-07 
21:22:49 UTC ---
(In reply to comment #2)
> Confirmed (nice non-sensical set of options, btw.)
> 
> The problem is that register pressure code is not prepared for new insns
> created during scheduling (for ia64, this is speculation checks and recovery
> code).  The ICE happens because we do not initialize register pressure
> structures.  The below patch seems to fix it, but I am not sure it is 
> correct.  
> 
> The patch calls setup_insn_reg_pressure_info (renamed to
> init_insn_reg_pressure_info because there is the function with the same name 
> in
> haifa-sched.c) from within haifa_init_insn, where new instructions created
> during scheduling are initialized.  The patch does not call 
> setup_insn_reg_uses
> as sched_analyze_insn does, because there is no deps context at that point.  
> If
> some processing of this kind is desired, I guess we need to amend the 
> functions
> that copy/init dependencies for recovery code (that is, 
> create_check_block_twin
> and add_to_speculative_block).  Finally, better name for
> init_insn_reg_pressure_info should be devised.
> 
> Vlad, it would be great if you can advise me on how to improve the patch.
> 
>

It is good enough.  You can commit it of course with a proper changelog entry.

Thanks, Andrey.

Reply via email to