diff options
-rw-r--r-- | llvm/unittests/IR/MetadataTest.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/llvm/unittests/IR/MetadataTest.cpp b/llvm/unittests/IR/MetadataTest.cpp index e47afca532d..93173f72371 100644 --- a/llvm/unittests/IR/MetadataTest.cpp +++ b/llvm/unittests/IR/MetadataTest.cpp @@ -2466,8 +2466,12 @@ TEST_F(DistinctMDOperandPlaceholderTest, replaceUseWithNoUser) { DistinctMDOperandPlaceholder(7).replaceUseWith(MDTuple::get(Context, None)); } -#ifndef NDEBUG -#ifdef GTEST_HAS_DEATH_TEST +// Test various assertions in metadata tracking. Don't run these tests if gtest +// will use SEH to recover from them. Two of these tests get halfway through +// inserting metadata into DenseMaps for tracking purposes, and then they +// assert, and we attempt to destroy an LLVMContext with broken invariants, +// leading to infinite loops. +#if defined(GTEST_HAS_DEATH_TEST) && !defined(NDEBUG) && !defined(GTEST_HAS_SEH) TEST_F(DistinctMDOperandPlaceholderTest, MetadataAsValue) { // This shouldn't crash. DistinctMDOperandPlaceholder PH(7); @@ -2509,6 +2513,5 @@ TEST_F(DistinctMDOperandPlaceholderTest, TrackingMDRefAndDistinctMDNode) { } } #endif -#endif } // end namespace |