This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]