
#8974: 64 bit windows executable built with ghc-7.9.20140405+LLVM segfaults -------------------------------------+------------------------------------- Reporter: awson | Owner: Type: bug | Status: infoneeded Priority: high | Milestone: 7.8.4 Component: Compiler | Version: 7.9 (LLVM) | Keywords: Resolution: | Architecture: x86_64 (amd64) Operating System: Windows | Difficulty: Unknown Type of failure: Runtime | Blocked By: crash | Related Tickets: Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Comment (by awson): Replying to [comment:21 Fanael]:
Yes, there is. Use `trunc`, for example:
{{{ %foo = type <{i32, i32}> @aaa = global i32 5 @bbb = global i32 5 @foo = constant %foo<{i32 trunc(i64 sub(i64 ptrtoint (i32* @aaa to i64), i64 ptrtoint (i32* @bbb to i64)) to i32), i32 0}>
}}}
LLVM will generate {{{ foo: .long aaa-bbb .long 0 # 0x0 }}}
AFAIR, the `trunc` alone is '''not''' sufficient. What you propose in fact is to '''declare''' a pair of 32-bit int variables instead of one 64-bit pointer global variable, right? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8974#comment:22 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler