[RFC: 2.6 patch] add -fno-tree-scev-cprop to KBUILD_CFLAGS



The gcc from svn that will become gcc 4.3 generates libgcc calls in
cases like the following (on 32bit architectures):

<-- snip -->

static inline void timespec_add_ns(struct timespec *a, u64 ns)
{
...
while(ns >= NSEC_PER_SEC) {
ns -= NSEC_PER_SEC;
a->tv_sec++;
}
...

<-- snip -->

It can make sense to emit assembler code doing division for such C code -
that doesn't seem to be something that would generally be wrong.

But the kernel does (at least on some architectures) not link with
libgcc or ship other code providing the required libgcc functions.

Richard Guenther suggested in gcc bug #32044 to use -fno-tree-scev-cprop
(new option in gcc 4.3) as a workaround and I confirmed that it fixes
the compilation.

Signed-off-by: Adrian Bunk <bunk@xxxxxxxxxx>

---
f2357fcb8addd855f1be6ac9fdf4ef3c3ab8256d
diff --git a/Makefile b/Makefile
index e28dde8..9d8a831 100644
--- a/Makefile
+++ b/Makefile
@@ -527,6 +527,9 @@ KBUILD_CFLAGS += $(call cc-option,-Wdeclaration-after-statement,)
# disable pointer signed / unsigned warnings in gcc 4.0
KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,)

+# workaround to avoid gcc 4.3 emitting libgcc calls (see gcc bug #32044)
+KBUILD_CFLAGS += $(call cc-option,-fno-tree-scev-cprop,)
+
# Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments
# But warn user when we do so
warn-assign = \

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



Relevant Pages

  • the kernel, gcc and libgcc
    ... libgcc or ship other code providing the required libgcc functions. ... And some architectures do link it in, so the call to libgcc code doesn't ... disagreement between what gcc expects an environment to provide and what ...
    (Linux-Kernel)
  • Re: Build for Generic Linux Solved?
    ... versions of the shared libs on it, ... I've read the man page for ld and for gcc, ... I used to use it to generate a make file rule, ... use the -static option to only include the libgcc so that you aviod the ...
    (Fedora)
  • Re: Precompiled GPL SharedCLibrary?
    ... I also copied libgcc from ... directory under the SharedCLibrary root, ... GCC certainly knows how to find its libgcc, ... My next problem is the use of floating point instructions. ...
    (comp.sys.acorn.programmer)
  • Re: libgcc and gcc deleted
    ... I deleted the packages libgcc and gcc from my system. ... the problem as I said is that I was unable to install those two rpm files ... So, without the package installed, I ...
    (Fedora)
  • [RFC][PATCH 0/5] Add and use libgcc
    ... operations that are unsupported on the CPU. ... Linux added functions if ... gcc themself. ... This patchset adds a copy of libgcc to the kernel and uses it if to do ...
    (Linux-Kernel)