summaryrefslogtreecommitdiff
path: root/testsuite/tests/codeGen/should_run/Cgrun067A.hs
diff options
context:
space:
mode:
authorDavid Terei <davidterei@gmail.com>2011-07-20 11:09:03 -0700
committerDavid Terei <davidterei@gmail.com>2011-07-20 11:26:35 -0700
commit16514f272fb42af6e9c7674a9bd6c9dce369231f (patch)
treee4f332b45fe65e2a7a2451be5674f887b42bf199 /testsuite/tests/codeGen/should_run/Cgrun067A.hs
parentebd422aed41048476aa61dd4c520d43becd78682 (diff)
downloadhaskell-16514f272fb42af6e9c7674a9bd6c9dce369231f.tar.gz
Move tests from tests/ghc-regress/* to just tests/*
Diffstat (limited to 'testsuite/tests/codeGen/should_run/Cgrun067A.hs')
-rw-r--r--testsuite/tests/codeGen/should_run/Cgrun067A.hs16
1 files changed, 16 insertions, 0 deletions
diff --git a/testsuite/tests/codeGen/should_run/Cgrun067A.hs b/testsuite/tests/codeGen/should_run/Cgrun067A.hs
new file mode 100644
index 0000000000..96e944ed25
--- /dev/null
+++ b/testsuite/tests/codeGen/should_run/Cgrun067A.hs
@@ -0,0 +1,16 @@
+-- Bug doesn't show up on -O0
+{-# OPTIONS_GHC -O #-}
+module Cgrun067A (miscompiledFn) where
+
+import Foreign.C
+import Foreign
+
+miscompiledFn :: CString -> IO String
+miscompiledFn cp = do
+ l <- lengthArray0 0 cp
+ if l <= 0 then return "" else loop "" (l-1)
+ where
+ loop s i = do
+ xval <- peekElemOff cp i
+ let val = castCCharToChar xval
+ val `seq` if i <= 0 then return (val:s) else loop (val:s) (i-1)