diff --git a/testsuite/tests/lib/integer/Makefile b/testsuite/tests/lib/integer/Makefile index 34d5a177baf5fbbe2bdf2478f738b48a1ba0999f..77b733de322a2317304aa56289f9c2d173ac4150 100644 --- a/testsuite/tests/lib/integer/Makefile +++ b/testsuite/tests/lib/integer/Makefile @@ -56,3 +56,9 @@ IntegerConversionRules: -grep -q integerToWord $@.simpl && echo "integerToWord present" -grep -q int2Word $@.simpl || echo "int2Word absent" +.PHONY: T7041 +T7041: + '$(TEST_HC)' -Wall -v0 -O -c $@.hs -fforce-recomp -ddump-simpl > $@.simpl + -grep -q gcdInteger $@.simpl && echo "gcdInteger present" + -grep -q "gcdInt\>" $@.simpl || echo "gcdInt absent" + diff --git a/testsuite/tests/lib/integer/T7041.hs b/testsuite/tests/lib/integer/T7041.hs new file mode 100644 index 0000000000000000000000000000000000000000..02ef996b426dcd800f3c0a97155a92cdae765f78 --- /dev/null +++ b/testsuite/tests/lib/integer/T7041.hs @@ -0,0 +1,6 @@ + +module T7041 where + +gcdInt :: Int -> Int -> Int +gcdInt a b = fromInteger (gcd (toInteger a) (toInteger b)) + diff --git a/testsuite/tests/lib/integer/all.T b/testsuite/tests/lib/integer/all.T index 99056d6b14286ba594f73169a839853fb38b7874..cb5767580cf169ca47e47c84ad627bf1a836bf32 100644 --- a/testsuite/tests/lib/integer/all.T +++ b/testsuite/tests/lib/integer/all.T @@ -12,4 +12,9 @@ test('IntegerConversionRules', extra_clean(['IntegerConversionRules.simpl']), run_command, ['$MAKE -s --no-print-directory IntegerConversionRules']) +test('gcdInteger', normal, compile_and_run, ['']) +test('T7041', + extra_clean(['T7041.simpl']), + run_command, + ['$MAKE -s --no-print-directory T7041']) diff --git a/testsuite/tests/lib/integer/gcdInteger.hs b/testsuite/tests/lib/integer/gcdInteger.hs new file mode 100644 index 0000000000000000000000000000000000000000..2e945a876af580afff9ffcc88b0f658d5632fc78 --- /dev/null +++ b/testsuite/tests/lib/integer/gcdInteger.hs @@ -0,0 +1,17 @@ + +{-# LANGUAGE MagicHash #-} + +module Main (main) where + +import GHC.Base +import GHC.Integer + +main :: IO () +main = case i of + I# i# -> + print (gcd (smallInteger i#) (smallInteger i#)) + +{-# NOINLINE i #-} +i :: Int +i = minBound + diff --git a/testsuite/tests/lib/integer/gcdInteger.stdout b/testsuite/tests/lib/integer/gcdInteger.stdout new file mode 100644 index 0000000000000000000000000000000000000000..b0898f38f819d3f0f61eefe3573c75fd3050a79a --- /dev/null +++ b/testsuite/tests/lib/integer/gcdInteger.stdout @@ -0,0 +1 @@ +9223372036854775808