Pass around Instruction* instead of Instruction& in FindInsertedValue and friends.
authorMatthijs Kooijman <matthijs@stdin.nl>
Mon, 16 Jun 2008 13:13:08 +0000 (13:13 +0000)
committerMatthijs Kooijman <matthijs@stdin.nl>
Mon, 16 Jun 2008 13:13:08 +0000 (13:13 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52318 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Analysis/ValueTracking.h
lib/Analysis/ValueTracking.cpp
lib/Transforms/Scalar/InstructionCombining.cpp

index df59c703a57aa589cc109fe27476ea9ef7cbdac3..1dc1468209f6be5e8c78627d2bd25d0046180653 100644 (file)
@@ -58,7 +58,7 @@ namespace llvm {
   Value *FindInsertedValue(Value *V,
                          const unsigned *idx_begin,
                          const unsigned *idx_end,
-                         Instruction &InsertBefore);
+                         Instruction *InsertBefore);
 } // end namespace llvm
 
 #endif
index a3eb82d62b8bad3cd82bbaf2b7dd723564c3f8ac..64cdc246b915ca120377e2e66fef1b4edc5a2f2e 100644 (file)
@@ -764,7 +764,7 @@ bool llvm::CannotBeNegativeZero(const Value *V, unsigned Depth) {
 Value *BuildSubAggregate(Value *From, Value* To, const Type *IndexedType,
                                  SmallVector<unsigned, 10> &Idxs,
                                  unsigned IdxSkip,
-                                 Instruction &InsertBefore) {
+                                 Instruction *InsertBefore) {
   const llvm::StructType *STy = llvm::dyn_cast<llvm::StructType>(IndexedType);
   if (STy) {
     // General case, the type indexed by Idxs is a struct
@@ -782,11 +782,11 @@ Value *BuildSubAggregate(Value *From, Value* To, const Type *IndexedType,
     // IdxSkip indices when indexing the sub struct).
     Instruction *V = llvm::ExtractValueInst::Create(From, Idxs.begin(),
                                                     Idxs.end(), "tmp",
-                                                    &InsertBefore);
+                                                    InsertBefore);
     Instruction *Ins = llvm::InsertValueInst::Create(To, V,
                                                      Idxs.begin() + IdxSkip,
                                                      Idxs.end(), "tmp",
-                                                     &InsertBefore);
+                                                     InsertBefore);
     return Ins;
   }
 }
@@ -804,7 +804,7 @@ Value *BuildSubAggregate(Value *From, Value* To, const Type *IndexedType,
 //
 // Any inserted instructions are inserted before InsertBefore
 Value *BuildSubAggregate(Value *From, const unsigned *idx_begin,
-                         const unsigned *idx_end, Instruction &InsertBefore) {
+                         const unsigned *idx_end, Instruction *InsertBefore) {
   const Type *IndexedType = ExtractValueInst::getIndexedType(From->getType(),
                                                              idx_begin,
                                                              idx_end);
@@ -819,7 +819,7 @@ Value *BuildSubAggregate(Value *From, const unsigned *idx_begin,
 /// the scalar value indexed is already around as a register, for example if it
 /// were inserted directly into the aggregrate.
 Value *llvm::FindInsertedValue(Value *V, const unsigned *idx_begin,
-                         const unsigned *idx_end, Instruction &InsertBefore) {
+                         const unsigned *idx_end, Instruction *InsertBefore) {
   // Nothing to index? Just return V then (this is useful at the end of our
   // recursion)
   if (idx_begin == idx_end)
index 42cfd8a8f2b48641dcdcc65cdeca8f7480a7ee77..0878008d719e593c2b7e31f1465165070c538763 100644 (file)
@@ -10521,7 +10521,7 @@ Instruction *InstCombiner::visitSwitchInst(SwitchInst &SI) {
 Instruction *InstCombiner::visitExtractValueInst(ExtractValueInst &EV) {
   // See if we are trying to extract a known value. If so, use that instead.
   if (Value *Elt = FindInsertedValue(EV.getOperand(0), EV.idx_begin(),
-                                     EV.idx_end(), EV))
+                                     EV.idx_end(), &EV))
     return ReplaceInstUsesWith(EV, Elt);
 
   // No changes