[Bug d/98921] [11 regression] libphobos: junk in generated symbol
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98921 Iain Buclaw changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution|--- |FIXED --- Comment #7 from Iain Buclaw --- Fix committed
[Bug d/98921] [11 regression] libphobos: junk in generated symbol
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98921 --- Comment #6 from CVS Commits --- The releases/gcc-9 branch has been updated by Iain Buclaw : https://gcc.gnu.org/g:13ec4505c04c6cadfc22ec1b23fd6edf745ca183 commit r9-9216-g13ec4505c04c6cadfc22ec1b23fd6edf745ca183 Author: Iain Buclaw Date: Tue Feb 2 00:52:49 2021 +0100 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)
[Bug d/98921] [11 regression] libphobos: junk in generated symbol
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98921 --- Comment #5 from CVS Commits --- The releases/gcc-10 branch has been updated by Iain Buclaw : https://gcc.gnu.org/g:38c2d9598b1b2f23b24f96fd8f58a89344b93609 commit r10-9334-g38c2d9598b1b2f23b24f96fd8f58a89344b93609 Author: Iain Buclaw Date: Tue Feb 2 00:52:49 2021 +0100 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)
[Bug d/98921] [11 regression] libphobos: junk in generated symbol
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98921 --- Comment #4 from CVS Commits --- The master branch has been updated by Iain Buclaw : https://gcc.gnu.org/g:6a481021a65d6237b0c509a76fcd9c1f32c4558e commit r11-7027-g6a481021a65d6237b0c509a76fcd9c1f32c4558e Author: Iain Buclaw Date: Tue Feb 2 00:52:49 2021 +0100 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. Reviewed-on: https://github.com/dlang/dmd/pull/12174 gcc/d/ChangeLog: PR d/98921 * dmd/MERGE: Merge upstream dmd 5e2a81d9c.
[Bug d/98921] [11 regression] libphobos: junk in generated symbol
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98921 --- Comment #3 from Iain Buclaw --- (In reply to Andreas Schwab from comment #2) > diff --git a/gcc/d/dmd/dmangle.c b/gcc/d/dmd/dmangle.c > index f6eee52afbf..73d9ac5367f 100644 > --- a/gcc/d/dmd/dmangle.c > +++ b/gcc/d/dmd/dmangle.c > @@ -822,7 +822,7 @@ public: > void visit(IntegerExp *e) > { > if ((sinteger_t)e->value < 0) > -buf->printf("N%lld", -e->value); > +buf->printf("N%llu", -e->value); > else > buf->printf("i%lld", e->value); > } Thanks! The upstream D implementation of the compiler adds a special formatter for printing of integers. I've tested that a backport of it on powerpc64le-linux and confirmed it fixes this pr.
[Bug d/98921] [11 regression] libphobos: junk in generated symbol
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98921 --- Comment #2 from Andreas Schwab --- diff --git a/gcc/d/dmd/dmangle.c b/gcc/d/dmd/dmangle.c index f6eee52afbf..73d9ac5367f 100644 --- a/gcc/d/dmd/dmangle.c +++ b/gcc/d/dmd/dmangle.c @@ -822,7 +822,7 @@ public: void visit(IntegerExp *e) { if ((sinteger_t)e->value < 0) -buf->printf("N%lld", -e->value); +buf->printf("N%llu", -e->value); else buf->printf("i%lld", e->value); }
[Bug d/98921] [11 regression] libphobos: junk in generated symbol
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98921 Andreas Schwab changed: What|Removed |Added CC||seurer at gcc dot gnu.org --- Comment #1 from Andreas Schwab --- *** Bug 98923 has been marked as a duplicate of this bug. ***
[Bug d/98921] [11 regression] libphobos: junk in generated symbol
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98921 Andreas Schwab changed: What|Removed |Added Target Milestone|--- |11.0