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