From: Reid Kleckner Date: Thu, 10 Aug 2017 21:14:07 +0000 (+0000) Subject: Disable some IR death tests when SEH is available X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f9841d4832c4b9147797a1158b0e8c4b2f9fef20;p=llvm 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@310660 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/unittests/IR/MetadataTest.cpp b/unittests/IR/MetadataTest.cpp index e47afca532d..93173f72371 100644 --- a/unittests/IR/MetadataTest.cpp +++ b/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