This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH v2, middle-end]: Introduce TARGET_REJECT_COMBINED_INSN target hook
On Sat, Aug 25, 2012 at 7:22 PM, Hans-Peter Nilsson <hp@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 <ubizjak@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.
Thanks,
Uros.