Loading polly/lib/IndependentBlocks.cpp +6 −3 Original line number Diff line number Diff line Loading @@ -160,8 +160,10 @@ void IndependentBlocks::moveOperandTree(Instruction *Inst, const Region *R, DEBUG(dbgs() << "Checking Operand of Node:\n" << *CurInst << "\n------>\n"); if (It == CurInst->op_end()) { // Insert the new instructions in topological order. if (!CurInst->getParent()) if (!CurInst->getParent()) { CurInst->insertBefore(InsertPos); SE->forgetValue(CurInst); } WorkStack.pop_back(); } else { Loading Loading @@ -213,8 +215,7 @@ void IndependentBlocks::moveOperandTree(Instruction *Inst, const Region *R, DEBUG(dbgs() << "Moved.\n"); Instruction *MovedOp = At->second; It->set(MovedOp); // Skip all its children as we already processed them. continue; SE->forgetValue(MovedOp); } else { // Note that NewOp is not inserted in any BB now, we will insert it when // it popped form the work stack, so it will be inserted in topological Loading @@ -224,6 +225,8 @@ void IndependentBlocks::moveOperandTree(Instruction *Inst, const Region *R, DEBUG(dbgs() << "Move to " << *NewOp << "\n"); It->set(NewOp); ReplacedMap.insert(std::make_pair(Operand, NewOp)); SE->forgetValue(Operand); // Process its operands, but do not visit an instuction twice. if (VisitedSet.insert(NewOp).second) WorkStack.push_back(std::make_pair(NewOp, NewOp->op_begin())); Loading polly/test/IndependentBlocks/scev-invalidated.ll 0 → 100644 +22 −0 Original line number Diff line number Diff line ; RUN: opt %loadPolly -polly-codegen-scev -polly-independent < %s target datalayout ="e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" define void @arc_either() { entry: %ang2.2.reg2mem = alloca i64 br i1 undef, label %return, label %if.then6 if.then6: %rem7 = srem i64 undef, 1474560 br i1 false, label %if.else, label %return if.else: %add16 = add nsw i64 %rem7, 1474560 %rem7.add16 = select i1 undef, i64 %rem7, i64 %add16 store i64 %rem7.add16, i64* %ang2.2.reg2mem br label %return return: ret void } Loading
polly/lib/IndependentBlocks.cpp +6 −3 Original line number Diff line number Diff line Loading @@ -160,8 +160,10 @@ void IndependentBlocks::moveOperandTree(Instruction *Inst, const Region *R, DEBUG(dbgs() << "Checking Operand of Node:\n" << *CurInst << "\n------>\n"); if (It == CurInst->op_end()) { // Insert the new instructions in topological order. if (!CurInst->getParent()) if (!CurInst->getParent()) { CurInst->insertBefore(InsertPos); SE->forgetValue(CurInst); } WorkStack.pop_back(); } else { Loading Loading @@ -213,8 +215,7 @@ void IndependentBlocks::moveOperandTree(Instruction *Inst, const Region *R, DEBUG(dbgs() << "Moved.\n"); Instruction *MovedOp = At->second; It->set(MovedOp); // Skip all its children as we already processed them. continue; SE->forgetValue(MovedOp); } else { // Note that NewOp is not inserted in any BB now, we will insert it when // it popped form the work stack, so it will be inserted in topological Loading @@ -224,6 +225,8 @@ void IndependentBlocks::moveOperandTree(Instruction *Inst, const Region *R, DEBUG(dbgs() << "Move to " << *NewOp << "\n"); It->set(NewOp); ReplacedMap.insert(std::make_pair(Operand, NewOp)); SE->forgetValue(Operand); // Process its operands, but do not visit an instuction twice. if (VisitedSet.insert(NewOp).second) WorkStack.push_back(std::make_pair(NewOp, NewOp->op_begin())); Loading
polly/test/IndependentBlocks/scev-invalidated.ll 0 → 100644 +22 −0 Original line number Diff line number Diff line ; RUN: opt %loadPolly -polly-codegen-scev -polly-independent < %s target datalayout ="e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" define void @arc_either() { entry: %ang2.2.reg2mem = alloca i64 br i1 undef, label %return, label %if.then6 if.then6: %rem7 = srem i64 undef, 1474560 br i1 false, label %if.else, label %return if.else: %add16 = add nsw i64 %rem7, 1474560 %rem7.add16 = select i1 undef, i64 %rem7, i64 %add16 store i64 %rem7.add16, i64* %ang2.2.reg2mem br label %return return: ret void }