Home | History | Annotate | Download | only in IPConstantProp
      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 
     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 }
     31 
     32 ; CHECK: attributes #0 = { noreturn nounwind }
     33 ; CHECK: attributes #1 = { nounwind readnone }
     34 ; CHECK: attributes [[NUW]] = { nounwind }
     35