@@ -1691,19 +1691,23 @@ SPIRVToLLVMDbgTran::transDebugIntrinsic(const SPIRVExtInst *DebugInst,
16911691 if (getDbgInst<SPIRVDebug::DebugInfoNone>(Ops[VariableIdx])) {
16921692 auto *Null =
16931693 ConstantPointerNull::get (PointerType::get (M->getContext (), 0 ));
1694- DbgInstPtr DbgDeclare = DIB.insertDeclare (
1695- Null, LocalVar.first , GetExpression (Ops[ExpressionIdx]), Loc, BB);
1694+ auto *Expr = PoisonInvalidExpr (GetExpression (Ops[ExpressionIdx]),
1695+ LocalVar.first , Null);
1696+ DbgInstPtr DbgDeclare =
1697+ DIB.insertDeclare (Null, LocalVar.first , Expr, Loc, BB);
16961698 return DbgDeclare;
16971699 }
1698- return DIB.insertDeclare (GetValue (Ops[VariableIdx]), LocalVar.first ,
1699- GetExpression (Ops[ExpressionIdx]), Loc,
1700- BB);
1700+ Value *Val = GetValue (Ops[VariableIdx]);
1701+ auto *Expr = PoisonInvalidExpr (GetExpression (Ops[ExpressionIdx]),
1702+ LocalVar.first , Val);
1703+ return DIB.insertDeclare (Val, LocalVar.first , Expr, Loc, BB);
17011704 }
17021705 case SPIRVDebug::Value: {
17031706 using namespace SPIRVDebug ::Operand::DebugValue;
17041707 auto LocalVar = GetLocalVar (Ops[DebugLocalVarIdx]);
17051708 Value *Val = GetValue (Ops[ValueIdx]);
17061709 DIExpression *Expr = GetExpression (Ops[ExpressionIdx]);
1710+ Expr = PoisonInvalidExpr (Expr, LocalVar.first , Val);
17071711 DebugLoc Loc = transDebugScope (DebugInst);
17081712 DbgInstPtr DbgValIntr = getDIBuilder (DebugInst).insertDbgValueIntrinsic (
17091713 Val, LocalVar.first , Expr, Loc, BB);
0 commit comments