DebugInfo: Specify that a value is stored indirectly

This is a precursor to fix a regression caused by PR14763/r183329 where
the location of a non-trivial pass-by-value parameter ends up
incorrectly referring directly to the parameter (a pointer) rather than
the object pointed to by the pointer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184365 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
David Blaikie 2013-06-19 21:52:48 +00:00
parent 0812304ad8
commit c971cb8281

View File

@ -63,7 +63,8 @@ namespace llvm {
FlagObjcClassComplete = 1 << 9,
FlagObjectPointer = 1 << 10,
FlagVector = 1 << 11,
FlagStaticMember = 1 << 12
FlagStaticMember = 1 << 12,
FlagIndirectVariable = 1 << 13
};
protected:
const MDNode *DbgNode;
@ -553,6 +554,11 @@ namespace llvm {
return (getUnsignedField(6) & FlagObjectPointer) != 0;
}
/// \brief Return true if this variable is represented as a pointer.
bool isIndirect() const {
return (getUnsignedField(6) & FlagIndirectVariable) != 0;
}
/// getInlinedAt - If this variable is inlined then return inline location.
MDNode *getInlinedAt() const;