diff --git a/compiler-rt/lib/builtins/fp_fixint_impl.inc b/compiler-rt/lib/builtins/fp_fixint_impl.inc index 2196d712f05f6..3556bad9990b2 100644 --- a/compiler-rt/lib/builtins/fp_fixint_impl.inc +++ b/compiler-rt/lib/builtins/fp_fixint_impl.inc @@ -36,5 +36,5 @@ static __inline fixint_t __fixint(fp_t a) { if (exponent < significandBits) return sign * (significand >> (significandBits - exponent)); else - return sign * ((fixint_t)significand << (exponent - significandBits)); + return sign * ((fixuint_t)significand << (exponent - significandBits)); } diff --git a/compiler-rt/test/builtins/Unit/fixsfdi_test.c b/compiler-rt/test/builtins/Unit/fixsfdi_test.c index 811c5ff426441..7dd28a25fd5ac 100644 --- a/compiler-rt/test/builtins/Unit/fixsfdi_test.c +++ b/compiler-rt/test/builtins/Unit/fixsfdi_test.c @@ -70,5 +70,8 @@ int main() if (test__fixsfdi(-0x1.FFFFFCp+62F, 0x8000010000000000LL)) return 1; - return 0; + if (test__fixsfdi(-0x8000000000000000.0p+0F, 0x8000000000000000LL)) + return 1; + + return 0; }