mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-29 05:01:11 +00:00
[LLVM-C] Add Accessors For Global Variable Metadata Properties
Summary: Metadata for a global variable is really a (GlobalVariable, Expression) tuple. Allow access to these, then allow retrieving the file, scope, and line for a DIVariable, whether global or local. This should be the last of the accessors required for uniform access to location and file information metadata. Reviewers: jberdine, whitequark, deadalnix Reviewed By: jberdine, whitequark Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60725 llvm-svn: 358532
This commit is contained in:
parent
e8de5cd602
commit
d6eb4bb801
@ -1038,6 +1038,48 @@ LLVMMetadataRef LLVMDIBuilderCreateGlobalVariableExpression(
|
|||||||
size_t NameLen, const char *Linkage, size_t LinkLen, LLVMMetadataRef File,
|
size_t NameLen, const char *Linkage, size_t LinkLen, LLVMMetadataRef File,
|
||||||
unsigned LineNo, LLVMMetadataRef Ty, LLVMBool LocalToUnit,
|
unsigned LineNo, LLVMMetadataRef Ty, LLVMBool LocalToUnit,
|
||||||
LLVMMetadataRef Expr, LLVMMetadataRef Decl, uint32_t AlignInBits);
|
LLVMMetadataRef Expr, LLVMMetadataRef Decl, uint32_t AlignInBits);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the \c DIVariable associated with this global variable expression.
|
||||||
|
* \param GVE The global variable expression.
|
||||||
|
*
|
||||||
|
* @see llvm::DIGlobalVariableExpression::getVariable()
|
||||||
|
*/
|
||||||
|
LLVMMetadataRef LLVMDIGlobalVariableExpressionGetVariable(LLVMMetadataRef GVE);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the \c DIExpression associated with this global variable expression.
|
||||||
|
* \param GVE The global variable expression.
|
||||||
|
*
|
||||||
|
* @see llvm::DIGlobalVariableExpression::getExpression()
|
||||||
|
*/
|
||||||
|
LLVMMetadataRef LLVMDIGlobalVariableExpressionGetExpression(
|
||||||
|
LLVMMetadataRef GVE);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the metadata of the file associated with a given variable.
|
||||||
|
* \param Var The variable object.
|
||||||
|
*
|
||||||
|
* @see DIVariable::getFile()
|
||||||
|
*/
|
||||||
|
LLVMMetadataRef LLVMDIVariableGetFile(LLVMMetadataRef Var);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the metadata of the scope associated with a given variable.
|
||||||
|
* \param Var The variable object.
|
||||||
|
*
|
||||||
|
* @see DIVariable::getScope()
|
||||||
|
*/
|
||||||
|
LLVMMetadataRef LLVMDIVariableGetScope(LLVMMetadataRef Var);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the source line where this \c DIVariable is declared.
|
||||||
|
* \param Var The DIVariable.
|
||||||
|
*
|
||||||
|
* @see DIVariable::getLine()
|
||||||
|
*/
|
||||||
|
unsigned LLVMDIVariableGetLine(LLVMMetadataRef Var);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new temporary \c MDNode. Suitable for use in constructing cyclic
|
* Create a new temporary \c MDNode. Suitable for use in constructing cyclic
|
||||||
* \c MDNode structures. A temporary \c MDNode is not uniqued, may be RAUW'd,
|
* \c MDNode structures. A temporary \c MDNode is not uniqued, may be RAUW'd,
|
||||||
@ -1201,6 +1243,14 @@ LLVMMetadataRef LLVMGetSubprogram(LLVMValueRef Func);
|
|||||||
*/
|
*/
|
||||||
void LLVMSetSubprogram(LLVMValueRef Func, LLVMMetadataRef SP);
|
void LLVMSetSubprogram(LLVMValueRef Func, LLVMMetadataRef SP);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the line associated with a given subprogram.
|
||||||
|
* \param Subprogram The subprogram object.
|
||||||
|
*
|
||||||
|
* @see DISubprogram::getLine()
|
||||||
|
*/
|
||||||
|
unsigned LLVMDISubprogramGetLine(LLVMMetadataRef Subprogram);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the debug location for the given instruction.
|
* Get the debug location for the given instruction.
|
||||||
*
|
*
|
||||||
|
@ -1248,6 +1248,27 @@ LLVMMetadataRef LLVMDIBuilderCreateGlobalVariableExpression(
|
|||||||
nullptr, AlignInBits));
|
nullptr, AlignInBits));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LLVMMetadataRef LLVMDIGlobalVariableExpressionGetVariable(LLVMMetadataRef GVE) {
|
||||||
|
return wrap(unwrapDI<DIGlobalVariableExpression>(GVE)->getVariable());
|
||||||
|
}
|
||||||
|
|
||||||
|
LLVMMetadataRef LLVMDIGlobalVariableExpressionGetExpression(
|
||||||
|
LLVMMetadataRef GVE) {
|
||||||
|
return wrap(unwrapDI<DIGlobalVariableExpression>(GVE)->getExpression());
|
||||||
|
}
|
||||||
|
|
||||||
|
LLVMMetadataRef LLVMDIVariableGetFile(LLVMMetadataRef Var) {
|
||||||
|
return wrap(unwrapDI<DIVariable>(Var)->getFile());
|
||||||
|
}
|
||||||
|
|
||||||
|
LLVMMetadataRef LLVMDIVariableGetScope(LLVMMetadataRef Var) {
|
||||||
|
return wrap(unwrapDI<DIVariable>(Var)->getScope());
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned LLVMDIVariableGetLine(LLVMMetadataRef Var) {
|
||||||
|
return unwrapDI<DIVariable>(Var)->getLine();
|
||||||
|
}
|
||||||
|
|
||||||
LLVMMetadataRef LLVMTemporaryMDNode(LLVMContextRef Ctx, LLVMMetadataRef *Data,
|
LLVMMetadataRef LLVMTemporaryMDNode(LLVMContextRef Ctx, LLVMMetadataRef *Data,
|
||||||
size_t Count) {
|
size_t Count) {
|
||||||
return wrap(
|
return wrap(
|
||||||
@ -1359,6 +1380,10 @@ void LLVMSetSubprogram(LLVMValueRef Func, LLVMMetadataRef SP) {
|
|||||||
unwrap<Function>(Func)->setSubprogram(unwrap<DISubprogram>(SP));
|
unwrap<Function>(Func)->setSubprogram(unwrap<DISubprogram>(SP));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned LLVMDISubprogramGetLine(LLVMMetadataRef Subprogram) {
|
||||||
|
return unwrapDI<DISubprogram>(Subprogram)->getLine();
|
||||||
|
}
|
||||||
|
|
||||||
LLVMMetadataRef LLVMInstructionGetDebugLoc(LLVMValueRef Inst) {
|
LLVMMetadataRef LLVMInstructionGetDebugLoc(LLVMValueRef Inst) {
|
||||||
return wrap(unwrap<Instruction>(Inst)->getDebugLoc().getAsMDNode());
|
return wrap(unwrap<Instruction>(Inst)->getDebugLoc().getAsMDNode());
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user