Skip to content

Commit

Permalink
Revert "[RemoveDIs] Update Clang front end to handle DbgRecords (#84756
Browse files Browse the repository at this point in the history
  • Loading branch information
OCHyams committed Mar 18, 2024
1 parent 3e4170a commit 92122b0
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 22 deletions.
5 changes: 1 addition & 4 deletions clang/lib/CodeGen/CGBlocks.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1540,10 +1540,7 @@ llvm::Function *CodeGenFunction::GenerateBlockFunction(
llvm::BasicBlock *resume = Builder.GetInsertBlock();

// Go back to the entry.
if (entry_ptr->getNextNonDebugInstruction())
entry_ptr = entry_ptr->getNextNonDebugInstruction()->getIterator();
else
entry_ptr = entry->end();
++entry_ptr;
Builder.SetInsertPoint(entry, entry_ptr);

// Emit debug information for all the DeclRefExprs.
Expand Down
22 changes: 5 additions & 17 deletions clang/lib/CodeGen/CGStmtOpenMP.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4749,32 +4749,20 @@ void CodeGenFunction::EmitOMPTaskBasedDirective(
if (CGF.CGM.getCodeGenOpts().hasReducedDebugInfo())
(void)DI->EmitDeclareOfAutoVariable(SharedVar, ContextValue,
CGF.Builder, false);
llvm::Instruction &Last = CGF.Builder.GetInsertBlock()->back();
// Get the call dbg.declare instruction we just created and update
// its DIExpression to add offset to base address.
auto UpdateExpr = [](llvm::LLVMContext &Ctx, auto *Declare,
unsigned Offset) {
if (auto DDI = dyn_cast<llvm::DbgVariableIntrinsic>(&Last)) {
SmallVector<uint64_t, 8> Ops;
// Add offset to the base address if non zero.
if (Offset) {
Ops.push_back(llvm::dwarf::DW_OP_plus_uconst);
Ops.push_back(Offset);
}
Ops.push_back(llvm::dwarf::DW_OP_deref);
Declare->setExpression(llvm::DIExpression::get(Ctx, Ops));
};
llvm::Instruction &Last = CGF.Builder.GetInsertBlock()->back();
if (auto DDI = dyn_cast<llvm::DbgVariableIntrinsic>(&Last))
UpdateExpr(DDI->getContext(), DDI, Offset);
// If we're emitting using the new debug info format into a block
// without a terminator, the record will be "trailing".
assert(!Last.isTerminator() && "unexpected terminator");
if (auto *Marker =
CGF.Builder.GetInsertBlock()->getTrailingDPValues()) {
for (llvm::DPValue &DPV : llvm::reverse(
llvm::DPValue::filter(Marker->getDbgValueRange()))) {
UpdateExpr(Last.getContext(), &DPV, Offset);
break;
}
auto &Ctx = DDI->getContext();
llvm::DIExpression *DIExpr = llvm::DIExpression::get(Ctx, Ops);
Last.setOperand(2, llvm::MetadataAsValue::get(Ctx, DIExpr));
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion clang/test/CodeGenObjC/debug-info-blocks.m
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@

// CHECK: define {{.*}}_block_invoke
// CHECK: store ptr %.block_descriptor, ptr %[[ALLOCA:block.addr]], align
// CHECK-NEXT: call void @llvm.dbg.declare(metadata ptr %d, metadata ![[D:[0-9]+]], metadata !{{.*}})
// CHECK-NEXT: call void @llvm.dbg.declare(metadata ptr %[[ALLOCA]], metadata ![[SELF:[0-9]+]], metadata !{{.*}})
// CHECK-NEXT: call void @llvm.dbg.declare(metadata ptr %d, metadata ![[D:[0-9]+]], metadata !{{.*}})

// Test that we do emit scope info for the helper functions, and that the
// parameters to these functions are marked as artificial (so the debugger
Expand Down

0 comments on commit 92122b0

Please sign in to comment.