On Sat, 31 Dec 2011, Matt Davis wrote:

> Hi,
> I am having an RTL problem trying to make a function call from a
> COND_EXEC rtx.  The reload pass has been called, and very simply I
> want to compare on an 64bit x86 %rdx with a specific integer value,
> and if that value is true, my function call executes.  I can call the
> function fine outside of the conditional, but when I set it in the
> conditional expression, I get the following error:
> 
> test.c:6:1: error: unrecognizable insn:

Indeed, x86 does not have a "conditional call" instruction.  You would have to
generate the call in a separate basic block and add a conditional branch
instruction around it.  You can reference the following code, which attempts
to convert any COND_EXECs to explicit control flow:

http://gcc.gnu.org/ml/gcc-patches/2011-10/msg02383.html

(but you will probably need to additionally generate comparison instructions).

Hope that helps,

Alexander

Reply via email to