mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
Provide interface to identifiy artificial methods.
llvm-svn: 95240
This commit is contained in:
parent
92abe5abcc
commit
83d905f82b
@ -375,6 +375,7 @@ namespace llvm {
|
||||
DICompositeType getContainingType() const {
|
||||
return getFieldAs<DICompositeType>(13);
|
||||
}
|
||||
unsigned isArtificial() const { return getUnsignedField(14); }
|
||||
|
||||
StringRef getFilename() const { return getCompileUnit().getFilename();}
|
||||
StringRef getDirectory() const { return getCompileUnit().getDirectory();}
|
||||
@ -595,7 +596,8 @@ namespace llvm {
|
||||
bool isDefinition,
|
||||
unsigned VK = 0,
|
||||
unsigned VIndex = 0,
|
||||
DIType = DIType());
|
||||
DIType = DIType(),
|
||||
bool isArtificial = 0);
|
||||
|
||||
/// CreateSubprogramDefinition - Create new subprogram descriptor for the
|
||||
/// given declaration.
|
||||
|
@ -860,7 +860,8 @@ DISubprogram DIFactory::CreateSubprogram(DIDescriptor Context,
|
||||
bool isLocalToUnit,
|
||||
bool isDefinition,
|
||||
unsigned VK, unsigned VIndex,
|
||||
DIType ContainingType) {
|
||||
DIType ContainingType,
|
||||
bool isArtificial) {
|
||||
|
||||
Value *Elts[] = {
|
||||
GetTagConstant(dwarf::DW_TAG_subprogram),
|
||||
@ -876,9 +877,10 @@ DISubprogram DIFactory::CreateSubprogram(DIDescriptor Context,
|
||||
ConstantInt::get(Type::getInt1Ty(VMContext), isDefinition),
|
||||
ConstantInt::get(Type::getInt32Ty(VMContext), (unsigned)VK),
|
||||
ConstantInt::get(Type::getInt32Ty(VMContext), VIndex),
|
||||
ContainingType.getNode()
|
||||
ContainingType.getNode(),
|
||||
ConstantInt::get(Type::getInt1Ty(VMContext), isArtificial)
|
||||
};
|
||||
return DISubprogram(MDNode::get(VMContext, &Elts[0], 14));
|
||||
return DISubprogram(MDNode::get(VMContext, &Elts[0], 15));
|
||||
}
|
||||
|
||||
/// CreateSubprogramDefinition - Create new subprogram descriptor for the
|
||||
@ -902,9 +904,10 @@ DISubprogram DIFactory::CreateSubprogramDefinition(DISubprogram &SPDeclaration)
|
||||
ConstantInt::get(Type::getInt1Ty(VMContext), true),
|
||||
DeclNode->getOperand(11), // Virtuality
|
||||
DeclNode->getOperand(12), // VIndex
|
||||
DeclNode->getOperand(13) // Containting Type
|
||||
DeclNode->getOperand(13), // Containting Type
|
||||
DeclNode->getOperand(14) // isArtificial
|
||||
};
|
||||
return DISubprogram(MDNode::get(VMContext, &Elts[0], 14));
|
||||
return DISubprogram(MDNode::get(VMContext, &Elts[0], 15));
|
||||
}
|
||||
|
||||
/// CreateGlobalVariable - Create a new descriptor for the specified global.
|
||||
|
@ -1201,6 +1201,9 @@ DIE *DwarfDebug::createSubprogramDIE(const DISubprogram &SP, bool MakeDecl) {
|
||||
}
|
||||
}
|
||||
|
||||
if (SP.isArtificial())
|
||||
addUInt(SPDie, dwarf::DW_AT_artificial, dwarf::DW_FORM_flag, 1);
|
||||
|
||||
// DW_TAG_inlined_subroutine may refer to this DIE.
|
||||
ModuleCU->insertDIE(SP.getNode(), SPDie);
|
||||
return SPDie;
|
||||
|
Loading…
x
Reference in New Issue
Block a user