This is the mail archive of the gcc-help@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]

Does a target system must support indexing?


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
  
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?

PS:
- the debug output in TARGET_LEGITIMATE_ADDRESS_P is stollen 
  from the avr backend
- r18 is the frame pointer
- sorry for my bad englisch. i am from germany.

Thanks in advanced

Andreas
-- 
Empfehlen Sie GMX DSL Ihren Freunden und Bekannten und wir
belohnen Sie mit bis zu 50,- Euro! https://freundschaftswerbung.gmx.de


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