This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: RFA: one more patch to solve PR37535
- From: "Andrew Pinski" <pinskia at gmail dot com>
- To: "Vladimir Makarov" <vmakarov at redhat dot com>
- Cc: gcc-patches <gcc-patches at gcc dot gnu dot org>, "Jeffrey Law" <law at redhat dot com>
- Date: Mon, 29 Sep 2008 15:32:48 -0700
- Subject: Re: RFA: one more patch to solve PR37535
- References: <48E1565A.5060004@redhat.com>
On Mon, Sep 29, 2008 at 3:27 PM, Vladimir Makarov <vmakarov@redhat.com> wrote:
> Jeff, This is one more patch to fix PR37355. The changes in comparison with
> previous version are in mark_early_clobber and process_bb_node_lives. The
> problem was in wrong processing early clobber of hard registers which are
> not operands and therefore have no constraints. One example of such insn
> from rs6000.md is
>
> (define_insn ""
> [(set (mem:BLK (match_operand:SI 0 "gpc_reg_operand" "b"))
> (mem:BLK (match_operand:SI 1 "gpc_reg_operand" "b")))
> (use (match_operand:SI 2 "immediate_operand" "i"))
> (use (match_operand:SI 3 "immediate_operand" "i"))
> (clobber (match_operand:SI 4 "gpc_reg_operand" "=&r"))
> (clobber (reg:SI 6))
> (clobber (reg:SI 7))
> (clobber (reg:SI 8))
> (clobber (reg:SI 9))
> (clobber (reg:SI 10))
> (clobber (reg:SI 11))
> (clobber (reg:SI 12))
> (clobber (match_scratch:SI 5 "=q"))]
>
> Now all clobbers of hard registers are treated as early clobbers.
That pattern is not normally turned on. The ones which are normally
matched are the call patterns which have a clobber of LR_REGNO.
(define_insn "*call_local32"
[(call (mem:SI (match_operand:SI 0 "current_file_function_operand" "s,s"))
(match_operand 1 "" "g,g"))
(use (match_operand:SI 2 "immediate_operand" "O,n"))
(clobber (reg:SI LR_REGNO))]
:)
Thanks,
Andrew Pinski