[llvm-commits] [llvm] r129538 - in /llvm/trunk: lib/Transforms/Scalar/JumpThreading.cpp test/Transforms/JumpThreading/2011-04-14-InfLoop.ll
Duncan Sands
baldrick at free.fr
Thu Apr 14 23:43:59 PDT 2011
Hi Owen,
> + // Run constant folding to see if we can reduce the condition to a simple
> + // constant.
> + if (Instruction *I = dyn_cast<Instruction>(Condition)) {
> + Value *SimpleVal = ConstantFoldInstruction(I, TD);
would it be advantageous to call SimplifyInstruction here: it does constant
folding and more.
Ciao, Duncan.
> + if (SimpleVal) {
> + I->replaceAllUsesWith(SimpleVal);
> + I->eraseFromParent();
> + Condition = SimpleVal;
> + }
> + }
> +
> // If the terminator is branching on an undef, we can pick any of the
> // successors to branch to. Let GetBestDestForJumpOnUndef decide.
> if (isa<UndefValue>(Condition)) {
>
> Added: llvm/trunk/test/Transforms/JumpThreading/2011-04-14-InfLoop.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/JumpThreading/2011-04-14-InfLoop.ll?rev=129538&view=auto
> ==============================================================================
> --- llvm/trunk/test/Transforms/JumpThreading/2011-04-14-InfLoop.ll (added)
> +++ llvm/trunk/test/Transforms/JumpThreading/2011-04-14-InfLoop.ll Thu Apr 14 16:35:50 2011
> @@ -0,0 +1,31 @@
> +; RUN: opt -jump-threading< %s
> +;<rdar://problem/9284786>
> +
> +%0 = type<{ i64, i16, i64, i8, i8 }>
> +
> + at g_338 = external global %0, align 8
> +
> +define void @func_1() nounwind ssp {
> +entry:
> + ret void
> +
> +for.cond1177:
> + %inc1187 = add nsw i32 0, 1
> + %cmp1179 = icmp slt i32 %inc1187, 5
> + br i1 %cmp1179, label %for.cond1177, label %land.rhs1320
> +
> +land.rhs1320:
> + %tmp1324 = volatile load i64* getelementptr inbounds (%0* @g_338, i64 0, i32 2), align 1, !tbaa !0
> + br label %if.end.i
> +
> +if.end.i:
> + %tobool.pr.i = phi i1 [ false, %if.end.i ], [ false, %land.rhs1320 ]
> + br i1 %tobool.pr.i, label %return, label %if.end.i
> +
> +return:
> + ret void
> +}
> +
> +!0 = metadata !{metadata !"long long", metadata !1}
> +!1 = metadata !{metadata !"omnipotent char", metadata !2}
> +!2 = metadata !{metadata !"Simple C/C++ TBAA", null}
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list