mirror of
https://github.com/apache/nuttx.git
synced 2026-06-04 23:03:27 +08:00
arm/armlink: add support of link time optimization(lto)
Optimization goal(Code size)
Smaller GCC(-Os) GCC(-flto -Os) CLANG(-flto -Oz) ARMCLANG(-flto -Oz/-Omin)
lm3s6965-ek/qemu-flat(Cortex-M3) 208662 193893 199525 195464
-7.07% -4.37% -6.32%
sabre-6quad/smp(Cortex-A9) 131360 122500 N/A 123988
-6.74% N/A -5.61%
Faster performance GCC(-O3) GCC(-flto -O3) CLANG(-flto -Ofast) ARMCLANG(-flto -Ofast) ARMCLANG(-flto -Omax)
lm3s6965-ek/qemu-flat(Cortex-M3) 257502 296364 369465 346696 384204
+15.00% +43.40% +34.60% +49.20%
sabre-6quad/smp(Cortex-A9) 166520 196004 N/A 207908 224140
+17.70% N/A +24.85% +34.60%
Reference:
https://developer.arm.com/documentation/101754/0618/armclang-Reference/armclang-Command-line-Options/-O--armclang-
Signed-off-by: chao an <anchao@xiaomi.com>
This commit is contained in:
@@ -78,11 +78,17 @@ endif
|
|||||||
|
|
||||||
ifeq ($(CONFIG_LTO_THIN),y)
|
ifeq ($(CONFIG_LTO_THIN),y)
|
||||||
ARCHOPTIMIZATION += -flto=thin
|
ARCHOPTIMIZATION += -flto=thin
|
||||||
|
ifeq ($(CONFIG_ARM_TOOLCHAIN_ARMCLANG),y)
|
||||||
|
LDFLAGS += --lto
|
||||||
|
endif
|
||||||
else ifeq ($(CONFIG_LTO_FULL),y)
|
else ifeq ($(CONFIG_LTO_FULL),y)
|
||||||
ARCHOPTIMIZATION += -flto
|
ARCHOPTIMIZATION += -flto
|
||||||
ifeq ($(CONFIG_ARM_TOOLCHAIN_GNU_EABI),y)
|
ifeq ($(CONFIG_ARM_TOOLCHAIN_GNU_EABI),y)
|
||||||
ARCHOPTIMIZATION += -fuse-linker-plugin
|
ARCHOPTIMIZATION += -fuse-linker-plugin
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(CONFIG_ARM_TOOLCHAIN_ARMCLANG),y)
|
||||||
|
LDFLAGS += --lto
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# NuttX buildroot under Linux or Cygwin
|
# NuttX buildroot under Linux or Cygwin
|
||||||
@@ -220,9 +226,10 @@ ifneq ($(CONFIG_CXX_RTTI),y)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ARCHOPTIMIZATION += -fno-common -Wall -Wshadow -Wundef
|
ARCHOPTIMIZATION += -fno-common -Wall -Wshadow -Wundef
|
||||||
ARCHOPTIMIZATION += -nostdlib
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_ARM_TOOLCHAIN_ARMCLANG),)
|
ifeq ($(CONFIG_ARM_TOOLCHAIN_ARMCLANG),y)
|
||||||
|
ARCHOPTIMIZATION += -nostdlib
|
||||||
|
else
|
||||||
LDFLAGS += -nostdlib
|
LDFLAGS += -nostdlib
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ OSCRAM_SECTIONS DDR3_START DDR3_SIZE
|
|||||||
CONSTRUCTORS
|
CONSTRUCTORS
|
||||||
}
|
}
|
||||||
|
|
||||||
bss AlignExpr(ImageLimit(data), 0x8)
|
bss AlignExpr(ImageLimit(data), 0x10)
|
||||||
{
|
{
|
||||||
*(.bss)
|
*(.bss)
|
||||||
*(.bss.*)
|
*(.bss.*)
|
||||||
|
|||||||
Reference in New Issue
Block a user