Files
swift-mirror/test/SILOptimizer/constant_propagation2.sil
Michael Gottesman 0d82712750 [constant-prop] Do not crash on frem.
Even though FRem was added as a builtin, this switch was not updated
accordingly. Update the switch and add a test case.

We really should transition all of the switches in this code to be covered
switches so that when builtins are added, it is obvious to know where things
need to be updated...

rdar://26250330
2016-05-12 13:33:53 -07:00

23 lines
1.0 KiB
Plaintext

// RUN: %target-swift-frontend %s -emit-sil -verify
import Builtin
// fold_sadd_with_overflow_Overflow
sil @fold_sadd_with_overflow_Overflow : $@convention(thin) (Builtin.RawPointer) -> Builtin.Int64 {
bb0(%0 : $Builtin.RawPointer):
%2 = integer_literal $Builtin.Int64, 9223372036854775807
%3 = integer_literal $Builtin.Int64, 9223372036854775807
%21 = integer_literal $Builtin.Int1, 1
%4 = builtin "sadd_with_overflow_Int64"(%2 : $Builtin.Int64, %3 : $Builtin.Int64, %21 : $Builtin.Int1) : $(Builtin.Int64, Builtin.Int1) // expected-error {{results in an overflow}}
%8 = tuple_extract %4 : $(Builtin.Int64, Builtin.Int1), 0
return %8 : $Builtin.Int64
}
sil @dont_crash_on_frem : $@convention(thin) () -> Builtin.FPIEEE64 {
bb0:
%1 = float_literal $Builtin.FPIEEE64, 0x402E4CCCCCCCCCCD // 15.15
%2 = float_literal $Builtin.FPIEEE64, 0x400A666666666666 // 3.2999999999999998 // user: %12
%3 = builtin "frem_FPIEEE64"(%1 : $Builtin.FPIEEE64, %2 : $Builtin.FPIEEE64) : $Builtin.FPIEEE64
return %3 : $Builtin.FPIEEE64
}