Page MenuHomePhabricator

[MS Demangler] Demangle templated operator overloads
ClosedPublic

Authored by zturner on Aug 1 2018, 9:44 AM.

Details

Summary

After we detected the presence of a template via ?$ we would proceed by only demangling a simple unqualified name. This means we would fail on templated operators (and perhaps other yet-to-be-determined things)

This was discovered while doing some refactoring to store richer semantic information about the demangled types to pave the way for overhauling the way we handle backreferences. (Specifically, we need to defer recording or resolving back-references until a symbol has been completely demangled, because we need to use information that only occurs later in the mangled string to decide whether a back-reference should be recorded.)

Diff Detail

Repository
rL LLVM

Event Timeline

zturner created this revision.Aug 1 2018, 9:44 AM
ruiu added inline comments.Aug 1 2018, 10:35 AM
llvm/lib/Demangle/MicrosoftDemangle.cpp
276 ↗(On Diff #158556)

I don't see a clear benefit of using bit flags for these attributes. Why don't you use two boolean flags?

zturner updated this revision to Diff 158576.Aug 1 2018, 11:01 AM

Use boolean variables instead of a Flags enum.

ruiu accepted this revision.Aug 1 2018, 11:06 AM

LGTM

llvm/lib/Demangle/MicrosoftDemangle.cpp
273 ↗(On Diff #158576)

This comment needs updating.

This revision is now accepted and ready to land.Aug 1 2018, 11:06 AM
This revision was automatically updated to reflect the committed changes.