[GHC] #11823: Undefined stg_sel_17_upd_info symbols on OS X
GHC
ghc-devs at haskell.org
Wed Apr 13 10:32:24 UTC 2016
#11823: Undefined stg_sel_17_upd_info symbols on OS X
-------------------------------------+-------------------------------------
Reporter: bgamari | Owner:
Type: bug | Status: new
Priority: highest | Milestone: 8.0.1
Component: Compiler | Version: 8.0.1-rc3
Resolution: | Keywords:
Operating System: MacOS X | Architecture: x86_64
Type of failure: Building GHC | (amd64)
failed | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by bgamari):
Great, thanks everyone who contributed dumps.
This is quite bizarre: the pattern match in question appears to be
selecting the 20th field of a `GHCiState` constructor (citing the STG),
{{{#!hs
let { sat_s1rNg :: [GHC.Types.Char] =
\u srt:SRT:[] []
case ipv146_s1rMI of
_ { GHCi.UI.Monad.GHCiState _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ ds36_s1rNa _ _ _ _ _ ->
ds36_s1rNa;
};
} in GHC.CString.unpackAppendCString# "'\n"# sat_s1rNg;
}}}
Somehow this emits this C--,
{{{
c1Mzv:
_s1rMI::P64 = P64[_s1rNh::P64 + 16];
I64[Hp - 16] = stg_sel_17_upd_info;
P64[Hp] = _s1rMI::P64;
_c1Mzq::P64 = Hp - 16;
R3 = _c1Mzq::P64;
R2 = c1Mzr_str;
call GHC.CString.unpackAppendCString#_info(R3,
R2) args: 8, res: 0,
upd: 8;
}}}
Which is truly strange in light of the check in `mkRhsClosure`,
{{{#!hs
mkRhsClosure dflags bndr _cc _bi [NonVoid the_fv] upd_flag [] expr
| let strip = snd . stripStgTicksTop (not . tickishIsCode)
, StgCase (StgApp scrutinee [{-no args-}])
_ -- ignore bndr
(AlgAlt _)
[(DataAlt _, params, sel_expr)] <- strip expr
, StgApp selectee [{-no args-}] <- strip sel_expr
, the_fv == scrutinee -- Scrutinee is the only free
variable
, let (_, _, params_w_offsets) = mkVirtConstrOffsets dflags (addIdReps
params)
-- Just want the layout
, Just the_offset <- assocMaybe params_w_offsets (NonVoid selectee)
, let offset_into_int = bytesToWordsRoundUp dflags the_offset
- fixedHdrSizeW dflags
, offset_into_int <= mAX_SPEC_SELECTEE_SIZE dflags -- Offset is small
enough
= let lf_info = mkSelectorLFInfo bndr offset_into_int (isUpdatable
upd_flag)
in cgRhsStdThunk bndr lf_info [StgVarArg the_fv]
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/11823#comment:9>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list