On Tue, May 18, 2010 at 3:26 PM, Dave Korn <dave.korn.cyg...@gmail.com> wrote:
>>
>> This however causes an unrecognizable insn error during the compiler
>> runtime when I have TARGET_X defined.
>> I was expecting the clobbers not to influence the recognition but it
>> seems I was wrong.
>
>  Actually, IIUC the clobbers don't influence the recognition, that is
> correct, so both those patterns look identical to the recognizer and
> effectively only the first one will ever be matched by combine, then too late
> the target condition kicks in and the second one pops up and goes "oi, where's
> my clobbers?".  Or something like that.
>

Got it, thanks for the explanation. It makes sense.

>  I think what you need to do is explicitly (TARGET_X ? gen_call_value_complex
> : gen_call_value); DONE in your expander.
>

So I guess i need something like
emit_call_insn(TARGET_X ? gen_call_value_complex(...) :
gen_call_value(...)); DONE

but what do I pass to the gen_* functions? I don't really have
anything to pass to them at this point, I just want gcc to expand
those. However if I pass no arguments it claims I haven't passed
enough arguments.

-- 
PMatos

Reply via email to