Yury Sidorov wrote:

From: "Florian Klaempfl" <[EMAIL PROTECTED]>

var
  i: integer;
begin
  i:=PInteger(123)^;
end;

Yury Sidorov.


Fixed, hopefully I didn't destroy much because I didn't test the fix. Maybe you can create a system.s before applying the patch and diff it with a system.s from the new ppcarm.


system.s is generated properly as before.

But fix is incorrect. The following strange code is generated for assignment:

123 is not aligned to a 32 bit boundary so byte moves are generated (try with 120 instead), at least arm-linux require proper alignment. I agree that the code is suboptimal and that it should generate 4 ld/st instructions but the code is correct imo.


ldr r0,.L9
mov r3,#123
mov r1,#4
.L10:
ldrb r2,[r3], #1
subs r1,r1,#1
strb r2,[r0], #1
bne .L10
...
.L9:
.long U_P$TEST_I

Yury Sidorov.


_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel


_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to