Re: Does a target system must support indexing?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Setjem Setjem wrote:
> Does a target system must support indexing? I have tried to disable 
> indexing by setting the following macros:
> 
> #define INDEX_REG_CLASS             NO_REGS
> #define REGNO_OK_FOR_INDEX_P(num)   0
> 
> and rejecting all addresses with side effects in the target 
> hook TARGET_LEGITIMATE_ADDRESS_P.
> 
> But it seems that the compiler still trying to use indexes.
> For example the compiler fails at:
> 
> C-code:
> 
>   void fail(long long *v)
>   {
> 	*v += 1;
>   }
> 
> Failure:
> 
>   fail.c: In function 'fail':
>   fail.c:4:1: internal compiler error: in change_address_1, at emit-rtl.c:1933
>   Please submit a full bug report,
>   with preprocessed source if appropriate.
>   See <http://gcc.gnu.org/bugs.html> for instructions.
> 
> Last debug info from TARGET_LEGITIMATE_ADDRESS_P:
> 
>   legitimate_address_p:
>     mode: (SI)  (reload_completed)  (reg_renumber):
>                 (r18 ---> r18)
>     address:    (plus:SI (reg/f:SI 18 r18)
>                          (const_int 4 [0x4]))
>   return false

This is not indexed addressing.  Indexed addressing would be
[reg+reg] or [reg + const*reg]

> I am not sure if it fails because of the index or i made 
> some mistakes in describing the handling of long long values. 
> But still. Why the compiler tried to use indexing?

Look at TARGET_LEGITIMIZE_ADDRESS and at expand time you can
force the [reg+const] addresses into a register.

Johann



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux