This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Does a target system must support indexing?
- From: "Setjem Setjem" <Setjem at gmx dot de>
- To: gcc-help at gcc dot gnu dot org
- Date: Fri, 01 Jun 2012 13:59:49 +0200
- Subject: 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