forked from OSchip/llvm-project
Verifier: Don't crash on null entries in debug info retained types list
There was already a good error path for this. Added a test for it & made a minor code change to ensure the error path was actually reached, rather than crashing before we got that far. llvm-svn: 245795
This commit is contained in:
parent
cd31b85c12
commit
3c338f3a7e
|
@ -3782,7 +3782,7 @@ void Verifier::verifyTypeRefs() {
|
|||
for (auto *CU : CUs->operands())
|
||||
if (auto Ts = cast<DICompileUnit>(CU)->getRetainedTypes())
|
||||
for (DIType *Op : Ts)
|
||||
if (auto *T = dyn_cast<DICompositeType>(Op))
|
||||
if (auto *T = dyn_cast_or_null<DICompositeType>(Op))
|
||||
if (auto *S = T->getRawIdentifier()) {
|
||||
UnresolvedTypeRefs.erase(S);
|
||||
TypeRefs.insert(std::make_pair(S, T));
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
; RUN: not llvm-as -disable-output <%s 2>&1 | FileCheck %s
|
||||
; CHECK: assembly parsed, but does not verify
|
||||
; CHECK-NEXT: invalid retained type
|
||||
|
||||
!llvm.module.flags = !{!0}
|
||||
!0 = !{i32 2, !"Debug Info Version", i32 3}
|
||||
!llvm.dbg.cu = !{!1}
|
||||
!1 = distinct !DICompileUnit(file: !2, language: DW_LANG_C99, retainedTypes: !3)
|
||||
!2 = !DIFile(filename: "file.c", directory: "/path/to/dir")
|
||||
!3 = !{null}
|
Loading…
Reference in New Issue