| // RUN: %target-swift-frontend %s -g -emit-ir -o - | %FileCheck %s |
| |
| sil_stage canonical |
| |
| import Builtin |
| import Swift |
| |
| sil @square : $@convention(thin) (Int32) -> Int32 { |
| bb0(%0 : $Int32): |
| debug_value %0 : $Int32, let, name "x" // id: %1 |
| %3 = struct_extract %0 : $Int32, #Int32._value // user: %6 |
| %4 = struct_extract %0 : $Int32, #Int32._value // user: %6 |
| %5 = integer_literal $Builtin.Int1, -1 // user: %6 |
| %6 = builtin "smul_with_overflow_Int32"(%3 : $Builtin.Int32, %4 : $Builtin.Int32, %5 : $Builtin.Int1) : $(Builtin.Int32, Builtin.Int1) // users: %7, %8 |
| %7 = tuple_extract %6 : $(Builtin.Int32, Builtin.Int1), 0 // user: %10 |
| %8 = tuple_extract %6 : $(Builtin.Int32, Builtin.Int1), 1 // user: %9 |
| cond_fail %8 : $Builtin.Int1 // id: %9 |
| %10 = struct $Int32 (%7 : $Builtin.Int32) // user: %11 |
| // CHECK: ret i32 %{{.*}}, !dbg ![[LOC:.*]] |
| // CHECK: ![[LOC]] = !DILocation(line: [[@LINE+1]], |
| return %10 : $Int32 // id: %11 |
| } |
| |