RTL Conditional and Call
Alexander Monakov
amonakov@ispras.ru
Fri Dec 30 13:51:00 GMT 2011
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
More information about the Gcc
mailing list