From f6832bbda08b6975caa264de183bf3ee1d472aca Mon Sep 17 00:00:00 2001 From: Owen Anderson Date: Thu, 14 Apr 2011 21:35:50 +0000 Subject: Fix an infinite alternation in JumpThreading where two transforms would repeatedly undo each other. The solution is to perform more aggressive constant folding to make one of the edges just folded away rather than trying to thread it. Fixes . Discovered with CSmith. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129538 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../Transforms/JumpThreading/2011-04-14-InfLoop.ll | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 test/Transforms/JumpThreading/2011-04-14-InfLoop.ll (limited to 'test/Transforms/JumpThreading') diff --git a/test/Transforms/JumpThreading/2011-04-14-InfLoop.ll b/test/Transforms/JumpThreading/2011-04-14-InfLoop.ll new file mode 100644 index 0000000000..46aaa00380 --- /dev/null +++ b/test/Transforms/JumpThreading/2011-04-14-InfLoop.ll @@ -0,0 +1,31 @@ +; RUN: opt -jump-threading < %s +; + +%0 = type <{ i64, i16, i64, i8, i8 }> + +@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} -- cgit v1.2.3-70-g09d2