[Issue 21310] New: Itanium C++ mangler handling templated multiple pointer arguments with different type qualifiers incorrectly
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Wed Oct 14 23:44:00 UTC 2020
https://issues.dlang.org/show_bug.cgi?id=21310
Issue ID: 21310
Summary: Itanium C++ mangler handling templated multiple
pointer arguments with different type qualifiers
incorrectly
Product: D
Version: D2
Hardware: x86_64
OS: Linux
Status: NEW
Severity: minor
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: jamie.border at uq.net.au
Incorrect mangling for templated function with multiple pointer arguments with
different type qualifiers.
----
extern(C++) void func(T)(const(T*) a, T* b);
void main()
{
int i = 0;
int* pi = &i;
func(&i, pi);
}
----
This is mangled to
_Z4funcIiEvPKT_S1_
with the dmd Itanium C++ mangler implementation, whereas g++ gets
_Z4funcIiEvPKT_PS0_
Issue seems to be in checking for substitution of args 2 onwards, where it
finds a match between const(T*) and T*. Not an issue for non-templated
functions.
--
More information about the Digitalmars-d-bugs
mailing list