On Mon, Jan 4, 2016 at 11:54 AM, Sedat Dilek <sedat.dilek@xxxxxxxxx> wrote: > [ Not sure if I have addressed all the correct people and mailing-lists ] > > Hi, > > while still digging into a llvmlinux issue with workqueue I saw that > the wrong optimization compiler-flag was used on x86 architecture and > acpi subsystem. > > CLANG requires '-Oz' whereas GCC requires '-Os'. > > As acpi-daemon was throwing out the regression I looked by accident > over the *_CFLAGS. > As said... I checked only for x86 and acpi only. > > For example '-Os' is hardcoded in... > > arch/x86/Makefile > arch/x86/purgatory/Makefile > > drivers/acpi/Makefile > drivers/acpi/acpica/Makefile > > For acpi part we have currently both used '-O2' and '-Os' ('-Oz' for > llvmlinux) in approx 200 make-lines. > > $ grep '\-O2' build-log_4.4.0-rc8-2-llvmlinux-amd64.txt | grep acpi | wc -l > 226 > $ grep '\-Oz' build-log_4.4.0-rc8-2-llvmlinux-amd64.txt | grep acpi | > grep '\-O2' | wc -l > 200 > > So, which optimization-cflags is now used if I have both in one > make-line (and how can I check this)? > > [ EXAMPLE ] > > $ mycompiler --version > clang version 3.7.0 (tags/RELEASE_370/final) > Target: x86_64-unknown-linux-gnu > Thread model: posix > > $ mycompiler -Wp,-MD,drivers/acpi/.video_detect.o.d -nostdinc > -isystem /opt/llvm-toolchain-3.7.0/bin/../lib/clang/3.7.0/include > -nostdinc -isystem > /opt/llvm-toolchain-3.7.0/bin/../lib/clang/3.7.0/include > -I./arch/x86/include -Iarch/x86/include/generated/uapi > -Iarch/x86/include/generated -Iinclude -I./arch/x86/include/uapi > -Iarch/x86/include/generated/uapi -I./include/uapi > -Iinclude/generated/uapi -include ./include/linux/kconfig.h > -D__KERNEL__ -Qunused-arguments -Wno-unknown-warning-option -Wall > -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing > -fno-common -Werror-implicit-function-declaration -Wno-format-security > -std=gnu89 -no-integrated-as -mno-sse -mno-mmx -mno-sse2 -mno-3dnow > -mno-avx -m64 -mtune=generic -mno-red-zone -mcmodel=kernel > -funit-at-a-time -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 > -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 > -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 > -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -pipe -Wno-sign-compare > -fno-asynchronous-unwind-tables *** -O2 *** -Wframe-larger-than=1024 > -fno-stack-protector -Wno-unused-variable > -Wno-format-invalid-specifier -Wno-gnu -Wno-asm-operand-widths > -Wno-initializer-overrides -fno-builtin -Wno-tautological-compare > -mno-global-merge -fno-omit-frame-pointer -fno-optimize-sibling-calls > -pg -Wdeclaration-after-statement -Wno-pointer-sign > -fno-strict-overflow -Werror=implicit-int -Werror=strict-prototypes > -Werror=date-time -Wno-initializer-overrides -Wno-unused-value > -Wno-format -Wno-unknown-warning-option -Wno-sign-compare > -Wno-format-zero-length -Wno-uninitialized *** -Oz *** -DMODULE > -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(video_detect)" > -D"KBUILD_MODNAME=KBUILD_STR(video)" -c -o > drivers/acpi/.tmp_video_detect.o drivers/acpi/video_detect.c > > How can I switch a optimization-cflags for certain code-parts in the > Linux-kernel (with or without the kbuild-system)? > ( So the default optimization-cflags is '-O2' whereas parts wants '-Os'. ) > > What to do when using CONFIG_CC_OPTIMIZE_FOR_SIZE=y which sets '-Os' explicitly? > > Below tools/ directory we have also an OPTIMIZATION variable used. > > Something like a "global" solution is desired from my side. > > I have attached a patchset on top of my llvmlinux-amd64-fixes-4.4, > hope this helps a bit to see what I mean. > It is not doing what I desire - still WIP. > > Thoughts? > > Thanks in advance. > We have also hardcoded '-O2' in arch/x86... $ grep '\-O2' -nr arch/x86/ arch/x86/boot/compressed/Makefile:24:KBUILD_CFLAGS := -m$(BITS) -D__KERNEL__ $(LINUX_INCLUDE) -O2 arch/x86/entry/vdso/Makefile:67:CFL := $(PROFILING) -mcmodel=small -fPIC -O2 -fasynchronous-unwind-tables -m64 \ arch/x86/um/vdso/Makefile:40:CFL := $(PROFILING) -mcmodel=small -fPIC -O2 -fasynchronous-unwind-tables -m64 \ Is that explicitly required? - Sedat - -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html