diff options
Diffstat (limited to 'llvm/lib/IR/Core.cpp')
-rw-r--r-- | llvm/lib/IR/Core.cpp | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/llvm/lib/IR/Core.cpp b/llvm/lib/IR/Core.cpp index 2a4ea8d5246..354921dc43e 100644 --- a/llvm/lib/IR/Core.cpp +++ b/llvm/lib/IR/Core.cpp @@ -1199,15 +1199,17 @@ void LLVMAddNamedMetadataOperand(LLVMModuleRef M, const char *Name, const char *LLVMGetDebugLocDirectory(LLVMValueRef Val, unsigned *Length) { if (!Length) return nullptr; StringRef S; - if (const auto *I = unwrap<Instruction>(Val)) { - S = I->getDebugLoc()->getDirectory(); - } else if (const auto *GV = unwrap<GlobalVariable>(Val)) { + if (const auto *I = dyn_cast<Instruction>(unwrap(Val))) { + if (const auto &DL = I->getDebugLoc()) { + S = DL->getDirectory(); + } + } else if (const auto *GV = dyn_cast<GlobalVariable>(unwrap(Val))) { SmallVector<DIGlobalVariableExpression *, 1> GVEs; GV->getDebugInfo(GVEs); if (GVEs.size()) if (const DIGlobalVariable *DGV = GVEs[0]->getVariable()) S = DGV->getDirectory(); - } else if (const auto *F = unwrap<Function>(Val)) { + } else if (const auto *F = dyn_cast<Function>(unwrap(Val))) { if (const DISubprogram *DSP = F->getSubprogram()) S = DSP->getDirectory(); } else { @@ -1221,15 +1223,17 @@ const char *LLVMGetDebugLocDirectory(LLVMValueRef Val, unsigned *Length) { const char *LLVMGetDebugLocFilename(LLVMValueRef Val, unsigned *Length) { if (!Length) return nullptr; StringRef S; - if (const auto *I = unwrap<Instruction>(Val)) { - S = I->getDebugLoc()->getFilename(); - } else if (const auto *GV = unwrap<GlobalVariable>(Val)) { + if (const auto *I = dyn_cast<Instruction>(unwrap(Val))) { + if (const auto &DL = I->getDebugLoc()) { + S = DL->getFilename(); + } + } else if (const auto *GV = dyn_cast<GlobalVariable>(unwrap(Val))) { SmallVector<DIGlobalVariableExpression *, 1> GVEs; GV->getDebugInfo(GVEs); if (GVEs.size()) if (const DIGlobalVariable *DGV = GVEs[0]->getVariable()) S = DGV->getFilename(); - } else if (const auto *F = unwrap<Function>(Val)) { + } else if (const auto *F = dyn_cast<Function>(unwrap(Val))) { if (const DISubprogram *DSP = F->getSubprogram()) S = DSP->getFilename(); } else { @@ -1242,15 +1246,17 @@ const char *LLVMGetDebugLocFilename(LLVMValueRef Val, unsigned *Length) { unsigned LLVMGetDebugLocLine(LLVMValueRef Val) { unsigned L = 0; - if (const auto *I = unwrap<Instruction>(Val)) { - L = I->getDebugLoc()->getLine(); - } else if (const auto *GV = unwrap<GlobalVariable>(Val)) { + if (const auto *I = dyn_cast<Instruction>(unwrap(Val))) { + if (const auto &DL = I->getDebugLoc()) { + L = DL->getLine(); + } + } else if (const auto *GV = dyn_cast<GlobalVariable>(unwrap(Val))) { SmallVector<DIGlobalVariableExpression *, 1> GVEs; GV->getDebugInfo(GVEs); if (GVEs.size()) if (const DIGlobalVariable *DGV = GVEs[0]->getVariable()) L = DGV->getLine(); - } else if (const auto *F = unwrap<Function>(Val)) { + } else if (const auto *F = dyn_cast<Function>(unwrap(Val))) { if (const DISubprogram *DSP = F->getSubprogram()) L = DSP->getLine(); } else { @@ -1262,9 +1268,9 @@ unsigned LLVMGetDebugLocLine(LLVMValueRef Val) { unsigned LLVMGetDebugLocColumn(LLVMValueRef Val) { unsigned C = 0; - if (const auto *I = unwrap<Instruction>(Val)) - if (const auto &L = I->getDebugLoc()) - C = L->getColumn(); + if (const auto *I = dyn_cast<Instruction>(unwrap(Val))) + if (const auto &DL = I->getDebugLoc()) + C = DL->getColumn(); return C; } |