[GHC] #7814: panic in PPC NCG

GHC cvs-ghc at haskell.org
Mon Apr 8 13:18:28 CEST 2013


#7814: panic in PPC NCG
--------------------------------+-------------------------------------------
Reporter:  heisenbug            |          Owner:  heisenbug
    Type:  bug                  |         Status:  new      
Priority:  normal               |      Component:  Compiler 
 Version:  7.7                  |       Keywords:           
      Os:  Unknown/Multiple     |   Architecture:  powerpc  
 Failure:  Building GHC failed  |      Blockedby:           
Blocking:                       |        Related:           
--------------------------------+-------------------------------------------

Comment(by heisenbug):

 Replying to [comment:10 ggreif@…]:

 That patch fixes liveness:

 {{{
 ==================== Liveness annotations added ====================
 stg_sel_0_upd_entry() //  [R1]
         { [(cb,
             stg_sel_0_upd_info:
                 const 0;
                 const 1507328;),
            (ce,
             block_ce_info:
                 const 0;
                 const 2097152;)]
           # firstId          = Just cb
           # liveVRegsOnEntry = Just [(cb, []), (ce, []),
                                      (cj, [(cc, %vI_cc)]), (cl, [(cc,
 %vI_cc), (nv, %vI_nv)]),
                                      (cn, [(cf, %vI_cf), (nv, %vI_nv)]),
                                      (co, [(cf, %vI_cf), (nv, %vI_nv)])]
           # liveSlotsOnEntry = fromList []
         }
 ...
 }}}

 But now we get in trouble when certain object files get too large:
 {{{
 $ "inplace/bin/ghc-stage1" -hisuf hi -osuf  o -hcsuf hc -static  -H64m -O0
 -fasm    -package-name time-1.4.0.2 -hide-all-packages -i
 -ilibraries/time/. -ilibraries/time/dist-install/build -ilibraries/time
 /dist-install/build/autogen -Ilibraries/time/dist-install/build
 -Ilibraries/time/dist-install/build/autogen -Ilibraries/time/include
 -optP-DLANGUAGE_Rank2Types -optP-DLANGUAGE_DeriveDataTypeable -optP-
 DLANGUAGE_StandaloneDeriving -optP-include -optPlibraries/time/dist-
 install/build/autogen/cabal_macros.h -package base-4.7.0.0 -package
 deepseq-1.3.0.2 -package old-locale-1.0.0.5 -Wall -XHaskell2010
 -XRank2Types -XDeriveDataTypeable -XStandaloneDeriving -XCPP -O -fasm
 -no-user-package-db -rtsopts      -odir libraries/time/dist-install/build
 -hidir libraries/time/dist-install/build -stubdir libraries/time/dist-
 install/build  -dynamic-too -c libraries/time/./Data/Time/Format.hs -o
 libraries/time/dist-install/build/Data/Time/Format.o -dyno libraries/time
 /dist-install/build/Data/Time/Format.dyn_o
 /tmp/ghc3030_0/ghc3030_1.s: Assembler messages:

 /tmp/ghc3030_0/ghc3030_1.s:51471:0:
      Error: operand out of range (0x0000adf8 is not between 0xffff8000 and
 0x00007fff)
 ... and many more like the above ...
 }}}

 The referenced label is `Lnw0w`

 {{{
 .Lctem:
         bcl     20,31,1f
 1:      mflr    31
         lwz     30, .Lnw0w-(1b)(31)
 }}}

 Maybe we can salvage the situation by placing its definition
 {{{
 .text
 .align 2
 .Lnw0w:
         .long   .LCTOC1-(1b)+0
 }}}
 further up? I.e., being more conservative with approximating label
 differences?

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



More information about the ghc-tickets mailing list