From a8b3a1f374598c97d3fb52e95f81d17a3b78514f Mon Sep 17 00:00:00 2001 From: "Duncan P. N. Exon Smith" Date: Sat, 28 Mar 2015 02:43:53 +0000 Subject: Verifier: Allow subroutine types to have no type array Loosen one check from r233446: as long as `DIBuilder` requires a non-null type for every subprogram, we should allow a null type array. Also add tests for the rest of `MDSubroutineType`, which were somehow missing. llvm-svn: 233468 --- llvm/lib/IR/Verifier.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'llvm/lib/IR') diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp index b2a86e27b75..af79984f59a 100644 --- a/llvm/lib/IR/Verifier.cpp +++ b/llvm/lib/IR/Verifier.cpp @@ -758,12 +758,11 @@ void Verifier::visitMDCompositeType(const MDCompositeType &N) { void Verifier::visitMDSubroutineType(const MDSubroutineType &N) { Assert(N.getTag() == dwarf::DW_TAG_subroutine_type, "invalid tag", &N); - Assert(N.getRawElements() && isa(N.getRawElements()), - "invalid composite elements", &N, N.getRawElements()); - - for (Metadata *Ty : N.getTypeArray()->operands()) { - Assert(isTypeRef(Ty), "invalid subroutine type ref", &N, N.getTypeArray(), - Ty); + if (auto *Types = N.getRawTypeArray()) { + Assert(isa(Types), "invalid composite elements", &N, Types); + for (Metadata *Ty : N.getTypeArray()->operands()) { + Assert(isTypeRef(Ty), "invalid subroutine type ref", &N, Types, Ty); + } } } -- cgit v1.2.3