From eb8b2fb138e8955ea32709048d3fa733537bce8e Mon Sep 17 00:00:00 2001 From: florian Date: Wed, 7 Feb 2007 17:43:56 +0000 Subject: [PATCH] * be more carefull with unaligned load optimization git-svn-id: trunk@6356 - --- compiler/arm/cgcpu.pas | 10 ++++++++-- compiler/ncgmem.pas | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/compiler/arm/cgcpu.pas b/compiler/arm/cgcpu.pas index 419a11d2a3..114a7411a1 100644 --- a/compiler/arm/cgcpu.pas +++ b/compiler/arm/cgcpu.pas @@ -857,7 +857,10 @@ unit cgcpu; if assigned(ref.symbol) or (ref.index<>NR_NO) or (ref.offset<-4095) or - (ref.offset>4094) then + (ref.offset>4094) or + { sometimes the compiler reused registers } + (reg=ref.index) or + (reg=ref.base) then begin tmpreg3:=getintregister(list,OS_INT); a_loadaddr_ref_reg(list,ref,tmpreg3); @@ -886,7 +889,10 @@ unit cgcpu; if assigned(ref.symbol) or (ref.index<>NR_NO) or (ref.offset<-4095) or - (ref.offset>4092) then + (ref.offset>4092) or + { sometimes the compiler reused registers } + (reg=ref.index) or + (reg=ref.base) then begin tmpreg3:=getintregister(list,OS_INT); a_loadaddr_ref_reg(list,ref,tmpreg3); diff --git a/compiler/ncgmem.pas b/compiler/ncgmem.pas index 86601efe3b..1357eaff82 100644 --- a/compiler/ncgmem.pas +++ b/compiler/ncgmem.pas @@ -375,7 +375,7 @@ implementation (tabstractrecordsymtable(vs.owner).usefieldalignment=1) then location.reference.alignment:=1; {$endif SUPPORT_UNALIGNED} - + end else if (vs.fieldoffset mod 8 = 0) and (resultdef.packedbitsize mod 8 = 0) and