Message ID | 20200910135120.3527468-1-masahiroy@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/4] kbuild: remove cc-option test of -fno-strict-overflow | expand |
On Thu, Sep 10, 2020 at 10:51:17PM +0900, Masahiro Yamada wrote: > The minimal compiler versions, GCC 4.9 and Clang 10 support this flag. > > Here is the godbolt: > https://godbolt.org/z/odq8h9 > > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Appeared in clang 3.0.0 in commit 6e50103acda2b918545f30141edeb991d766f2a4. Reviewed-by: Nathan Chancellor <natechancellor@gmail.com> > --- > > Makefile | 2 +- > arch/arm64/kernel/vdso32/Makefile | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/Makefile b/Makefile > index 4b5a305e30d2..059b36f2ea53 100644 > --- a/Makefile > +++ b/Makefile > @@ -922,7 +922,7 @@ KBUILD_CFLAGS += $(call cc-disable-warning, restrict) > KBUILD_CFLAGS += $(call cc-disable-warning, maybe-uninitialized) > > # disable invalid "can't wrap" optimizations for signed / pointers > -KBUILD_CFLAGS += $(call cc-option,-fno-strict-overflow) > +KBUILD_CFLAGS += -fno-strict-overflow > > # clang sets -fmerge-all-constants by default as optimization, but this > # is non-conforming behavior for C and in fact breaks the kernel, so we > diff --git a/arch/arm64/kernel/vdso32/Makefile b/arch/arm64/kernel/vdso32/Makefile > index d6adb4677c25..dfffd55175a3 100644 > --- a/arch/arm64/kernel/vdso32/Makefile > +++ b/arch/arm64/kernel/vdso32/Makefile > @@ -90,7 +90,7 @@ VDSO_CFLAGS += -O2 > # Some useful compiler-dependent flags from top-level Makefile > VDSO_CFLAGS += $(call cc32-option,-Wdeclaration-after-statement,) > VDSO_CFLAGS += $(call cc32-option,-Wno-pointer-sign) > -VDSO_CFLAGS += $(call cc32-option,-fno-strict-overflow) > +VDSO_CFLAGS += -fno-strict-overflow > VDSO_CFLAGS += $(call cc32-option,-Werror=strict-prototypes) > VDSO_CFLAGS += $(call cc32-option,-Werror=date-time) > VDSO_CFLAGS += $(call cc32-option,-Werror=incompatible-pointer-types) > -- > 2.25.1 >
On Thu, Sep 10, 2020 at 10:51:18PM +0900, Masahiro Yamada wrote: > The minimal compiler versions, GCC 4.9 and Clang 10 support this flag. > > Here is the godbolt: > https://godbolt.org/z/8T4177 > > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> For what it's worth, the commit that introduced this block is going to be reverted: https://lore.kernel.org/mm-commits/20200903201518.JKrRS%25akpm@linux-foundation.org/ Regardless, it was introduced in LLVM 2.7.0 in commit f9d41df0930986c52e198292cf875eb5d1761ece. Reviewed-by: Nathan Chancellor <natechancellor@gmail.com> > --- > > Makefile | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/Makefile b/Makefile > index 059b36f2ea53..1b6abecc5cab 100644 > --- a/Makefile > +++ b/Makefile > @@ -927,7 +927,7 @@ KBUILD_CFLAGS += -fno-strict-overflow > # clang sets -fmerge-all-constants by default as optimization, but this > # is non-conforming behavior for C and in fact breaks the kernel, so we > # need to disable it here generally. > -KBUILD_CFLAGS += $(call cc-option,-fno-merge-all-constants) > +KBUILD_CFLAGS += -fno-merge-all-constants > > # for gcc -fno-merge-all-constants disables everything, but it is fine > # to have actual conforming behavior enabled. > -- > 2.25.1 >
On Thu, Sep 10, 2020 at 10:51:19PM +0900, Masahiro Yamada wrote: > The minimal compiler versions, GCC 4.9 and Clang 10 support this flag. > > Here is the godbolt: > https://godbolt.org/z/59cK6o > > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> This flag is technically ignored by clang (see commit 05b0798916f01690b5903302e51f3136274e291f) but that obviously does not matter for the sake of this. Reviewed-by: Nathan Chancellor <natechancellor@gmail.com> > --- > > Makefile | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/Makefile b/Makefile > index 1b6abecc5cab..5102c89d3167 100644 > --- a/Makefile > +++ b/Makefile > @@ -934,7 +934,7 @@ KBUILD_CFLAGS += -fno-merge-all-constants > KBUILD_CFLAGS += $(call cc-option,-fmerge-constants) > > # Make sure -fstack-check isn't enabled (like gentoo apparently did) > -KBUILD_CFLAGS += $(call cc-option,-fno-stack-check,) > +KBUILD_CFLAGS += -fno-stack-check > > # conserve stack if available > KBUILD_CFLAGS += $(call cc-option,-fconserve-stack) > -- > 2.25.1 >
On Fri, Sep 11, 2020 at 1:33 AM Nathan Chancellor <natechancellor@gmail.com> wrote: > > On Thu, Sep 10, 2020 at 10:51:18PM +0900, Masahiro Yamada wrote: > > The minimal compiler versions, GCC 4.9 and Clang 10 support this flag. > > > > Here is the godbolt: > > https://godbolt.org/z/8T4177 > > > > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> > > For what it's worth, the commit that introduced this block is going to > be reverted: > > https://lore.kernel.org/mm-commits/20200903201518.JKrRS%25akpm@linux-foundation.org/ My bad - you are right. This hunk has already gone by Nick's patch. Thanks. > Regardless, it was introduced in LLVM 2.7.0 in commit > f9d41df0930986c52e198292cf875eb5d1761ece. > > Reviewed-by: Nathan Chancellor <natechancellor@gmail.com> > > > --- > > > > Makefile | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/Makefile b/Makefile > > index 059b36f2ea53..1b6abecc5cab 100644 > > --- a/Makefile > > +++ b/Makefile > > @@ -927,7 +927,7 @@ KBUILD_CFLAGS += -fno-strict-overflow > > # clang sets -fmerge-all-constants by default as optimization, but this > > # is non-conforming behavior for C and in fact breaks the kernel, so we > > # need to disable it here generally. > > -KBUILD_CFLAGS += $(call cc-option,-fno-merge-all-constants) > > +KBUILD_CFLAGS += -fno-merge-all-constants > > > > # for gcc -fno-merge-all-constants disables everything, but it is fine > > # to have actual conforming behavior enabled. > > -- > > 2.25.1 > > > > -- > You received this message because you are subscribed to the Google Groups "Clang Built Linux" group. > To unsubscribe from this group and stop receiving emails from it, send an email to clang-built-linux+unsubscribe@googlegroups.com. > To view this discussion on the web visit https://groups.google.com/d/msgid/clang-built-linux/20200910163311.GB3119896%40ubuntu-n2-xlarge-x86.
On Thu, Sep 10, 2020 at 10:51:20PM +0900, Masahiro Yamada wrote: > The minimal compiler versions, GCC 4.9 and Clang 10 support this flag. > > Here is the godbolt: > https://godbolt.org/z/xvjcMa > > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Introduced in clang 3.5.0, see commit 4f43e554081ecac149fe360bee6eef2ed7dab8ea in LLVM. Reviewed-by: Nathan Chancellor <natechancellor@gmail.com> > --- > > Makefile | 2 +- > arch/arm64/kernel/vdso32/Makefile | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/Makefile b/Makefile > index 5102c89d3167..1d7c58684fda 100644 > --- a/Makefile > +++ b/Makefile > @@ -940,7 +940,7 @@ KBUILD_CFLAGS += -fno-stack-check > KBUILD_CFLAGS += $(call cc-option,-fconserve-stack) > > # Prohibit date/time macros, which would make the build non-deterministic > -KBUILD_CFLAGS += $(call cc-option,-Werror=date-time) > +KBUILD_CFLAGS += -Werror=date-time > > # enforce correct pointer usage > KBUILD_CFLAGS += $(call cc-option,-Werror=incompatible-pointer-types) > diff --git a/arch/arm64/kernel/vdso32/Makefile b/arch/arm64/kernel/vdso32/Makefile > index dfffd55175a3..1feb4f8e556e 100644 > --- a/arch/arm64/kernel/vdso32/Makefile > +++ b/arch/arm64/kernel/vdso32/Makefile > @@ -92,7 +92,7 @@ VDSO_CFLAGS += $(call cc32-option,-Wdeclaration-after-statement,) > VDSO_CFLAGS += $(call cc32-option,-Wno-pointer-sign) > VDSO_CFLAGS += -fno-strict-overflow > VDSO_CFLAGS += $(call cc32-option,-Werror=strict-prototypes) > -VDSO_CFLAGS += $(call cc32-option,-Werror=date-time) > +VDSO_CFLAGS += -Werror=date-time > VDSO_CFLAGS += $(call cc32-option,-Werror=incompatible-pointer-types) > > # The 32-bit compiler does not provide 128-bit integers, which are used in > -- > 2.25.1 >
On Thu, Sep 10, 2020 at 10:51:17PM +0900, Masahiro Yamada wrote: > The minimal compiler versions, GCC 4.9 and Clang 10 support this flag. > > Here is the godbolt: > https://godbolt.org/z/odq8h9 > > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> > --- > > Makefile | 2 +- > arch/arm64/kernel/vdso32/Makefile | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) This, and the other patch (4/4 -- I didn't see 2 or 3), look good to me. Are you taking them via the kbuild tree, or shall I queue them in the arm64 tree? Please just let me know what you prefer. Will
Hi Will, On Sat, Sep 12, 2020 at 12:22 AM Will Deacon <will@kernel.org> wrote: > > On Thu, Sep 10, 2020 at 10:51:17PM +0900, Masahiro Yamada wrote: > > The minimal compiler versions, GCC 4.9 and Clang 10 support this flag. > > > > Here is the godbolt: > > https://godbolt.org/z/odq8h9 > > > > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> > > --- > > > > Makefile | 2 +- > > arch/arm64/kernel/vdso32/Makefile | 2 +- > > 2 files changed, 2 insertions(+), 2 deletions(-) > > This, and the other patch (4/4 -- I didn't see 2 or 3), look good to me. > Are you taking them via the kbuild tree, or shall I queue them in the arm64 > tree? Please just let me know what you prefer. > > Will I will apply all to the kbuild tree. Your Ack is appreciated. Thanks.
On Mon, Sep 14, 2020 at 09:51:31PM +0900, Masahiro Yamada wrote: > On Sat, Sep 12, 2020 at 12:22 AM Will Deacon <will@kernel.org> wrote: > > On Thu, Sep 10, 2020 at 10:51:17PM +0900, Masahiro Yamada wrote: > > > The minimal compiler versions, GCC 4.9 and Clang 10 support this flag. > > > > > > Here is the godbolt: > > > https://godbolt.org/z/odq8h9 > > > > > > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> > > > --- > > > > > > Makefile | 2 +- > > > arch/arm64/kernel/vdso32/Makefile | 2 +- > > > 2 files changed, 2 insertions(+), 2 deletions(-) > > > > This, and the other patch (4/4 -- I didn't see 2 or 3), look good to me. > > Are you taking them via the kbuild tree, or shall I queue them in the arm64 > > tree? Please just let me know what you prefer. > > I will apply all to the kbuild tree. > Your Ack is appreciated. For both: Acked-by: Will Deacon <will@kernel.org> Will
diff --git a/Makefile b/Makefile index 4b5a305e30d2..059b36f2ea53 100644 --- a/Makefile +++ b/Makefile @@ -922,7 +922,7 @@ KBUILD_CFLAGS += $(call cc-disable-warning, restrict) KBUILD_CFLAGS += $(call cc-disable-warning, maybe-uninitialized) # disable invalid "can't wrap" optimizations for signed / pointers -KBUILD_CFLAGS += $(call cc-option,-fno-strict-overflow) +KBUILD_CFLAGS += -fno-strict-overflow # clang sets -fmerge-all-constants by default as optimization, but this # is non-conforming behavior for C and in fact breaks the kernel, so we diff --git a/arch/arm64/kernel/vdso32/Makefile b/arch/arm64/kernel/vdso32/Makefile index d6adb4677c25..dfffd55175a3 100644 --- a/arch/arm64/kernel/vdso32/Makefile +++ b/arch/arm64/kernel/vdso32/Makefile @@ -90,7 +90,7 @@ VDSO_CFLAGS += -O2 # Some useful compiler-dependent flags from top-level Makefile VDSO_CFLAGS += $(call cc32-option,-Wdeclaration-after-statement,) VDSO_CFLAGS += $(call cc32-option,-Wno-pointer-sign) -VDSO_CFLAGS += $(call cc32-option,-fno-strict-overflow) +VDSO_CFLAGS += -fno-strict-overflow VDSO_CFLAGS += $(call cc32-option,-Werror=strict-prototypes) VDSO_CFLAGS += $(call cc32-option,-Werror=date-time) VDSO_CFLAGS += $(call cc32-option,-Werror=incompatible-pointer-types)
The minimal compiler versions, GCC 4.9 and Clang 10 support this flag. Here is the godbolt: https://godbolt.org/z/odq8h9 Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> --- Makefile | 2 +- arch/arm64/kernel/vdso32/Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)