This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/28014] New: space-optimized divide used inconsistently
- From: "amylaar at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 13 Jun 2006 15:15:46 -0000
- Subject: [Bug target/28014] New: space-optimized divide used inconsistently
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
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