implement rdar://6653118 - fastisel should fold loads where possible.
[oota-llvm.git] / lib / Target / README.txt
index 4d7ee08de1dee3dfc93d4d3e95acfa47bd434f1f..4faf8bcfd419982b438c73c5758e88e8f6840cce 100644 (file)
@@ -1919,5 +1919,21 @@ something like the following, which eliminates a branch:
        ret
 .LBB0_2:
        jmp     foo  # TAILCALL
+//===---------------------------------------------------------------------===//
+Given a branch where the two target blocks are identical ("ret i32 %b" in
+both), simplifycfg will simplify them away. But not so for a switch statement:
+
+define i32 @f(i32 %a, i32 %b) nounwind readnone {
+entry:
+        switch i32 %a, label %bb3 [
+                i32 4, label %bb
+                i32 6, label %bb
+        ]
 
+bb:             ; preds = %entry, %entry
+        ret i32 %b
+
+bb3:            ; preds = %entry
+        ret i32 %b
+}
 //===---------------------------------------------------------------------===//