This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
SUBREG Unrecognizable RTL
- From: daniel tian <daniel dot xntian at gmail dot com>
- To: gcc at gcc dot gnu dot org
- Cc: Ian Lance Taylor <iant at google dot com>, Dave Korn <dave dot korn dot cygwin at googlemail dot com>, peng dot zheng at mavrixtech dot com
- Date: Wed, 30 Sep 2009 15:17:27 +0800
- Subject: SUBREG Unrecognizable RTL
Hi:
Yeah. You are right. Here is another RTL unrecognized. It happened
after reload.
(insn 749 156 147 22 (set (reg:HI 5 R5)
(subreg:HI (mem/c:SI (plus:SI (reg/f:SI 15 R15)
(const_int 108 [0x6c])) [19 d0+0 S4 A32]) 0)) -1 (nil))
I traced the lots of functions like: reload, reload_as_needed,
emit_reload_insn, do_input_reload, emit_input_reload_insn in reload1.c
file. But I couldn't get any clue.
the gcc clashed in function: cleanup_subreg_operands. Because you can
see the RTL seems move reg to reg, actually it load data from memory.
My target didn't accept this kind of RTL. The memory area is the
pseduo register.94. But the reg_renumber[i] < 0 &&
reg_equiv_memory_loc[i], then the pseduo register.94 was replaced with
memory location.
But I 've no idea about why it generates this kind of unrecognized RTL.
I have been hampered this problem for a while.
Any suggestion is appreciated.
Thanks very much.