diff options
author | Nico Weber <nicolasweber@gmx.de> | 2018-07-23 20:04:00 +0000 |
---|---|---|
committer | Nico Weber <nicolasweber@gmx.de> | 2018-07-23 20:04:00 +0000 |
commit | 3239f13a0671cc2f00b2b4fc06c156849369636f (patch) | |
tree | f61a7912d3bc753a85980b1a4b09a52d3544417c /lldb/source/Plugins/ScriptInterpreter/Python/lldb-python.h | |
parent | 384b317c677c4f5f895fe5b43046adc6f3be65b8 (diff) | |
download | bcm5719-llvm-3239f13a0671cc2f00b2b4fc06c156849369636f.tar.gz bcm5719-llvm-3239f13a0671cc2f00b2b4fc06c156849369636f.zip |
[ms] Fix mangling of vector types in QMM_Result contexts.
If QMM_Result is set (which it is for return types, RTTI descriptors, and
exception type descriptors), tag types (structs, enums, classes, unions) get
their qualifiers mangled in.
__m64 and friends is a struct/union thingy in MSVC, but not in clang's headers.
To make mangling work, we call mangleArtificalTagType(TTK_Union/TTK_Struct for
the vector types to mangle them as tag types -- but the isa<TagType> check when
mangling in QMM_Result mode isn't true for these vector types. Add an
isArtificialTagType() function and check for that too. Fixes PR37276 and some
other issues.
I tried to audit all references to TagDecl and TagType in MicrosoftMangle.cpp
to find other places where we need to call mangleArtificalTagType(), but
couldn't find any.
I tried to audit all calls to mangleArtificalTagType() to see if
isArtificialTagType() needs to handle more than just the vector types, but as
far as I can tell all other types we use it for are types that MSVC can't
handle at all (Objective-C types etc).
https://reviews.llvm.org/D49597
llvm-svn: 337732
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/lldb-python.h')
0 files changed, 0 insertions, 0 deletions