From: Adrian Prantl Date: Wed, 11 Feb 2015 17:45:10 +0000 (+0000) Subject: Allow DIBuilder::replaceVTableHolder() to work with temporary nodes, X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=4058639603f89b6bc1b69deed4eede92b1ce15ef;p=oota-llvm.git 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 --- 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,