Clang would previously assert here.
Details
Details
Diff Detail
Diff Detail
- Repository
- rL LLVM
Event Timeline
Comment Actions
Please take a look.
I couldn't figure out a way to get a mangled name for this without using debug info. Do you have any ideas?
lib/AST/MicrosoftMangle.cpp | ||
---|---|---|
888–891 ↗ | (On Diff #150299) | Thinking about it some more, it'd be better if we handled this like the else case: Name += "<unnamed-type-$S"; Name += llvm::utostr(Context.getAnonymousStructId(TD) + 1); Reason being that something like: struct S { enum {}; enum {}; }; Would otherwise end up with two identical mangles. This would also make us more consistent with other mangles, for example: enum {} x; struct {} y; These are mangled as: <unnamed-type-x> and <unnamed-type-y>. |
Comment Actions
Thanks!
lib/AST/MicrosoftMangle.cpp | ||
---|---|---|
888–891 ↗ | (On Diff #150299) | Okay, yeah that makes sense. I just checked struct S { enum {}; enum {}; }; with MSVC, and they seem to give them identical mangling. I have to head out, but will update the patch tomorrow morning unless you're keen to do it :-) |