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() #0 { 8; CHECK-NEXT: entry: 9; CHECK-NEXT: %call2 = tail call i32 @wwrite(i64 0) [[NUW:#[0-9]+]] 10; CHECK-NEXT: ret i32 123 11 12define i32 @main() noreturn nounwind { 13entry: 14 %call2 = tail call i32 @wwrite(i64 0) nounwind 15 ret i32 %call2 16} 17 18define internal i32 @wwrite(i64 %i) nounwind { 19entry: 20 switch i64 %i, label %sw.default [ 21 i64 3, label %return 22 i64 10, label %return 23 ] 24 25sw.default: 26 ret i32 123 27 28return: 29 ret i32 0 30} 31 32; CHECK: attributes #0 = { noreturn nounwind } 33; CHECK: attributes #1 = { nounwind } 34