[GHC] #8974: 64 bit windows executable built with ghc-7.9.20140405+LLVM segfaults

GHC ghc-devs at haskell.org
Tue Sep 2 06:04:19 UTC 2014


#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


More information about the ghc-tickets mailing list