[llvm] 0958450 - Revert "[FuzzMutate] Don't insert instructions after musttail call"

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 16 09:29:35 PDT 2022


Author: Nikita Popov
Date: 2022-03-16T17:29:27+01:00
New Revision: 0958450251698a01eec48b3c68421d4d54b5560f

URL: https://github.com/llvm/llvm-project/commit/0958450251698a01eec48b3c68421d4d54b5560f
DIFF: https://github.com/llvm/llvm-project/commit/0958450251698a01eec48b3c68421d4d54b5560f.diff

LOG: Revert "[FuzzMutate] Don't insert instructions after musttail call"

This reverts commit 6a23d2764467bd45c2e02828f6175a0b9f9a1005.

The newly added tests fail on the llvm-clang-x86_64-sie-win
buildbot. Not sure why a failure only occurs there, possibly
differen PRNG sequence?

Added: 
    

Modified: 
    llvm/lib/FuzzMutate/IRMutator.cpp
    llvm/unittests/FuzzMutate/StrategiesTest.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/FuzzMutate/IRMutator.cpp b/llvm/lib/FuzzMutate/IRMutator.cpp
index 0f93bf9ee9c8b..105f8bc6c5227 100644
--- a/llvm/lib/FuzzMutate/IRMutator.cpp
+++ b/llvm/lib/FuzzMutate/IRMutator.cpp
@@ -116,16 +116,6 @@ void InjectorIRStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) {
   auto InstsBefore = makeArrayRef(Insts).slice(0, IP);
   auto InstsAfter = makeArrayRef(Insts).slice(IP);
 
-  if (!InstsBefore.empty()) {
-    // Don't insert instructions after a musttail call.
-    Instruction *InstBefore = InstsBefore.back();
-    if (isa<BitCastInst>(InstBefore))
-      InstBefore = InstBefore->getPrevNode();
-    CallBase *CallBefore = dyn_cast_or_null<CallBase>(InstBefore);
-    if (CallBefore && CallBefore->isMustTailCall())
-      return;
-  }
-
   // Choose a source, which will be used to constrain the operation selection.
   SmallVector<Value *, 2> Srcs;
   Srcs.push_back(IB.findOrCreateSource(BB, InstsBefore));

diff  --git a/llvm/unittests/FuzzMutate/StrategiesTest.cpp b/llvm/unittests/FuzzMutate/StrategiesTest.cpp
index 9954a6379bc73..562d08b9a1bd4 100644
--- a/llvm/unittests/FuzzMutate/StrategiesTest.cpp
+++ b/llvm/unittests/FuzzMutate/StrategiesTest.cpp
@@ -100,36 +100,6 @@ TEST(InjectorIRStrategyTest, EmptyModule) {
   EXPECT_TRUE(!verifyModule(*M, &errs()));
 }
 
-TEST(InjectorIRStrategyTest, MustTailCall) {
-  // Test that we don't insert after a musttail call.
-  StringRef Source = ""
-      "define i32 @func() {\n"
-        "%v = musttail call i32 @func()\n"
-        "ret i32 %v\n"
-      "}\n";
-
-  auto Mutator = createInjectorMutator();
-  ASSERT_TRUE(Mutator);
-
-  IterateOnSource(Source, *Mutator);
-}
-
-TEST(InjectorIRStrategyTest, MustTailCallBitCast) {
-  // Test that we don't insert after a musttail call bitcast.
-  StringRef Source = ""
-      "declare i32* @func2()\n"
-      "define i8* @func() {\n"
-        "%v = musttail call i32* @func2()\n"
-        "%v2 = bitcast i32* %v to i8*\n"
-        "ret i8* %v2\n"
-      "}\n";
-
-  auto Mutator = createInjectorMutator();
-  ASSERT_TRUE(Mutator);
-
-  IterateOnSource(Source, *Mutator);
-}
-
 TEST(InstDeleterIRStrategyTest, EmptyFunction) {
   // Test that we don't crash even if we can't remove from one of the functions.
 


        


More information about the llvm-commits mailing list