[fpc-devel] ARM compiler. Internal error 200312022
Florian Klaempfl
F.Klaempfl at gmx.de
Sun Jul 3 20:12:00 CEST 2005
Yury Sidorov wrote:
> From: "Florian Klaempfl" <F.Klaempfl at gmx.de>
>
>>> 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 at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-devel
More information about the fpc-devel
mailing list