Index: gcc/gcc/config/i386/i386.c |
diff --git a/gcc/gcc/config/i386/i386.c b/gcc/gcc/config/i386/i386.c |
index 42c2dbfe995581075a9f038f3ec4c31bad087673..24a9cf0e5614205f39b507d335484f697da90f61 100644 |
--- a/gcc/gcc/config/i386/i386.c |
+++ b/gcc/gcc/config/i386/i386.c |
@@ -19111,7 +19111,13 @@ ix86_expand_call (rtx retval, rtx fnaddr, rtx callarg1, |
fnaddr = gen_rtx_MEM (QImode, fnaddr); |
} |
- call = gen_rtx_CALL (VOIDmode, fnaddr, callarg1); |
+ if (!TARGET_NACL |
+ || (GET_CODE (fnaddr) == MEM |
+ && constant_call_address_operand (XEXP (fnaddr, 0), Pmode))) |
+ call = gen_rtx_CALL (VOIDmode, fnaddr, callarg1); |
+ else |
+ call = gen_rtx_UNSPEC (VOIDmode, gen_rtvec (2, fnaddr, callarg1), |
pasko-google - do not use
2010/06/21 21:42:11
did you investigate the possibility to make a (cal
eaeltsin
2010/06/22 04:04:55
I generate rtl that is matchable with naclcall def
|
+ UNSPEC_NACLCALL); |
if (retval) |
call = gen_rtx_SET (VOIDmode, retval, call); |
if (pop) |