mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-16 21:21:06 +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,
|
||||
unsigned LineNo, LLVMMetadataRef Ty, LLVMBool LocalToUnit,
|
||||
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
|
||||
* \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);
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*
|
||||
|
@ -1248,6 +1248,27 @@ LLVMMetadataRef LLVMDIBuilderCreateGlobalVariableExpression(
|
||||
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,
|
||||
size_t Count) {
|
||||
return wrap(
|
||||
@ -1359,6 +1380,10 @@ void LLVMSetSubprogram(LLVMValueRef Func, LLVMMetadataRef SP) {
|
||||
unwrap<Function>(Func)->setSubprogram(unwrap<DISubprogram>(SP));
|
||||
}
|
||||
|
||||
unsigned LLVMDISubprogramGetLine(LLVMMetadataRef Subprogram) {
|
||||
return unwrapDI<DISubprogram>(Subprogram)->getLine();
|
||||
}
|
||||
|
||||
LLVMMetadataRef LLVMInstructionGetDebugLoc(LLVMValueRef Inst) {
|
||||
return wrap(unwrap<Instruction>(Inst)->getDebugLoc().getAsMDNode());
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user