AArch64: Follow-up to r212073
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>
Tue, 1 Jul 2014 00:05:37 +0000 (00:05 +0000)
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>
Tue, 1 Jul 2014 00:05:37 +0000 (00:05 +0000)
In r212073 I missed a call of `use_begin()` that assumed the wrong
semantics.  It's not clear to me at all what this code does without the
fix, so I'm not sure how to write a testcase.

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

lib/Target/AArch64/AArch64AddressTypePromotion.cpp

index a4f3a90c4052cfaa03f33527120845c426b05969..9ebb73437b6a806a862fa1107cccc6acc4fe75dc 100644 (file)
@@ -285,10 +285,10 @@ AArch64AddressTypePromotion::propagateSignExtension(Instructions &SExtInsts) {
         // assertion on the type as all involved sext operation may have not
         // been moved yet.
         while (!Inst->use_empty()) {
-          Value::use_iterator UseIt = Inst->use_begin();
-          Instruction *UseInst = dyn_cast<Instruction>(*UseIt);
-          assert(UseInst && "Use of sext is not an Instruction!");
-          UseInst->setOperand(UseIt->getOperandNo(), SExt);
+          Use &U = *Inst->use_begin();
+          Instruction *User = dyn_cast<Instruction>(U.getUser());
+          assert(User && "User of sext is not an Instruction!");
+          User->setOperand(U.getOperandNo(), SExt);
         }
         ToRemove.insert(Inst);
         SExt->setOperand(0, Inst->getOperand(0));