This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: own target: combine emits invalid RTL
Jim Wilson wrote:
> Dave Korn wrote:
>> First places to look would be GO_IF_LEGITIMATE_ADDRESS and
>> REG_OK_FOR_BASE_P, wouldn't they? Particularly in conjunction with
>> REG_OK_STRICT.
>
> This could be a REG_OK_STRICT issue, but it isn't the usual case of
> accepting an unallocated pseudo in reload, as we have a SUBREG MEM here.
>
> Probably there is code in the backend that assumes SUBREG can only
> contain a REG, which is incorrect. SUBREG can also contain a MEM.
> You need to check to make sure.
Hi
A few weeks ago i had a problem during reload pass. So i added a non
strict implementation to GO_IF_LEGITIMATE_ADDRESS. So I think thats not
the issue. This should now be implemented properly.
I tried to define an automaton but this breaks my flow analysis. The
flow pass emits no return in some cases. The code generation differs
after the scheduler pass. I removed the precompiler commands in
combine.c and now it works.
The real problem is: I thought a subreg is just a partial reg. My
machine has no subregs so i used subregs like usual registers. Maybe i
have to redesign my port
Thanks for your help
Michael Fogel