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 :-) |