This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: How to deal with unrecognizable RTL code
- From: Dave Korn <dave dot korn dot cygwin at googlemail dot com>
- To: "daniel.tian" <daniel dot tian at mavrixtech dot com dot cn>
- Cc: gcc at gcc dot gnu dot org
- Date: Mon, 22 Jun 2009 12:33:47 +0100
- Subject: Re: How to deal with unrecognizable RTL code
- References: <20090622015406.66FDB50C9C23@mail.mavrixtech.com.cn>
daniel.tian wrote:
> But I have already defined the PROMOTE_MODE which will convert all the
> QImode, HImode to SImode in computation.
? That's not what the code you posted says:
> 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; \
> }
The docs for PROMOTE_MODE suggest using `word_mode'; it may be that on mips,
Pmode and word_mode are the same, but they aren't on your machine?
> And the RTL mentioned, including
> " SUBREG " should not exist after reload. Now all the instructions
> pattern, which modes are smaller than SImode, formed in SUBREG.
Is one of your MD macros not handling the post-reload REG_OK_STRICT macro
correctly perhaps?
cheers,
DaveK