[llvm] [DebugInfo][RemoveDIs] Handle dbg.declares in SelectionDAGISel (PR #73496)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 28 03:35:10 PST 2023
================
@@ -1148,6 +1148,60 @@ SDValue SelectionDAGBuilder::getControlRoot() {
return updateRoot(PendingExports);
}
+void SelectionDAGBuilder::handleDebugDeclare(Value *Address,
+ DILocalVariable *Variable,
+ DIExpression *Expression,
+ DebugLoc DL) {
+ assert(Variable && "Missing variable");
+
+ // Check if address has undef value.
+ if (!Address || isa<UndefValue>(Address) ||
+ (Address->use_empty() && !isa<Argument>(Address))) {
+ LLVM_DEBUG(
+ dbgs()
+ << "dbg_declare: Dropping debug info (bad/undef/unused-arg address)\n");
+ return;
+ }
+
+ bool IsParameter = Variable->isParameter() || isa<Argument>(Address);
+
+ SDValue &N = NodeMap[Address];
+ if (!N.getNode() && isa<Argument>(Address))
+ // Check unused arguments map.
+ N = UnusedArgNodeMap[Address];
+ SDDbgValue *SDV;
+ if (N.getNode()) {
+ if (const BitCastInst *BCI = dyn_cast<BitCastInst>(Address))
----------------
arsenm wrote:
Do you really need this with opaque pointers? stripPointerCasts?
https://github.com/llvm/llvm-project/pull/73496
More information about the llvm-commits
mailing list