From 4058639603f89b6bc1b69deed4eede92b1ce15ef Mon Sep 17 00:00:00 2001 From: Adrian Prantl Date: Wed, 11 Feb 2015 17:45:10 +0000 Subject: [PATCH] Allow DIBuilder::replaceVTableHolder() to work with temporary nodes, tested via the clang test CodeGenCXX/vtable-holder-self-reference.cpp . git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228854 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/IR/DIBuilder.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/IR/DIBuilder.cpp b/lib/IR/DIBuilder.cpp index 5cdb6a6487d..5217a4ea6dc 100644 --- a/lib/IR/DIBuilder.cpp +++ b/lib/IR/DIBuilder.cpp @@ -1229,12 +1229,12 @@ void DIBuilder::replaceVTableHolder(DICompositeType &T, DICompositeType VTableHo if (T != VTableHolder) return; - // Look for unresolved operands. T has dropped RAUW support and is already - // marked resolved, orphaning any cycles underneath it. - assert(T->isResolved() && "Expected self-reference to be resolved"); - for (const MDOperand &O : T->operands()) - if (auto *N = dyn_cast_or_null(O)) - trackIfUnresolved(N); + // Look for unresolved operands. T will drop RAUW support, orphaning any + // cycles underneath it. + if (T->isResolved()) + for (const MDOperand &O : T->operands()) + if (auto *N = dyn_cast_or_null(O)) + trackIfUnresolved(N); } void DIBuilder::replaceArrays(DICompositeType &T, DIArray Elements, -- 2.50.1