armv8-m: GCC/ArmClang: Remove redundant constant pools #1035
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Currently in Armv8-M GCC/ArmClang ports, constant pool is used to define literals needed for
ldr
instruction. However, those constant pools are defined with.align 4
which increases code size. Instead of defining the constant pool with.align 4
, let the compiler hanlde the constant pool and the required alignment.Benchmarking these changes using Cortex-M85 (Corstone-315) and blinky application in https://github.com/FreeRTOS/iot-reference-arm-corstone3xx/tree/main/applications/blinky shows a code size reduction of
72 bytes (GCC)
and56 bytes (ArmClang)
.Additional info:
Armv8-M IAR port doesn't use any constant pool. With these changes all three ports GCC/ArmClang/IAR are aligned.
Test Steps
Validated the changes using GCC and ArmClang and using blinky application in https://github.com/FreeRTOS/iot-reference-arm-corstone3xx/tree/main/applications/blinky and:
Still to validate:
Checklist:
Related Issue
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.