]> granicus.if.org Git - llvm/commitdiff
Disable some IR death tests when SEH is available
authorReid Kleckner <rnk@google.com>
Thu, 10 Aug 2017 21:14:07 +0000 (21:14 +0000)
committerReid Kleckner <rnk@google.com>
Thu, 10 Aug 2017 21:14:07 +0000 (21:14 +0000)
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

unittests/IR/MetadataTest.cpp

index e47afca532d206ff6408d50564159084322e59fd..93173f72371b7765ef7a90aa91fbdf5f8b1d5035 100644 (file)
@@ -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