Hello, guys:
The porting is really a difficult and huge job. So many things I
don't know or miss result in countless bugs.
I'd like to thank you for your guys in maillist helping so much,
especially, Ian Lance Taylor.
Here I encounter some unrecognizable RTL (R0 to R15 are registers. I
hate the unrecognizable RTL insns always coming about, and I wanna end it.):
(insn 264 191 193 15 (set (reg:HI 5 R5)
(subreg:HI (mem:SI (plus:SI (reg/f:SI 14 R14)
(const_int 12 [0xc])) [0 crc+0 S4 A32]) 0)) -1 (nil)
(nil))
(insn 261 197 200 14 (set (reg:HI 5 R5)
(subreg:HI (mem:SI (reg/f:SI 14 R14) [7 crc.16+0 S4 A32]) 0)) -1
(nil)
(nil))
PROMOTE_MODE, stolen from mips, is defined in my port:
#define PROMOTE_MODE(MODE, UNSIGNEDP, TYPE) \
if (GET_MODE_CLASS (MODE) == MODE_INT \
&& GET_MODE_SIZE (MODE) < UNITS_PER_WORD) \
{ \
(MODE) = Pmode; \
}
I don't know whether those RTL related with this macro. Yeah, there is a
solution to fix them -- updated the LOAD/STORE constraint. But I don't think
it's a good point.
My RISC chip only accepts the specified RTL which I have already defined
them with insn and expand patterns. So I think there must be a way which
legitimizes RTL code.
(insn:HI 17 13 14 0 (set (mem/s:SI (plus:SI (mem/f:SI (reg/f:SI 14 R14) [15
header+0 S4 A32])
(const_int 32 [0x20])) [10 <variable>.private_bits+0 S4
A32])
(reg:SI 4 R4 [56])) 8 {store_si} (insn_list:REG_DEP_TRUE 13
(insn_list:REG_DEP_TRUE 6 (nil)))
(expr_list:REG_EQUAL (const_int 0 [0x0])
(nil)))
If I have to fix those RTL one by one, that would be so tough! So did there
are some macros or TARGET HOOKs, which retrieve those unknown RTL, then, I
can write code there to force them into specified way.
Any suggestion is appreciated!
Thank you very much!
Daniel.Tian
_______________________________________________
Best Regards
Daniel Tian
Tel:86(21)51095958 - 8125
Fax:86(21)50277658
email:[email protected]
www.mavrixtech.com