diff options
author | Manuel M T Chakravarty <chak@cse.unsw.edu.au> | 2011-08-24 22:34:40 +1000 |
---|---|---|
committer | Manuel M T Chakravarty <chak@cse.unsw.edu.au> | 2011-08-24 22:44:09 +1000 |
commit | faa4b3f08f2379a14d163d5485b05bf3ab84c530 (patch) | |
tree | a9f2fa4e87e8271c076c4582637ab7cec37138a4 /compiler/iface | |
parent | 82ac7ff381e0eaaf3e6e18c375b32a0d7463344a (diff) | |
download | haskell-faa4b3f08f2379a14d163d5485b05bf3ab84c530.tar.gz |
Fix name generation for vectorised identifiers
Diffstat (limited to 'compiler/iface')
-rw-r--r-- | compiler/iface/MkIface.lhs | 3 | ||||
-rw-r--r-- | compiler/iface/TcIface.lhs | 14 |
2 files changed, 9 insertions, 8 deletions
diff --git a/compiler/iface/MkIface.lhs b/compiler/iface/MkIface.lhs index d32b6d1cc8..d17fe6adf8 100644 --- a/compiler/iface/MkIface.lhs +++ b/compiler/iface/MkIface.lhs @@ -575,7 +575,8 @@ addFingerprints hsc_env mb_old_fingerprint iface0 new_decls mi_iface_hash = iface_hash, mi_exp_hash = export_hash, mi_orphan_hash = orphan_hash, - mi_orphan = not (null orph_rules && null orph_insts), + mi_orphan = not (null orph_rules && null orph_insts + && null (ifaceVectInfoVar (mi_vect_info iface0))), mi_finsts = not . null $ mi_fam_insts iface0, mi_decls = sorted_decls, mi_hash_fn = lookupOccEnv local_env } diff --git a/compiler/iface/TcIface.lhs b/compiler/iface/TcIface.lhs index 52311baa20..dde969fab0 100644 --- a/compiler/iface/TcIface.lhs +++ b/compiler/iface/TcIface.lhs @@ -722,7 +722,7 @@ tcIfaceVectInfo mod typeEnv (IfaceVectInfo } where vectVarMapping name - = do { vName <- lookupOrig mod (mkLocalisedOccName mkVectOcc name) + = do { vName <- lookupOrig mod (mkLocalisedOccName mod mkVectOcc name) ; var <- forkM (text ("vect var") <+> ppr name) $ tcIfaceExtId name ; vVar <- forkM (text ("vect vVar") <+> ppr vName) $ @@ -730,9 +730,9 @@ tcIfaceVectInfo mod typeEnv (IfaceVectInfo ; return (var, (var, vVar)) } vectTyConMapping name - = do { vName <- lookupOrig mod (mkLocalisedOccName mkVectTyConOcc name) - ; paName <- lookupOrig mod (mkLocalisedOccName mkPADFunOcc name) - ; isoName <- lookupOrig mod (mkLocalisedOccName mkVectIsoOcc name) + = do { vName <- lookupOrig mod (mkLocalisedOccName mod mkVectTyConOcc name) + ; paName <- lookupOrig mod (mkLocalisedOccName mod mkPADFunOcc name) + ; isoName <- lookupOrig mod (mkLocalisedOccName mod mkVectIsoOcc name) -- FIXME: we will need to use tcIfaceTyCon/tcIfaceExtId on some of these (but depends -- on how we exactly define the 'VECTORISE type' pragma to work) ; let { tycon = lookupTyCon name @@ -748,8 +748,8 @@ tcIfaceVectInfo mod typeEnv (IfaceVectInfo ) } vectTyConReuseMapping scalarNames name - = do { paName <- lookupOrig mod (mkLocalisedOccName mkPADFunOcc name) - ; isoName <- lookupOrig mod (mkLocalisedOccName mkVectIsoOcc name) + = do { paName <- lookupOrig mod (mkLocalisedOccName mod mkPADFunOcc name) + ; isoName <- lookupOrig mod (mkLocalisedOccName mod mkVectIsoOcc name) ; tycon <- forkM (text ("vect reuse tycon") <+> ppr name) $ tcIfaceTyCon (IfaceTc name) -- somewhat naughty for wired in tycons, but ok ; if name `elemNameSet` scalarNames @@ -773,7 +773,7 @@ tcIfaceVectInfo mod typeEnv (IfaceVectInfo }} vectDataConMapping datacon = do { let name = dataConName datacon - ; vName <- lookupOrig mod (mkLocalisedOccName mkVectDataConOcc name) + ; vName <- lookupOrig mod (mkLocalisedOccName mod mkVectDataConOcc name) ; let vDataCon = lookupDataCon vName ; return (name, (datacon, vDataCon)) } |