This is implemented. We now generate:
authorNick Lewycky <nicholas@mxc.ca>
Sun, 18 Mar 2007 14:37:20 +0000 (14:37 +0000)
committerNick Lewycky <nicholas@mxc.ca>
Sun, 18 Mar 2007 14:37:20 +0000 (14:37 +0000)
entry:
        icmp ugt i32 %x, 4              ; <i1>:0 [#uses=1]
        br i1 %0, label %cond_true, label %cond_false

cond_true:              ; preds = %entry
        %tmp1 = tail call i32 (...)* @bar( i32 12 )             ; <i32> [#uses=0]
        ret void

cond_false:             ; preds = %entry
        switch i32 %x, label %cond_true15 [
                 i32 4, label %cond_true3
                 i32 3, label %cond_true7
                 i32 2, label %cond_true11
                 i32 0, label %cond_false17
        ]

...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35142 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/README.txt

index 437e93c18c7089e7145cefe1a6154ff250e82d2d..e6bfe6dee6fc4a07395173b629a241a5997a3814 100644 (file)
@@ -348,46 +348,6 @@ pass.
 
 //===---------------------------------------------------------------------===//
 
--predsimplify should transform this:
-
-void bad(unsigned x)
-{
-  if (x > 4)
-    bar(12);
-  else if (x > 3)
-    bar(523);
-  else if (x > 2)
-    bar(36);
-  else if (x > 1)
-    bar(65);
-  else if (x > 0)
-    bar(45);
-  else
-    bar(367);
-}
-
-into:
-
-void good(unsigned x)
-{
-  if (x == 4)
-    bar(523);
-  else if (x == 3)
-    bar(36);
-  else if (x == 2)
-    bar(65);
-  else if (x == 1)
-    bar(45);
-  else if (x == 0)
-    bar(367);
-  else
-    bar(12);
-}
-
-to enable further optimizations.
-
-//===---------------------------------------------------------------------===//
-
 Consider:
 
 typedef unsigned U32;