summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/ScriptInterpreter/Python/lldb-python.h
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2018-07-23 20:04:00 +0000
committerNico Weber <nicolasweber@gmx.de>2018-07-23 20:04:00 +0000
commit3239f13a0671cc2f00b2b4fc06c156849369636f (patch)
treef61a7912d3bc753a85980b1a4b09a52d3544417c /lldb/source/Plugins/ScriptInterpreter/Python/lldb-python.h
parent384b317c677c4f5f895fe5b43046adc6f3be65b8 (diff)
downloadbcm5719-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
OpenPOWER on IntegriCloud