Hmm... tested with patch (using gdc) there is still a discrepancy.
testcc.o
---
_Z4foo1PFPvS_E
_Z4foo2PFPvS_ES_
_Z4foo3PFPvS_ES1_
_Z4foo4PFPvS_ES_S_
_Z4foo5PFPvS_ES1_S_
_Z4foo6PFPvS_ES1_S1_
testd.o
---
_Z4foo1PFPvS_E
_Z4foo2PFPvS_ES_
_Z4foo3PFPvS_ES0_
_Z4foo4PFPvS_ES_S_
_Z4foo5PFPvS_ES0_S_
_Z4foo6PFPvS_ES0_S0_
Looks like the sequence goes:
S_, S1_, .., S9_, SA_, ..., SZ_, S10_, ...
Will need to check this to make sure...
Comment #4 by ibuclaw — 2013-05-10T09:38:24Z
That is, if I can find a way to trigger it. =)
Comment #5 by ibuclaw — 2013-05-10T09:50:05Z
With current pull:
test.cc:
void foo1(void* (*)(void*)) {}
void foo2(void* (*)(void*), void* (*)(void*)) {}
void foo3(void* (*)(void*), void* (*)(const void*)) {}
void foo4(void* (*)(void*), void* (*)(const void*), const void* (*)(void*)) {}
test.d:
extern(C++) void foo1(void* function(void*)) {}
extern(C++) void foo2(void* function(void*), void* function(void*)) {}
extern(C++) void foo3(void* function(void*), void* function(const (void)*)) {}
extern(C++) void foo4(void* function(void*), void* function(const (void)*), const(void)* function(void*)) {}
testcc.o
---
_Z4foo1PFPvS_E
_Z4foo2PFPvS_ES1_
_Z4foo3PFPvS_EPFS_PKvE
_Z4foo4PFPvS_EPFS_PKvEPFS3_S_E
testd.o
---
_Z4foo1PFPvS_E
_Z4foo2PFPvS_ES1_
_Z4foo3PFPvS_EPFS_PKvE
_Z4foo4PFPvS_EPFS_PKvEPFS3_S_E
Looks good so far. Can anyone think of any other ways to break it?
Regards
Iain
Comment #6 by github-bugzilla — 2013-05-14T23:04:31Z