Re: [GHC] #7684: cgrun071 segfaults

Well, one bug is that in `emitPopCntCall` we don't cast the argument to
#7684: cgrun071 segfaults ----------------------------------+---------------------------------- Reporter: tibbe | Owner: Type: bug | Status: infoneeded Priority: normal | Milestone: 7.8.1 Component: Compiler | Version: 7.7 Resolution: | Keywords: Operating System: MacOS X | Architecture: x86_64 (amd64) Type of failure: Runtime crash | Difficulty: Unknown Test Case: cgrun071 | Blocked By: Blocking: | Related Tickets: ----------------------------------+---------------------------------- Comment (by tibbe): Replying to [comment:42 simonmar]: the correct width. I don't think it should. The `MO_PopCnt` `MachOp` that's emitted by `emitPopCntCall` also takes the width as an argument. The reason we pass the width all the way down to the native and LLVM code generators is to avoid doing any narrowing, as we can emit a `popcnt` instruction that looks at just part of the word (e.g. `popcnt %ax,%ax`). If we end up not using the the dedicated instruction, and we're using GCC 4.2 which doesn't do the narrowing correctly, then we'd have to do the narrowing ourselves before calling the C fallback. I think we have two choices in working around the buggy behavior of GCC 4.2: 1. Change the function prototype as rwbarton suggested. 2. Do some narrowing in the native code generator before emitting the call to the C function. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/7684#comment:46 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC