This is the mail archive of the gcc-patches@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: RFA: one more patch to solve PR37535


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


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