DIBuilder: Use Constant instead of Value
Make explicit the requirement that most IR values in `DIBuilder` are `Constant`. This requires a follow-up change in clang. Part of PR21532. llvm-svn: 222070
This commit is contained in:
parent
3196805321
commit
dbf64acd29
|
@ -27,6 +27,7 @@ namespace llvm {
|
||||||
class Function;
|
class Function;
|
||||||
class Module;
|
class Module;
|
||||||
class Value;
|
class Value;
|
||||||
|
class Constant;
|
||||||
class LLVMContext;
|
class LLVMContext;
|
||||||
class MDNode;
|
class MDNode;
|
||||||
class StringRef;
|
class StringRef;
|
||||||
|
@ -211,10 +212,10 @@ namespace llvm {
|
||||||
/// @param Ty Type of the static member.
|
/// @param Ty Type of the static member.
|
||||||
/// @param Flags Flags to encode member attribute, e.g. private.
|
/// @param Flags Flags to encode member attribute, e.g. private.
|
||||||
/// @param Val Const initializer of the member.
|
/// @param Val Const initializer of the member.
|
||||||
DIDerivedType
|
DIDerivedType createStaticMemberType(DIDescriptor Scope, StringRef Name,
|
||||||
createStaticMemberType(DIDescriptor Scope, StringRef Name,
|
DIFile File, unsigned LineNo,
|
||||||
DIFile File, unsigned LineNo, DIType Ty,
|
DIType Ty, unsigned Flags,
|
||||||
unsigned Flags, llvm::Value *Val);
|
llvm::Constant *Val);
|
||||||
|
|
||||||
/// createObjCIVar - Create debugging information entry for Objective-C
|
/// createObjCIVar - Create debugging information entry for Objective-C
|
||||||
/// instance variable.
|
/// instance variable.
|
||||||
|
@ -333,8 +334,8 @@ namespace llvm {
|
||||||
/// @param LineNo Line number.
|
/// @param LineNo Line number.
|
||||||
/// @param ColumnNo Column Number.
|
/// @param ColumnNo Column Number.
|
||||||
DITemplateValueParameter
|
DITemplateValueParameter
|
||||||
createTemplateValueParameter(DIDescriptor Scope, StringRef Name,
|
createTemplateValueParameter(DIDescriptor Scope, StringRef Name, DIType Ty,
|
||||||
DIType Ty, Value *Val, MDNode *File = nullptr,
|
Constant *Val, MDNode *File = nullptr,
|
||||||
unsigned LineNo = 0, unsigned ColumnNo = 0);
|
unsigned LineNo = 0, unsigned ColumnNo = 0);
|
||||||
|
|
||||||
/// \brief Create debugging information for a template template parameter.
|
/// \brief Create debugging information for a template template parameter.
|
||||||
|
@ -458,21 +459,19 @@ namespace llvm {
|
||||||
/// externally visible or not.
|
/// externally visible or not.
|
||||||
/// @param Val llvm::Value of the variable.
|
/// @param Val llvm::Value of the variable.
|
||||||
/// @param Decl Reference to the corresponding declaration.
|
/// @param Decl Reference to the corresponding declaration.
|
||||||
DIGlobalVariable
|
DIGlobalVariable createGlobalVariable(DIDescriptor Context, StringRef Name,
|
||||||
createGlobalVariable(DIDescriptor Context, StringRef Name,
|
StringRef LinkageName, DIFile File,
|
||||||
StringRef LinkageName, DIFile File, unsigned LineNo,
|
unsigned LineNo, DITypeRef Ty,
|
||||||
DITypeRef Ty, bool isLocalToUnit, llvm::Value *Val,
|
bool isLocalToUnit,
|
||||||
MDNode *Decl = nullptr);
|
llvm::Constant *Val,
|
||||||
|
MDNode *Decl = nullptr);
|
||||||
|
|
||||||
/// createTempGlobalVariableFwdDecl - Identical to createGlobalVariable
|
/// createTempGlobalVariableFwdDecl - Identical to createGlobalVariable
|
||||||
/// except that the resulting DbgNode is temporary and meant to be RAUWed.
|
/// except that the resulting DbgNode is temporary and meant to be RAUWed.
|
||||||
DIGlobalVariable
|
DIGlobalVariable createTempGlobalVariableFwdDecl(
|
||||||
createTempGlobalVariableFwdDecl(DIDescriptor Context, StringRef Name,
|
DIDescriptor Context, StringRef Name, StringRef LinkageName,
|
||||||
StringRef LinkageName, DIFile File,
|
DIFile File, unsigned LineNo, DITypeRef Ty, bool isLocalToUnit,
|
||||||
unsigned LineNo, DITypeRef Ty,
|
llvm::Constant *Val, MDNode *Decl = nullptr);
|
||||||
bool isLocalToUnit, llvm::Value *Val,
|
|
||||||
MDNode *Decl = nullptr);
|
|
||||||
|
|
||||||
|
|
||||||
/// createLocalVariable - Create a new descriptor for the specified
|
/// createLocalVariable - Create a new descriptor for the specified
|
||||||
/// local variable.
|
/// local variable.
|
||||||
|
|
|
@ -406,11 +406,11 @@ DIDerivedType DIBuilder::createMemberType(DIDescriptor Scope, StringRef Name,
|
||||||
return DIDerivedType(MDNode::get(VMContext, Elts));
|
return DIDerivedType(MDNode::get(VMContext, Elts));
|
||||||
}
|
}
|
||||||
|
|
||||||
DIDerivedType
|
DIDerivedType DIBuilder::createStaticMemberType(DIDescriptor Scope,
|
||||||
DIBuilder::createStaticMemberType(DIDescriptor Scope, StringRef Name,
|
StringRef Name, DIFile File,
|
||||||
DIFile File, unsigned LineNumber,
|
unsigned LineNumber, DIType Ty,
|
||||||
DIType Ty, unsigned Flags,
|
unsigned Flags,
|
||||||
llvm::Value *Val) {
|
llvm::Constant *Val) {
|
||||||
// TAG_member is encoded in DIDerivedType format.
|
// TAG_member is encoded in DIDerivedType format.
|
||||||
Flags |= DIDescriptor::FlagStaticMember;
|
Flags |= DIDescriptor::FlagStaticMember;
|
||||||
Value *Elts[] = {HeaderBuilder::get(dwarf::DW_TAG_member)
|
Value *Elts[] = {HeaderBuilder::get(dwarf::DW_TAG_member)
|
||||||
|
@ -489,9 +489,8 @@ static DITemplateValueParameter createTemplateValueParameterHelper(
|
||||||
|
|
||||||
DITemplateValueParameter
|
DITemplateValueParameter
|
||||||
DIBuilder::createTemplateValueParameter(DIDescriptor Context, StringRef Name,
|
DIBuilder::createTemplateValueParameter(DIDescriptor Context, StringRef Name,
|
||||||
DIType Ty, Value *Val,
|
DIType Ty, Constant *Val, MDNode *File,
|
||||||
MDNode *File, unsigned LineNo,
|
unsigned LineNo, unsigned ColumnNo) {
|
||||||
unsigned ColumnNo) {
|
|
||||||
return createTemplateValueParameterHelper(
|
return createTemplateValueParameterHelper(
|
||||||
VMContext, dwarf::DW_TAG_template_value_parameter, Context, Name, Ty, Val,
|
VMContext, dwarf::DW_TAG_template_value_parameter, Context, Name, Ty, Val,
|
||||||
File, LineNo, ColumnNo);
|
File, LineNo, ColumnNo);
|
||||||
|
@ -832,12 +831,11 @@ DISubrange DIBuilder::getOrCreateSubrange(int64_t Lo, int64_t Count) {
|
||||||
return DISubrange(MDNode::get(VMContext, Elts));
|
return DISubrange(MDNode::get(VMContext, Elts));
|
||||||
}
|
}
|
||||||
|
|
||||||
static DIGlobalVariable
|
static DIGlobalVariable createGlobalVariableHelper(
|
||||||
createGlobalVariableHelper(LLVMContext &VMContext, DIDescriptor Context,
|
LLVMContext &VMContext, DIDescriptor Context, StringRef Name,
|
||||||
StringRef Name, StringRef LinkageName, DIFile F,
|
StringRef LinkageName, DIFile F, unsigned LineNumber, DITypeRef Ty,
|
||||||
unsigned LineNumber, DITypeRef Ty, bool isLocalToUnit,
|
bool isLocalToUnit, Constant *Val, MDNode *Decl, bool isDefinition,
|
||||||
Value *Val, MDNode *Decl, bool isDefinition,
|
std::function<MDNode *(ArrayRef<Value *>)> CreateFunc) {
|
||||||
std::function<MDNode *(ArrayRef<Value *>)> CreateFunc) {
|
|
||||||
Value *Elts[] = {HeaderBuilder::get(dwarf::DW_TAG_variable)
|
Value *Elts[] = {HeaderBuilder::get(dwarf::DW_TAG_variable)
|
||||||
.concat(Name)
|
.concat(Name)
|
||||||
.concat(Name)
|
.concat(Name)
|
||||||
|
@ -852,13 +850,10 @@ createGlobalVariableHelper(LLVMContext &VMContext, DIDescriptor Context,
|
||||||
return DIGlobalVariable(CreateFunc(Elts));
|
return DIGlobalVariable(CreateFunc(Elts));
|
||||||
}
|
}
|
||||||
|
|
||||||
DIGlobalVariable DIBuilder::createGlobalVariable(DIDescriptor Context,
|
DIGlobalVariable DIBuilder::createGlobalVariable(
|
||||||
StringRef Name,
|
DIDescriptor Context, StringRef Name, StringRef LinkageName, DIFile F,
|
||||||
StringRef LinkageName,
|
unsigned LineNumber, DITypeRef Ty, bool isLocalToUnit, Constant *Val,
|
||||||
DIFile F, unsigned LineNumber,
|
MDNode *Decl) {
|
||||||
DITypeRef Ty,
|
|
||||||
bool isLocalToUnit,
|
|
||||||
Value *Val, MDNode *Decl) {
|
|
||||||
return createGlobalVariableHelper(VMContext, Context, Name, LinkageName, F,
|
return createGlobalVariableHelper(VMContext, Context, Name, LinkageName, F,
|
||||||
LineNumber, Ty, isLocalToUnit, Val, Decl, true,
|
LineNumber, Ty, isLocalToUnit, Val, Decl, true,
|
||||||
[&] (ArrayRef<Value *> Elts) -> MDNode * {
|
[&] (ArrayRef<Value *> Elts) -> MDNode * {
|
||||||
|
@ -868,14 +863,10 @@ DIGlobalVariable DIBuilder::createGlobalVariable(DIDescriptor Context,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
DIGlobalVariable
|
DIGlobalVariable DIBuilder::createTempGlobalVariableFwdDecl(
|
||||||
DIBuilder::createTempGlobalVariableFwdDecl(DIDescriptor Context,
|
DIDescriptor Context, StringRef Name, StringRef LinkageName, DIFile F,
|
||||||
StringRef Name,
|
unsigned LineNumber, DITypeRef Ty, bool isLocalToUnit, Constant *Val,
|
||||||
StringRef LinkageName,
|
MDNode *Decl) {
|
||||||
DIFile F, unsigned LineNumber,
|
|
||||||
DITypeRef Ty,
|
|
||||||
bool isLocalToUnit,
|
|
||||||
Value *Val, MDNode *Decl) {
|
|
||||||
return createGlobalVariableHelper(VMContext, Context, Name, LinkageName, F,
|
return createGlobalVariableHelper(VMContext, Context, Name, LinkageName, F,
|
||||||
LineNumber, Ty, isLocalToUnit, Val, Decl, false,
|
LineNumber, Ty, isLocalToUnit, Val, Decl, false,
|
||||||
[&] (ArrayRef<Value *> Elts) {
|
[&] (ArrayRef<Value *> Elts) {
|
||||||
|
|
Loading…
Reference in New Issue