This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Help in libgcc for the assembly code generation
- From: nitin jain <nitin_mbm at yahoo dot com>
- To: gcc-help at gcc dot gnu dot org
- Date: Fri, 12 Dec 2003 02:59:00 -0800 (PST)
- Subject: Help in libgcc for the assembly code generation
Dear All,
I added a new Back-end in the GCC. After configuring
GCC for this
Back-end, generated assembly code or intermediate code
gives some
problem.
This is a C Program.
-----------------------------------------------------------------------
int main(void)
{
int i,j;
j=0;
i=8;
if(j)
goto nitinj;
j=i<222;
nitinj:
return j;
}
-------------------------------------------------------------------------
This is a part of RTL code.
-------------------------------------------------------------------------
(insn 40 39 41 (set (reg/f:SI 0 ret [35])
(reg/f:SI 0 ret [34])) 1 {*movsi_1}
(nil)
(nil))
(insn 41 40 42 (set (mem:SI (reg/f:SI 0 ret [35]) [0
S4 A32])
(const_int 221 [0xdd])) 1 {*movsi_1}
(nil)
(nil))(call_insn/u 42 41 44 (set
(reg:SI 0 ret)
(call (mem:QI (symbol_ref:SI
("__cmpsi2")) [0 S1 A8])
(const_int 8 [0x8]))) 4 {call_value}
(nil)
(expr_list:REG_EH_REGION (const_int -1
[0xffffffff])
(nil))
(expr_list (clobber (reg/f:SI 10 sp))
(nil)))
(insn 44 42 45 (set (reg:SI 0 ret [37])
(reg:SI 0 ret)) 1 {*movsi_1} (nil)
(nil))
(insn 45 44 46 (set (cc0)
(compare (reg:SI 0 ret [37])
(const_int 1 [0x1]))) 8 {*cmpsi_1}
(nil)
(nil))
-------------------------------------------------------------------------
My problem is that why there is a call to "__cmpsi2"
while there is no
such thing in my .md file.
The part of the .md which is for `cmp op'.
-----------------------------------------------------------------------
( define_expand "cmpsi"
[(set (cc0) (compare (match_operand:SI 0
"general_operand" "")
(match_operand:SI 1
"general_operand" "")))]
""
"")
( define_insn "*cmpsi_1"
[(set (cc0) (compare (match_operand:SI 0
"cmp_dest_op" "")(match_operand:SI 1 "cmp_src_op"
"i")))]
""
"*
toy_cmp_insn (operands[0], operands[1]);
")
`cmp_dest_op' checks that operand should be a memory
or reg while
`cmp_src_op' checks that operand should be a
const_int.
-----------------------------------------------------------------------
I got some information that this is because of the
default library
functions provided by GCC as `libgcc1.a'. I don't know
how to disable the
calling of such function in the assembly code
generation process.
Please give me some suggestion.
Thanks a lot.
Nitin
---------------------------
Nitin Jain (H-12/#A-415)
Computer Science and Engg,
IIT BOMBAY,
POWAI, MUMBAI 400076
Phone : 4748 (Lab)
---------------------------
__________________________________
Do you Yahoo!?
New Yahoo! Photos - easier uploading and sharing.
http://photos.yahoo.com/