Don't replace *all* uses with the new stuff.
authorBill Wendling <isanbard@gmail.com>
Tue, 23 Aug 2011 22:55:03 +0000 (22:55 +0000)
committerBill Wendling <isanbard@gmail.com>
Tue, 23 Aug 2011 22:55:03 +0000 (22:55 +0000)
This is not necessarily the first or dominating use of the EH values. The IR
breaks if it's not. So replace the specific value in the instruction with the
new value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138406 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SjLjEHPrepare.cpp

index 02c10493857ee2b512cb2b6c4d7022f5fd52ec2c..be491b13834e77edb816fde49004bfb95a1bf41a 100644 (file)
@@ -347,7 +347,7 @@ static void ReplaceLandingPadVal(Function &F, Instruction *Inst, Value *ExnAddr,
       continue;
     }
 
-    Inst->replaceAllUsesWith(CreateLandingPadLoad(F, ExnAddr, SelAddr, I));
+    I->replaceUsesOfWith(Inst, CreateLandingPadLoad(F, ExnAddr, SelAddr, I));
   }
 }