[GHC] #8425: ghc-7.6.3: crossmodule inline leads to buggy code (-O2)

GHC ghc-devs
Wed Oct 9 21:26:55 UTC 2013


#8425: ghc-7.6.3: crossmodule inline leads to buggy code (-O2)
-------------------------------------+----------------------------------
        Reporter:  slyfox            |            Owner:
            Type:  bug               |           Status:  new
        Priority:  normal            |        Milestone:
       Component:  Compiler          |          Version:  7.6.3
      Resolution:                    |         Keywords:
Operating System:  Unknown/Multiple  |     Architecture:  x86_64 (amd64)
 Type of failure:  Runtime crash     |       Difficulty:  Unknown
       Test Case:                    |       Blocked By:
        Blocking:                    |  Related Tickets:
-------------------------------------+----------------------------------

Comment (by slyfox):

 Replying to [comment:1 carter]:
 > I believe this is a known issue in
 http://ghc.haskell.org/trac/ghc/ticket/5550 and
 http://ghc.haskell.org/trac/ghc/ticket/7944 ?
 >
 > could you try compiling the code with HEAD and see if the error is still
 there?

 Yeah, head works:

 # ./run_test.bash
 ...
  ,("Project version","7.7.20131009")
  ,("Booter version","7.6.3")
  ,("Stage","2")
  ,("Build platform","x86_64-unknown-linux")
  ,("Host platform","x86_64-unknown-linux")
  ,("Target platform","x86_64-unknown-linux")
  ,("Have interpreter","YES")
  ,("Object splitting supported","YES")
  ,("Have native code generator","YES")
  ,("Support SMP","YES")
  ,("Tables next to code","YES")
  ,("RTS ways","l debug thr thr_debug thr_l thr_p dyn debug_dyn thr_dyn
 thr_debug_dyn l_dyn thr_l_dyn")
  ,("Support dynamic-too","YES")
  ,("Support parallel --make","YES")
  ,("Dynamic by default","NO")
  ,("GHC Dynamic","YES")
  ,("Leading underscore","NO")
  ,("Debug on","False")
  ,("LibDir","/var/tmp/portage/dev-
 lang/ghc-9999/work/ghc-9999/inplace/lib")
  ,("Global Package DB","/var/tmp/portage/dev-
 lang/ghc-9999/work/ghc-9999/inplace/lib/package.conf.d")
  ]
 RUN good
 [1 of 2] Compiling Susp             ( good/Susp.hs, good/Susp.o )
 [2 of 2] Compiling Main             ( good/main.hs, good/main.o )
 Linking good/main ...
 (fromList [(array (0,0) [(0,42)],0)],0)
 RUN bad
 [1 of 3] Compiling BuggyOpt         ( bad/BuggyOpt.hs, bad/BuggyOpt.o )
 [2 of 3] Compiling Susp             ( bad/Susp.hs, bad/Susp.o )
 [3 of 3] Compiling Main             ( bad/main.hs, bad/main.o )
 Linking bad/main ...
 (fromList [(array (0,0) [(0,42)],0)],0)

 But why are those bugs related to this issue?
 AFAIU they are compile-time issues.

 May I ask you to point to related commitspossibly fixing this?

 And what workaround would you suggest for this particular code?
 I'm using {-# NOINLINE #-} in random places inside miscompiled
 function.

 Thanks!

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



More information about the ghc-tickets mailing list