From 6be1ed05c7a7e1e7a812f037b660ec693c5c1ca9 Mon Sep 17 00:00:00 2001 From: Reid Kleckner Date: Thu, 10 Aug 2017 21:14:07 +0000 Subject: Disable some IR death tests when SEH is available They hang for me locally. I suspect that there is a use-after-free when attempting to destroy an LLVMContext after asserting from the middle of metadata tracking. It doesn't seem worth debugging it further. llvm-svn: 310660 --- llvm/unittests/IR/MetadataTest.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'llvm/unittests/IR/MetadataTest.cpp') 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 -- cgit v1.2.3