Mercurial > hg > CbC > CbC_gcc
diff gcc/config/i386/i386.c @ 25:2476ed92181e
modified machine description of i386 for support indirect sibcall attributed fastcall.
author | kent <kent@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 27 Oct 2009 16:04:06 +0900 |
parents | 58ad6c70ea60 |
children | 27e6f95b2c21 |
line wrap: on
line diff
--- a/gcc/config/i386/i386.c Thu Oct 15 18:47:39 2009 +0900 +++ b/gcc/config/i386/i386.c Tue Oct 27 16:04:06 2009 +0900 @@ -18779,6 +18779,18 @@ fnaddr = gen_rtx_MEM (QImode, fnaddr); } +#ifndef noCbC + if (pop + && sibcall + && !( GET_CODE (fnaddr) == MEM + && GET_CODE (XEXP (fnaddr, 0)) == SYMBOL_REF) ) + { + rtx eax = gen_rtx_REG (Pmode, AX_REG); + eax = copy_to_suggested_reg (XEXP (fnaddr, 0), eax, Pmode); + fnaddr = gen_rtx_MEM (QImode, eax); + } +#endif + call = gen_rtx_CALL (VOIDmode, fnaddr, callarg1); if (retval) call = gen_rtx_SET (VOIDmode, retval, call);