Mercurial > hg > CbC > CbC_gcc
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) |