public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/103053] New: Unexpected ".global __divti3" emitted for unsigned 128 bit division
@ 2021-11-03 3:42 simonb at vmware dot com
2021-11-03 3:48 ` [Bug middle-end/103053] " pinskia at gcc dot gnu.org
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: simonb at vmware dot com @ 2021-11-03 3:42 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103053
Bug ID: 103053
Summary: Unexpected ".global __divti3" emitted for unsigned 128
bit division
Product: gcc
Version: 10.3.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: simonb at vmware dot com
Target Milestone: ---
Created attachment 51725
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=51725&action=edit
Preprocessed reproducer for the bug
When compiling the attached reproducer which contains an unsigned 128 bit
divide with any of gcc 7.5.0, 9.3.0, 10.3.0 for x86_64 or gcc 9.3.0 for aarch64
with -O2 it emits a
.globl __divti3
even though there is no call to that function.
In the x86 asm output for the reproducer, there is:
.size bar, .-bar
.globl __udivti3
.globl __divti3 <-- bogus .global emission
.globl foo
...
call __udivti3
This occurs on at least:
gcc 7.5.0 target x86_64--netbsd
gcc 9.3.0 target x86_64--linux-gnu
gcc 10.3.0 targets aarch64--netbsd x86_64--netbsd
No ".global __divti3" is emitted with:
gcc 6.4.0 target x86_64--linux-gnu
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug middle-end/103053] Unexpected ".global __divti3" emitted for unsigned 128 bit division
2021-11-03 3:42 [Bug c/103053] New: Unexpected ".global __divti3" emitted for unsigned 128 bit division simonb at vmware dot com
@ 2021-11-03 3:48 ` pinskia at gcc dot gnu.org
2021-11-03 4:23 ` pinskia at gcc dot gnu.org
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: pinskia at gcc dot gnu.org @ 2021-11-03 3:48 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103053
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
> .globl __divti3
> even though there is no call to that function.
Yes it does no harm to emit it though.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug middle-end/103053] Unexpected ".global __divti3" emitted for unsigned 128 bit division
2021-11-03 3:42 [Bug c/103053] New: Unexpected ".global __divti3" emitted for unsigned 128 bit division simonb at vmware dot com
2021-11-03 3:48 ` [Bug middle-end/103053] " pinskia at gcc dot gnu.org
@ 2021-11-03 4:23 ` pinskia at gcc dot gnu.org
2021-11-03 9:42 ` jakub at gcc dot gnu.org
2021-11-03 10:26 ` simonb at vmware dot com
3 siblings, 0 replies; 5+ messages in thread
From: pinskia at gcc dot gnu.org @ 2021-11-03 4:23 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103053
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution|--- |INVALID
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Yes there is a reference in the object file but GCC assumes that if __udivti3
is there then __divti3 will be there as libgcc implements both. Yes the linker
will pull in both but it will be minor code size increase.
If the problem is your program implements its own support library (libgcc),
then the bug is in your program and not in GCC really.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug middle-end/103053] Unexpected ".global __divti3" emitted for unsigned 128 bit division
2021-11-03 3:42 [Bug c/103053] New: Unexpected ".global __divti3" emitted for unsigned 128 bit division simonb at vmware dot com
2021-11-03 3:48 ` [Bug middle-end/103053] " pinskia at gcc dot gnu.org
2021-11-03 4:23 ` pinskia at gcc dot gnu.org
@ 2021-11-03 9:42 ` jakub at gcc dot gnu.org
2021-11-03 10:26 ` simonb at vmware dot com
3 siblings, 0 replies; 5+ messages in thread
From: jakub at gcc dot gnu.org @ 2021-11-03 9:42 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103053
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
In this particular case it is cause by my
r7-6851-gb607e75e25261ac2c81d71fe1a4dcf5fcd166603
where we try to emit the division as both signed and unsigned if value range
shows both will work the same, and pick the cheaper one.
The underlying problem is different, we call assemble_external_libcall
prematurely from emit_library_call_value_1, to avoid such spurious .globl
directives we'd need to somehow mark the CALL_INSN and emit those only late
during RTL optimizations, either during final if those directives can be
intermixed with instructions, or close before final otherwise (in some late
always done pass that walks the whole IL).
Because otherwise we can emit it even for library calls we just tried and chose
not to emit, or for code that we even expand, but later during RTL
optimizations optimize away.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug middle-end/103053] Unexpected ".global __divti3" emitted for unsigned 128 bit division
2021-11-03 3:42 [Bug c/103053] New: Unexpected ".global __divti3" emitted for unsigned 128 bit division simonb at vmware dot com
` (2 preceding siblings ...)
2021-11-03 9:42 ` jakub at gcc dot gnu.org
@ 2021-11-03 10:26 ` simonb at vmware dot com
3 siblings, 0 replies; 5+ messages in thread
From: simonb at vmware dot com @ 2021-11-03 10:26 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103053
--- Comment #4 from Simon Burge <simonb at vmware dot com> ---
Thanks for the explanation Jakub.
As was inferred from Andrew's comment
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103053#c2 we are using a trimmed
down support library for this particular application. We'll do as suggested
and add __divti3 to our support library.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2021-11-03 10:26 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-03 3:42 [Bug c/103053] New: Unexpected ".global __divti3" emitted for unsigned 128 bit division simonb at vmware dot com
2021-11-03 3:48 ` [Bug middle-end/103053] " pinskia at gcc dot gnu.org
2021-11-03 4:23 ` pinskia at gcc dot gnu.org
2021-11-03 9:42 ` jakub at gcc dot gnu.org
2021-11-03 10:26 ` simonb at vmware dot com
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).