]> git.ipfire.org Git - thirdparty/gcc.git/commit
d: Fix junk in generated symbol on powerpc64-*-* [PR98921]
authorIain Buclaw <ibuclaw@gdcproject.org>
Mon, 1 Feb 2021 23:52:49 +0000 (00:52 +0100)
committerIain Buclaw <ibuclaw@gdcproject.org>
Tue, 2 Feb 2021 01:39:38 +0000 (02:39 +0100)
commit13ec4505c04c6cadfc22ec1b23fd6edf745ca183
treedd3ed17a68fabb4938261a285cbbe915bc643e41
parent35d3afddbd8135ce16964fec6df5c7f8dc7ac364
d: Fix junk in generated symbol on powerpc64-*-* [PR98921]

This adds a special formatter to OutBuffer to handle formatted printing
of integers, a common case.  The replacement is faster and safer.

In dmangle.c, it also gets rid of a number of problematic casts, as seen
on powerpc64 targets.

gcc/d/ChangeLog:

PR d/98921
* dmd/dmangle.c (Mangler::visit (TypeSArray *)): Use buf->print
  to format integer value.
(Mangler::visit (TypeIdentifier *)): Likewise.
(Mangler::toBuffer): Likewise.
(Mangler::visit (IntegerExp *)): Likewise.
(Mangler::visit (StringExp *)): Likewise.
(Mangler::visit (ArrayLiteralExp *)): Likewise.
(Mangler::visit (AssocArrayLiteralExp *)): Likewise.
(Mangler::visit (StructLiteralExp *)): Likewise.
* dmd/root/outbuffer.c (OutBuffer::print): New function.
* dmd/root/outbuffer.h (OutBuffer::print): Declare.

(cherry picked from commit 6a481021a65d6237b0c509a76fcd9c1f32c4558e)
gcc/d/dmd/dmangle.c
gcc/d/dmd/root/outbuffer.c
gcc/d/dmd/root/outbuffer.h