402ea41167ce197d482adb9a9660a6fc73ca878a
[oota-llvm.git] / test / Transforms / IPConstantProp / user-with-multiple-uses.ll
1 ; RUN: opt < %s -S -ipsccp | FileCheck %s
2 ; PR5596
3
4 ; IPSCCP should propagate the 0 argument, eliminate the switch, and propagate
5 ; the result.
6
7 ; CHECK: define i32 @main() noreturn nounwind {
8 ; CHECK-NEXT: entry:
9 ; CHECK-NEXT: %call2 = tail call i32 @wwrite(i64 0) nounwind
10 ; CHECK-NEXT: ret i32 123
11
12 define i32 @main() noreturn nounwind {
13 entry:
14   %call2 = tail call i32 @wwrite(i64 0) nounwind
15   ret i32 %call2
16 }
17
18 define internal i32 @wwrite(i64 %i) nounwind readnone {
19 entry:
20   switch i64 %i, label %sw.default [
21     i64 3, label %return
22     i64 10, label %return
23   ]
24
25 sw.default:
26   ret i32 123
27
28 return:
29   ret i32 0
30 }