diff options
-rw-r--r-- | testsuite/tests/codeGen/should_run/T20640a.hs | 9 | ||||
-rw-r--r-- | testsuite/tests/codeGen/should_run/T20640a.stdout | 2 | ||||
-rw-r--r-- | testsuite/tests/codeGen/should_run/T20640b.hs | 8 | ||||
-rw-r--r-- | testsuite/tests/codeGen/should_run/T20640b.stdout | 1 | ||||
-rw-r--r-- | testsuite/tests/codeGen/should_run/all.T | 2 |
5 files changed, 22 insertions, 0 deletions
diff --git a/testsuite/tests/codeGen/should_run/T20640a.hs b/testsuite/tests/codeGen/should_run/T20640a.hs new file mode 100644 index 0000000000..2bece3699b --- /dev/null +++ b/testsuite/tests/codeGen/should_run/T20640a.hs @@ -0,0 +1,9 @@ +import GHC.Foreign +import GHC.IO.Encoding +import qualified Foreign.C.String as F + +main = withCStringLen utf8 "\x1F424" $ \csl -> do + s <- F.peekCAStringLen csl + print s + s <- peekCStringLen utf8 csl + print s diff --git a/testsuite/tests/codeGen/should_run/T20640a.stdout b/testsuite/tests/codeGen/should_run/T20640a.stdout new file mode 100644 index 0000000000..9a4fb47620 --- /dev/null +++ b/testsuite/tests/codeGen/should_run/T20640a.stdout @@ -0,0 +1,2 @@ +"\240\159\144\164" +"\128036" diff --git a/testsuite/tests/codeGen/should_run/T20640b.hs b/testsuite/tests/codeGen/should_run/T20640b.hs new file mode 100644 index 0000000000..367508b90d --- /dev/null +++ b/testsuite/tests/codeGen/should_run/T20640b.hs @@ -0,0 +1,8 @@ +import Data.Word + +foo :: Word8 -> Char +foo c | c <= 0xdf = 'A' -- 0xdf=223 + | otherwise = 'B' +{-# NOINLINE foo #-} + +main = print (foo 0xce) -- 0xce=206 diff --git a/testsuite/tests/codeGen/should_run/T20640b.stdout b/testsuite/tests/codeGen/should_run/T20640b.stdout new file mode 100644 index 0000000000..30dfe4aef7 --- /dev/null +++ b/testsuite/tests/codeGen/should_run/T20640b.stdout @@ -0,0 +1 @@ +'A' diff --git a/testsuite/tests/codeGen/should_run/all.T b/testsuite/tests/codeGen/should_run/all.T index 88db0c6b14..654db78d43 100644 --- a/testsuite/tests/codeGen/should_run/all.T +++ b/testsuite/tests/codeGen/should_run/all.T @@ -217,3 +217,5 @@ test('CallConv', [when(unregisterised(), skip), when(arch('aarch64'), extra_hc_opts('CallConv_aarch64.s'))], compile_and_run, ['']) test('T21186', normal, compile_and_run, ['']) +test('T20640a', normal, compile_and_run, ['']) +test('T20640b', normal, compile_and_run, ['']) |