[fpc-devel] Issue with Compiler output for shr on Cortex-M4

Jeppe Johansen jeppe at j-software.dk
Tue Feb 5 21:09:15 CET 2019


I can only reproduce this with peephole optimization turned on (O2). Can 
you share more code that reproduces it?

Either way here's a patch that might fix it?

Best Regards,
Jeppe

On 2/3/19 5:31 PM, Michael Ring wrote:

> Forgot to mention I am using Trunk compiler from today revision 41187 
> ond optimization level was -O1
>
> Michael
>
> Am 03.02.19 um 17:20 schrieb Michael Ring:
>> I think I found another issue with Code generation, this time on 
>> Cortex-M4:
>>
>> I need to write Byte Aligned to the Data Register of the SPI 
>> Interface of a STM32 Chip....
>>
>> so what I (try) to do is:
>>
>> using pByte(@DR)^ to force a single byte transfer and I succeed with 
>> the byte alignment.......
>>
>> BUT
>>
>> please check the generated assembler, the requirred LSRS (SHR) is not 
>> done by the compiler.
>>
>> Just for fun I removed the byte alignment and the LSRS shows up...
>>
>> @Jeppe, can this have to do with the fix for Cortex-M0 you provided 
>> to me a few days ago or is this just another issue?
>>
>>     pByte(@DR)^ := aWord shr 8;
>>      0800 185A  LDR          R0, [R11, #-0x38]
>>      0800 185E  ADD.W        R1, R0, #0xC
>>      0800 1862  LDRH         R0, [R11, #-0x30]
>>      0800 1866  STRB         R0, [R1]
>>
>>     DR := aWord shr 8;
>>      0800 1868  LDRH         R0, [R11, #-0x30]
>>      0800 186C  LSRS         R1, R0, #8
>>      0800 186E  LDR          R0, [R11, #-0x38]
>>      0800 1872  STR          R1, [R0, #0xC]
>>
>> Thank you,
>>
>>
>> Michael
>>
>> _______________________________________________
>> fpc-devel maillist  -  fpc-devel at lists.freepascal.org
>> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: aopt.patch
Type: text/x-patch
Size: 3310 bytes
Desc: not available
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20190205/eab5ba7b/attachment.bin>


More information about the fpc-devel mailing list