lkml.org 
[lkml]   [2007]   [Nov]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [RFC: 2.6 patch] add -fno-tree-scev-cprop to KBUILD_CFLAGS
    On Mon, Nov 12, 2007 at 05:24:18PM +0100, Bernd Schmidt wrote:
    > Adrian Bunk wrote:
    > > 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.
    >
    > It can be a pretty huge performance regression, so gcc ought to be fixed.

    What is better depends on the values of ns and NSEC_PER_SEC.

    It can be a performance regression, but there are also cases where it
    can improve performance. If gcc produces lower performance code that
    would be a bug in gcc that should be reported, but using a division is
    not generally wrong.

    A more clearer example might be:

    <-- snip -->

    void foo(u64 ns)
    {
    if (ns < 10000)
    return;

    while(ns >= 3) {
    ns -= 3;
    #ifdef DEBUG
    bar(ns);
    #endif
    }
    }

    <-- snip -->

    With DEBUG not defined you can hardly argue gcc should be fixed to not
    use a division for performance reasons.

    > Bernd

    cu
    Adrian

    --

    "Is there not promise of rain?" Ling Tan asked suddenly out
    of the darkness. There had been need of rain for many days.
    "Only a promise," Lao Er said.
    Pearl S. Buck - Dragon Seed

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

    \
     
     \ /
      Last update: 2007-11-12 17:43    [W:0.022 / U:60.720 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site