Don't infininitely thread branches when a threaded edge
authorChris Lattner <sabre@nondot.org>
Fri, 25 Apr 2008 04:12:29 +0000 (04:12 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 25 Apr 2008 04:12:29 +0000 (04:12 +0000)
commiteede65ce6cb29c8f3a701be8606e95c9a213efff
tree7ca4d995844361522f706b262efca29ef027329a
parent877ee973e2d6ade85e38babbd303d96347c7dc8e
Don't infininitely thread branches when a threaded edge
goes back to the block, e.g.:

  Threading edge through bool from 'bb37.us.thread3829' to 'bb37.us' with cost: 1, across block:

bb37.us: ; preds = %bb37.us.thread3829, %bb37.us, %bb33
%D1361.1.us = phi i32 [ %tmp36, %bb33 ], [ %D1361.1.us, %bb37.us ], [ 0, %bb37.us.thread3829 ] ; <i32> [#uses=2]
%tmp39.us = icmp eq i32 %D1361.1.us, 0 ; <i1> [#uses=1]
br i1 %tmp39.us, label %bb37.us, label %bb42.us

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50251 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Scalar/JumpThreading.cpp
test/Transforms/JumpThreading/2008-04-24-InfLoop.ll [new file with mode: 0644]