mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-19 04:32:19 +00:00
Generalize DISubprogram element to encode various flags instead of just one boolean for isArtificial.
This is a backword compatible change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115084 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b0725316cd
commit
9dd2b47d44
@ -46,6 +46,16 @@ namespace llvm {
|
||||
/// This should not be stored in a container, because underly MDNode may
|
||||
/// change in certain situations.
|
||||
class DIDescriptor {
|
||||
public:
|
||||
enum {
|
||||
FlagPrivate = 1 << 0,
|
||||
FlagProtected = 1 << 1,
|
||||
FlagFwdDecl = 1 << 2,
|
||||
FlagAppleBlock = 1 << 3,
|
||||
FlagBlockByrefStruct = 1 << 4,
|
||||
FlagVirtual = 1 << 5,
|
||||
FlagArtificial = 1 << 6
|
||||
};
|
||||
protected:
|
||||
const MDNode *DbgNode;
|
||||
|
||||
@ -203,17 +213,6 @@ namespace llvm {
|
||||
/// others do not require a huge and empty descriptor full of zeros.
|
||||
class DIType : public DIScope {
|
||||
public:
|
||||
enum {
|
||||
FlagPrivate = 1 << 0,
|
||||
FlagProtected = 1 << 1,
|
||||
FlagFwdDecl = 1 << 2,
|
||||
FlagAppleBlock = 1 << 3,
|
||||
FlagBlockByrefStruct = 1 << 4,
|
||||
FlagVirtual = 1 << 5,
|
||||
FlagArtificial = 1 << 6 // To identify artificial arguments in
|
||||
// a subroutine type. e.g. "this" in c++.
|
||||
};
|
||||
|
||||
protected:
|
||||
// This ctor is used when the Tag has already been validated by a derived
|
||||
// ctor.
|
||||
@ -396,7 +395,12 @@ namespace llvm {
|
||||
DICompositeType getContainingType() const {
|
||||
return getFieldAs<DICompositeType>(13);
|
||||
}
|
||||
unsigned isArtificial() const { return getUnsignedField(14); }
|
||||
unsigned isArtificial() const {
|
||||
if (getVersion() <= llvm::LLVMDebugVersion8)
|
||||
return getUnsignedField(14);
|
||||
return (getUnsignedField(14) & FlagArtificial) != 0;
|
||||
}
|
||||
|
||||
unsigned isOptimized() const;
|
||||
|
||||
StringRef getFilename() const {
|
||||
@ -691,7 +695,7 @@ namespace llvm {
|
||||
unsigned VK = 0,
|
||||
unsigned VIndex = 0,
|
||||
DIType = DIType(),
|
||||
bool isArtificial = 0,
|
||||
unsigned Flags = 0,
|
||||
bool isOptimized = false,
|
||||
Function *Fn = 0);
|
||||
|
||||
|
@ -22,7 +22,8 @@ namespace llvm {
|
||||
// Debug info constants.
|
||||
|
||||
enum {
|
||||
LLVMDebugVersion = (8 << 16), // Current version of debug information.
|
||||
LLVMDebugVersion = (9 << 16), // Current version of debug information.
|
||||
LLVMDebugVersion8 = (8 << 16), // Cconstant for version 8.
|
||||
LLVMDebugVersion7 = (7 << 16), // Constant for version 7.
|
||||
LLVMDebugVersion6 = (6 << 16), // Constant for version 6.
|
||||
LLVMDebugVersion5 = (5 << 16), // Constant for version 5.
|
||||
|
@ -1009,7 +1009,7 @@ DISubprogram DIFactory::CreateSubprogram(DIDescriptor Context,
|
||||
bool isDefinition,
|
||||
unsigned VK, unsigned VIndex,
|
||||
DIType ContainingType,
|
||||
bool isArtificial,
|
||||
unsigned Flags,
|
||||
bool isOptimized,
|
||||
Function *Fn) {
|
||||
|
||||
@ -1028,7 +1028,7 @@ DISubprogram DIFactory::CreateSubprogram(DIDescriptor Context,
|
||||
ConstantInt::get(Type::getInt32Ty(VMContext), (unsigned)VK),
|
||||
ConstantInt::get(Type::getInt32Ty(VMContext), VIndex),
|
||||
ContainingType,
|
||||
ConstantInt::get(Type::getInt1Ty(VMContext), isArtificial),
|
||||
ConstantInt::get(Type::getInt32Ty(VMContext), Flags),
|
||||
ConstantInt::get(Type::getInt1Ty(VMContext), isOptimized),
|
||||
Fn
|
||||
};
|
||||
@ -1062,7 +1062,7 @@ DISubprogram DIFactory::CreateSubprogramDefinition(DISubprogram &SPDeclaration){
|
||||
DeclNode->getOperand(11), // Virtuality
|
||||
DeclNode->getOperand(12), // VIndex
|
||||
DeclNode->getOperand(13), // Containting Type
|
||||
DeclNode->getOperand(14), // isArtificial
|
||||
DeclNode->getOperand(14), // Flags
|
||||
DeclNode->getOperand(15), // isOptimized
|
||||
SPDeclaration.getFunction()
|
||||
};
|
||||
|
@ -7,12 +7,12 @@ public:
|
||||
};
|
||||
|
||||
int foo::bar(int x) {
|
||||
// CHECK: {{i1 false, i1 true(, i[0-9]+ [^\}]+[}]|[}]) ; \[ DW_TAG_subprogram \]}}
|
||||
// CHECK: {{i32 [0-9]+, i1 true(, i[0-9]+ [^\}]+[}]|[}]) ; \[ DW_TAG_subprogram \]}}
|
||||
return x*4 + 1;
|
||||
}
|
||||
|
||||
int foo::baz(int x) {
|
||||
// CHECK: {{i1 false, i1 true(, i[0-9]+ [^\},]+[}]|[}]) ; \[ DW_TAG_subprogram \]}}
|
||||
// CHECK: {{i32 [0-9]+, i1 true(, i[0-9]+ [^\},]+[}]|[}]) ; \[ DW_TAG_subprogram \]}}
|
||||
return x*4 + 1;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user