forked from OSchip/llvm-project
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. llvm-svn: 184365
This commit is contained in:
parent
d8c3d4b1e9
commit
59eb322ce1
|
@ -63,7 +63,8 @@ namespace llvm {
|
||||||
FlagObjcClassComplete = 1 << 9,
|
FlagObjcClassComplete = 1 << 9,
|
||||||
FlagObjectPointer = 1 << 10,
|
FlagObjectPointer = 1 << 10,
|
||||||
FlagVector = 1 << 11,
|
FlagVector = 1 << 11,
|
||||||
FlagStaticMember = 1 << 12
|
FlagStaticMember = 1 << 12,
|
||||||
|
FlagIndirectVariable = 1 << 13
|
||||||
};
|
};
|
||||||
protected:
|
protected:
|
||||||
const MDNode *DbgNode;
|
const MDNode *DbgNode;
|
||||||
|
@ -553,6 +554,11 @@ namespace llvm {
|
||||||
return (getUnsignedField(6) & FlagObjectPointer) != 0;
|
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.
|
/// getInlinedAt - If this variable is inlined then return inline location.
|
||||||
MDNode *getInlinedAt() const;
|
MDNode *getInlinedAt() const;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue