From 1d3a469b494c5482045a06e8794841257301b2e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gu=C3=B0ni=20M=C3=A1r=20Gilbert?= Date: Sat, 27 Jul 2024 22:28:28 +0000 Subject: [PATCH] cmake: enable -mcall-prologues Reduces flash memory usage by ~300B The CMake build outputs an ASM file for the firmware image and is human readable. To see the impacted functions, look for these routines: __prologue_saves__ __epilogue_restores__ They should come in pairs. For more info about this option, see: https://gcc.gnu.org/onlinedocs/gcc-7.3.0/gcc/AVR-Options.html#AVR-Options --- CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index caf0171..21d840c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -127,6 +127,9 @@ if(CMAKE_CROSSCOMPILING) # split and gc sections add_compile_options(-ffunction-sections -fdata-sections) add_link_options(-ffunction-sections -fdata-sections -Wl,--gc-sections) + + # Call Prologues/Epilogues to reduce code size + add_compile_options(-mcall-prologues) else() if(CMAKE_BUILD_TYPE STREQUAL "Debug") add_compile_options(-O0)