From 421fa9e32e445c972df4a981c60fbec4e21ac187 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 3 Dec 2008 07:48:08 +0000 Subject: Teach jump threading some more simple tricks: 1) have it fold "br undef", which does occur with surprising frequency as jump threading iterates. 2) teach j-t to delete dead blocks. This removes the successor edges, reducing the in-edges of other blocks, allowing recursive simplification. 3) Fold things like: br COND, BBX, BBY BBX: br COND, BBZ, BBW which also happens because jump threading iterates. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60470 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/Transforms/JumpThreading/basic.ll | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'test/Transforms/JumpThreading/basic.ll') diff --git a/test/Transforms/JumpThreading/basic.ll b/test/Transforms/JumpThreading/basic.ll index 5d99a7c0be..bf746e7f13 100644 --- a/test/Transforms/JumpThreading/basic.ll +++ b/test/Transforms/JumpThreading/basic.ll @@ -29,3 +29,25 @@ T2: F2: ret i32 %B } + + +;; cond is known false on Entry -> F1 edge! +define i32 @test2(i1 %cond) { +Entry: + br i1 %cond, label %T1, label %F1 + +T1: + %v1 = call i32 @f1() + br label %Merge + +F1: + br i1 %cond, label %Merge, label %F2 + +Merge: + %B = phi i32 [47, %T1], [192, %F1] + ret i32 %B + +F2: + call void @f3() + ret i32 12 +} -- cgit v1.2.3-70-g09d2