This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/28014] New: space-optimized divide used inconsistently


sh-elf has space optimized division functions for -m4 / -m4-single, which are
provided in a separate library, which is used when statically linking with -Os
.
However, libgcc itself constains some references to the divide functions.  If
these functions have not been used by something else earlier, the references
are satisifed from within libgcc.
This is a missed space optimization, but worse, libgcc.a has a module which
defines both signed and unsigned divide, while libgcc-Os-4-200.a provides
them in two separate modules.
If one of the symbols is pulled in early from libgcc-Os-4-200.a, and the other
satisfied later from within libgcc.a, the first symbol ends up being defined
twice.

I propose to fix this by putting a copy of the unwinder code into
libgcc-Os-4-200.a, which will make the only reference to signed divide
from libgcc.a irrelevant, and by providing an sh udiv_qrnnd definition in
longlong.h and optimizing 1U/0 away in sh.md, which will get rid of the
references to unsigned divide in libgcc.a


-- 
           Summary: space-optimized divide used inconsistently
           Product: gcc
           Version: 4.2.0
            Status: UNCONFIRMED
          Keywords: missed-optimization, link-failure
          Severity: normal
          Priority: P3
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: amylaar at gcc dot gnu dot org
GCC target triplet: sh-elf


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28014


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]