mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-02 19:24:25 +00:00
IR: Move MDLocation into place
This commit moves `MDLocation`, finishing off PR21433. There's an accompanying clang commit for frontend testcases. I'll attach the testcase upgrade script I used to PR21433 to help out-of-tree frontends/backends. This changes the schema for `DebugLoc` and `DILocation` from: !{i32 3, i32 7, !7, !8} to: !MDLocation(line: 3, column: 7, scope: !7, inlinedAt: !8) Note that empty fields (line/column: 0 and inlinedAt: null) don't get printed by the assembly writer. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226048 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -592,10 +592,7 @@ bool DIExpression::Verify() const {
|
||||
}
|
||||
|
||||
bool DILocation::Verify() const {
|
||||
if (!DbgNode)
|
||||
return false;
|
||||
|
||||
return DbgNode->getNumOperands() == 4;
|
||||
return DbgNode && isa<MDLocation>(DbgNode);
|
||||
}
|
||||
|
||||
bool DINameSpace::Verify() const {
|
||||
@ -830,16 +827,12 @@ void DICompileUnit::replaceGlobalVariables(DIArray GlobalVariables) {
|
||||
|
||||
DILocation DILocation::copyWithNewScope(LLVMContext &Ctx,
|
||||
DILexicalBlockFile NewScope) {
|
||||
SmallVector<Metadata *, 10> Elts;
|
||||
assert(Verify());
|
||||
for (unsigned I = 0; I < DbgNode->getNumOperands(); ++I) {
|
||||
if (I != 2)
|
||||
Elts.push_back(DbgNode->getOperand(I));
|
||||
else
|
||||
Elts.push_back(NewScope);
|
||||
}
|
||||
MDNode *NewDIL = MDNode::get(Ctx, Elts);
|
||||
return DILocation(NewDIL);
|
||||
assert(NewScope && "Expected valid scope");
|
||||
|
||||
const auto *Old = cast<MDLocation>(DbgNode);
|
||||
return DILocation(MDLocation::get(Ctx, Old->getLine(), Old->getColumn(),
|
||||
NewScope, Old->getInlinedAt()));
|
||||
}
|
||||
|
||||
unsigned DILocation::computeNewDiscriminator(LLVMContext &Ctx) {
|
||||
|
Reference in New Issue
Block a user