On Sat, Aug 25, 2012 at 11:21 AM, Uros Bizjak <ubiz...@gmail.com> wrote:
> On Sat, Aug 25, 2012 at 7:22 PM, Hans-Peter Nilsson <h...@bitrange.com> wrote:
>
>>> v2 patch differences:
>>> - moves hook description text to target.def
>>> - fixes error path to clear clobbers, as expected by recog_for_combine 
>>> callers
>>>
>>> 2012-08-25  Uros Bizjak  <ubiz...@gmail.com>
>>>
>>>       * target.def (reject_combined_insn): New target hook.
>>>       * doc/tm.texi.in (TARGET_REJECT_COMBINED_INSN): New hook.
>>>       * doc/tm.texi: Regenerated.
>>>       * combine.c (recog_for_combine): Call targetm.reject_combined_insn
>>>       to allow targets to reject combined insn.
>>
>> Maybe mention that the default is to allow all combinations for
>> which a pattern match?  And that the reason to disallow them can
>> be that they're known to result in suboptimal code?  Or other
>> reasons.
>
> Something like this perhaps:
>
> /* Returns true if the combined insn should be rejected
>    for some reason.  */
> DEFHOOK
> (reject_combined_insn,
> "Take an instruction in @var{insn} and return @code{true} if the instruction\
>  should be rejected as a combination of two or more instructions.  The\
>  default is to accept all instructions.",
>  bool, (rtx insn),
>  hook_bool_rtx_false)
>
>> I don't think it should be mentioned that it can be used to stop
>> invalid code to be generated; that'd just be encouraging
>> covering up bugs in reload.  (Using it to simplify the port may
>> be valid.)
>
> Please note that there is no mention of the specific purpose of this
> hook. x86 uses it to counter a specific reload problem, but this is
> just hook _implementation_ detail.


What if we just add a global variable during_combine, and the insn
predicates can check that variable?  Then we wouldn't need a new
target hook, one that seems slightly obscure to me.

My apologies if this was already mentioned, I haven't followed the
thread closely.

Ian

Reply via email to