Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

kbuild,arc: add CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3 for ARC

arch/arc/Makefile overrides -O2 with -O3. This is the only user of
ARCH_CFLAGS. There is no user of ARCH_CPPFLAGS or ARCH_AFLAGS.
My plan is to remove ARCH_{CPP,A,C}FLAGS after refactoring the ARC
Makefile.

Currently, ARC has no way to enable -Wmaybe-uninitialized because both
-O3 and -Os disable it. Enabling it will be useful for compile-testing.
This commit allows allmodconfig (, which defaults to -O2) to enable it.

Add CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3=y to all the defconfig files
in arch/arc/configs/ in order to keep the current config settings.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Vineet Gupta <vgupta@synopsys.com>

+32 -14
+6 -4
Makefile
··· 723 723 KBUILD_CFLAGS += $(call cc-disable-warning, format-overflow) 724 724 KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member) 725 725 726 - ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE 727 - KBUILD_CFLAGS += -Os 728 - else 729 - KBUILD_CFLAGS += -O2 726 + ifdef CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE 727 + KBUILD_CFLAGS += -O2 728 + else ifdef CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3 729 + KBUILD_CFLAGS += -O3 730 + else ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE 731 + KBUILD_CFLAGS += -Os 730 732 endif 731 733 732 734 ifdef CONFIG_CC_DISABLE_WARN_MAYBE_UNINITIALIZED
-8
arch/arc/Makefile
··· 48 48 cfi := $(call as-instr,.cfi_startproc\n.cfi_endproc,-DARC_DW2_UNWIND_AS_CFI) 49 49 cflags-$(CONFIG_ARC_DW2_UNWIND) += -fasynchronous-unwind-tables $(cfi) 50 50 51 - ifndef CONFIG_CC_OPTIMIZE_FOR_SIZE 52 - # Generic build system uses -O2, we want -O3 53 - # Note: No need to add to cflags-y as that happens anyways 54 - # 55 - # Disable the false maybe-uninitialized warings gcc spits out at -O3 56 - ARCH_CFLAGS += -O3 $(call cc-disable-warning,maybe-uninitialized,) 57 - endif 58 - 59 51 # small data is default for elf32 tool-chain. If not usable, disable it 60 52 # This also allows repurposing GP as scratch reg to gcc reg allocator 61 53 disable_small_data := y
+1
arch/arc/configs/axs101_defconfig
··· 9 9 # CONFIG_UTS_NS is not set 10 10 # CONFIG_PID_NS is not set 11 11 CONFIG_BLK_DEV_INITRD=y 12 + CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3=y 12 13 CONFIG_EMBEDDED=y 13 14 CONFIG_PERF_EVENTS=y 14 15 # CONFIG_VM_EVENT_COUNTERS is not set
+1
arch/arc/configs/axs103_defconfig
··· 9 9 # CONFIG_UTS_NS is not set 10 10 # CONFIG_PID_NS is not set 11 11 CONFIG_BLK_DEV_INITRD=y 12 + CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3=y 12 13 CONFIG_EMBEDDED=y 13 14 CONFIG_PERF_EVENTS=y 14 15 # CONFIG_VM_EVENT_COUNTERS is not set
+1
arch/arc/configs/axs103_smp_defconfig
··· 9 9 # CONFIG_UTS_NS is not set 10 10 # CONFIG_PID_NS is not set 11 11 CONFIG_BLK_DEV_INITRD=y 12 + CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3=y 12 13 CONFIG_EMBEDDED=y 13 14 CONFIG_PERF_EVENTS=y 14 15 # CONFIG_VM_EVENT_COUNTERS is not set
+1
arch/arc/configs/haps_hs_defconfig
··· 10 10 # CONFIG_UTS_NS is not set 11 11 # CONFIG_PID_NS is not set 12 12 CONFIG_BLK_DEV_INITRD=y 13 + CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3=y 13 14 CONFIG_EXPERT=y 14 15 CONFIG_PERF_EVENTS=y 15 16 # CONFIG_COMPAT_BRK is not set
+1
arch/arc/configs/haps_hs_smp_defconfig
··· 10 10 # CONFIG_UTS_NS is not set 11 11 # CONFIG_PID_NS is not set 12 12 CONFIG_BLK_DEV_INITRD=y 13 + CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3=y 13 14 CONFIG_EMBEDDED=y 14 15 CONFIG_PERF_EVENTS=y 15 16 # CONFIG_VM_EVENT_COUNTERS is not set
+1
arch/arc/configs/hsdk_defconfig
··· 9 9 # CONFIG_PID_NS is not set 10 10 CONFIG_BLK_DEV_INITRD=y 11 11 CONFIG_BLK_DEV_RAM=y 12 + CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3=y 12 13 CONFIG_EMBEDDED=y 13 14 CONFIG_PERF_EVENTS=y 14 15 # CONFIG_VM_EVENT_COUNTERS is not set
+1
arch/arc/configs/nps_defconfig
··· 6 6 CONFIG_IKCONFIG=y 7 7 CONFIG_IKCONFIG_PROC=y 8 8 CONFIG_BLK_DEV_INITRD=y 9 + CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3=y 9 10 CONFIG_SYSCTL_SYSCALL=y 10 11 # CONFIG_EPOLL is not set 11 12 # CONFIG_SIGNALFD is not set
+1
arch/arc/configs/nsim_700_defconfig
··· 10 10 # CONFIG_UTS_NS is not set 11 11 # CONFIG_PID_NS is not set 12 12 CONFIG_BLK_DEV_INITRD=y 13 + CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3=y 13 14 CONFIG_KALLSYMS_ALL=y 14 15 CONFIG_EMBEDDED=y 15 16 CONFIG_PERF_EVENTS=y
+1
arch/arc/configs/nsim_hs_defconfig
··· 10 10 # CONFIG_UTS_NS is not set 11 11 # CONFIG_PID_NS is not set 12 12 CONFIG_BLK_DEV_INITRD=y 13 + CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3=y 13 14 CONFIG_KALLSYMS_ALL=y 14 15 CONFIG_EMBEDDED=y 15 16 CONFIG_PERF_EVENTS=y
+1
arch/arc/configs/nsim_hs_smp_defconfig
··· 8 8 # CONFIG_UTS_NS is not set 9 9 # CONFIG_PID_NS is not set 10 10 CONFIG_BLK_DEV_INITRD=y 11 + CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3=y 11 12 CONFIG_KALLSYMS_ALL=y 12 13 CONFIG_EMBEDDED=y 13 14 CONFIG_PERF_EVENTS=y
+1
arch/arc/configs/nsimosci_defconfig
··· 10 10 # CONFIG_UTS_NS is not set 11 11 # CONFIG_PID_NS is not set 12 12 CONFIG_BLK_DEV_INITRD=y 13 + CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3=y 13 14 CONFIG_KALLSYMS_ALL=y 14 15 CONFIG_EMBEDDED=y 15 16 CONFIG_PERF_EVENTS=y
+1
arch/arc/configs/nsimosci_hs_defconfig
··· 10 10 # CONFIG_UTS_NS is not set 11 11 # CONFIG_PID_NS is not set 12 12 CONFIG_BLK_DEV_INITRD=y 13 + CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3=y 13 14 CONFIG_KALLSYMS_ALL=y 14 15 CONFIG_EMBEDDED=y 15 16 CONFIG_PERF_EVENTS=y
+1
arch/arc/configs/nsimosci_hs_smp_defconfig
··· 8 8 # CONFIG_UTS_NS is not set 9 9 # CONFIG_PID_NS is not set 10 10 CONFIG_BLK_DEV_INITRD=y 11 + CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3=y 11 12 CONFIG_PERF_EVENTS=y 12 13 # CONFIG_COMPAT_BRK is not set 13 14 CONFIG_KPROBES=y
+1
arch/arc/configs/tb10x_defconfig
··· 14 14 CONFIG_INITRAMFS_ROOT_UID=2100 15 15 CONFIG_INITRAMFS_ROOT_GID=501 16 16 # CONFIG_RD_GZIP is not set 17 + CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3=y 17 18 CONFIG_SYSCTL_SYSCALL=y 18 19 CONFIG_KALLSYMS_ALL=y 19 20 # CONFIG_AIO is not set
+1
arch/arc/configs/vdk_hs38_defconfig
··· 4 4 CONFIG_IKCONFIG=y 5 5 CONFIG_IKCONFIG_PROC=y 6 6 CONFIG_BLK_DEV_INITRD=y 7 + CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3=y 7 8 CONFIG_EMBEDDED=y 8 9 CONFIG_PERF_EVENTS=y 9 10 # CONFIG_VM_EVENT_COUNTERS is not set
+1
arch/arc/configs/vdk_hs38_smp_defconfig
··· 4 4 CONFIG_IKCONFIG=y 5 5 CONFIG_IKCONFIG_PROC=y 6 6 CONFIG_BLK_DEV_INITRD=y 7 + CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3=y 7 8 CONFIG_EMBEDDED=y 8 9 CONFIG_PERF_EVENTS=y 9 10 # CONFIG_VM_EVENT_COUNTERS is not set
+10 -2
init/Kconfig
··· 1209 1209 default CC_OPTIMIZE_FOR_PERFORMANCE 1210 1210 1211 1211 config CC_OPTIMIZE_FOR_PERFORMANCE 1212 - bool "Optimize for performance" 1212 + bool "Optimize for performance (-O2)" 1213 1213 help 1214 1214 This is the default optimization level for the kernel, building 1215 1215 with the "-O2" compiler flag for best performance and most 1216 1216 helpful compile-time warnings. 1217 1217 1218 + config CC_OPTIMIZE_FOR_PERFORMANCE_O3 1219 + bool "Optimize more for performance (-O3)" 1220 + depends on ARC 1221 + imply CC_DISABLE_WARN_MAYBE_UNINITIALIZED # avoid false positives 1222 + help 1223 + Choosing this option will pass "-O3" to your compiler to optimize 1224 + the kernel yet more for performance. 1225 + 1218 1226 config CC_OPTIMIZE_FOR_SIZE 1219 - bool "Optimize for size" 1227 + bool "Optimize for size (-Os)" 1220 1228 imply CC_DISABLE_WARN_MAYBE_UNINITIALIZED # avoid false positives 1221 1229 help 1222 1230 Choosing this option will pass "-Os" to your compiler resulting