[GHC] #8250: cgrun072 (optllvm) failing

GHC ghc-devs at haskell.org
Sat Sep 7 11:01:15 CEST 2013


#8250: cgrun072 (optllvm) failing
------------------------------------+-------------------------------------
       Reporter:  leroux            |             Owner:
           Type:  bug               |            Status:  new
       Priority:  normal            |         Milestone:
      Component:  Compiler (LLVM)   |           Version:  7.6.3
       Keywords:                    |  Operating System:  Unknown/Multiple
   Architecture:  Unknown/Multiple  |   Type of failure:  Runtime crash
     Difficulty:  Unknown           |         Test Case:  cgrun072
     Blocked By:                    |          Blocking:
Related Tickets:  7902              |
------------------------------------+-------------------------------------
 * Platform: OS X 10.8.4 x86_64
 * GHC Version 7.7.20130904 (built with gcc-4.8)

 To reproduce this:
 {{{
 $ make test TEST=cgrun072 WAY=optllvm
 }}}

 Expected output (for failure):
 {{{
 =====> cgrun072(optllvm) 172 of 3749 [0, 0, 2]
 cd ./codeGen/should_run && '/Users/leroux/Dropbox/src/ghc/ghc-
 validate/inplace/bin/ghc-stage2' -fforce-recomp -dcore-lint -dcmm-lint
 -dno-debug-output -no-user-package-db -rtsopts -fno-ghci-history -o
 cgrun072 cgrun072.hs -O -fllvm   >cgrun072.comp.stderr 2>&1
 cd ./codeGen/should_run && ./cgrun072    </dev/null >cgrun072.run.stdout
 2>cgrun072.run.stderr
 Actual stdout output differs from expected:
 --- ./codeGen/should_run/cgrun072.stdout        2013-09-04
 02:22:32.000000000 -0500
 +++ ./codeGen/should_run/cgrun072.run.stdout    2013-09-07
 03:27:09.000000000 -0500
 @@ -1,3 +1,6 @@
  OK
 -OK
 +FAIL
 +   Input: 1480294021
 +Expected: 2239642456
 +  Actual: -2055324840
  OK
 *** unexpected failure for cgrun072(optllvm)
 }}}

 The failing test case is {{{test_bSwap32}}}.

 Here are some relevant snippets. bswap and cgrun072 were added in #7902.

 https://github.com/ghc/testsuite/blob/master/tests/codeGen/should_run/cgrun072.hs:
 {{{
 bswap32 :: Word32 -> Word32
 bswap32 (W32# w#) = W32# (byteSwap32# w#)

 slowBswap32 :: Word32 -> Word32
 slowBswap32 w =
          (w `shiftR` 24)             .|. (w `shiftL` 24)
      .|. ((w `shiftR` 8) .&. 0xff00) .|. ((w .&. 0xff00) `shiftL` 8)

 test_bSwap32 = test casesW32 bswap32 slowBswap32
 }}}

 https://github.com/ghc/packages-ghc-
 prim/blob/master/cbits/bswap.c#L10-L17:
 {{{
 extern StgWord32 hs_bswap32(StgWord32 x);
 StgWord32
 hs_bswap32(StgWord32 x)
 {
   return ((x >> 24) | ((x >> 8) & 0xff00) |
           (x << 24) | ((x & 0xff00) << 8));
 }
 }}}

 Here are a few things to look at or try.
 * https://github.com/ghc/packages-ghc-prim/blob/master/cbits/bswap.c
 * https://github.com/ghc/ghc/tree/master/compiler/llvmGen
 * Maybe take an object dump and take what's going on.
 * gdb debugging?

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8250>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler




More information about the ghc-tickets mailing list