comparison 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
comparison
equal deleted inserted replaced
24:f37d7058d1ce 25:2476ed92181e
18776 : !call_insn_operand (XEXP (fnaddr, 0), Pmode)) 18776 : !call_insn_operand (XEXP (fnaddr, 0), Pmode))
18777 { 18777 {
18778 fnaddr = copy_to_mode_reg (Pmode, XEXP (fnaddr, 0)); 18778 fnaddr = copy_to_mode_reg (Pmode, XEXP (fnaddr, 0));
18779 fnaddr = gen_rtx_MEM (QImode, fnaddr); 18779 fnaddr = gen_rtx_MEM (QImode, fnaddr);
18780 } 18780 }
18781
18782 #ifndef noCbC
18783 if (pop
18784 && sibcall
18785 && !( GET_CODE (fnaddr) == MEM
18786 && GET_CODE (XEXP (fnaddr, 0)) == SYMBOL_REF) )
18787 {
18788 rtx eax = gen_rtx_REG (Pmode, AX_REG);
18789 eax = copy_to_suggested_reg (XEXP (fnaddr, 0), eax, Pmode);
18790 fnaddr = gen_rtx_MEM (QImode, eax);
18791 }
18792 #endif
18781 18793
18782 call = gen_rtx_CALL (VOIDmode, fnaddr, callarg1); 18794 call = gen_rtx_CALL (VOIDmode, fnaddr, callarg1);
18783 if (retval) 18795 if (retval)
18784 call = gen_rtx_SET (VOIDmode, retval, call); 18796 call = gen_rtx_SET (VOIDmode, retval, call);
18785 if (pop) 18797 if (pop)