summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorGeoffrey Mainland <mainland@apeiron.net>2012-11-02 14:04:31 +0000
committerGeoffrey Mainland <gmainlan@microsoft.com>2013-02-01 22:00:24 +0000
commit089ac7171bee938bd52975d2f828cf0dd6b4b25b (patch)
tree38236cdbc41201798a761bf6ef1665772058d333 /utils
parent33bfc6a700eaab9bc06974d6f71a80e61d9177c9 (diff)
downloadhaskell-089ac7171bee938bd52975d2f828cf0dd6b4b25b.tar.gz
Add a primop attribute llvm_only.
The llvm_only attribute indicates that a primop is only available when using the LLVM back-end.
Diffstat (limited to 'utils')
-rw-r--r--utils/genprimopcode/Main.hs12
1 files changed, 6 insertions, 6 deletions
diff --git a/utils/genprimopcode/Main.hs b/utils/genprimopcode/Main.hs
index f3d6cb8dc0..4230cd8696 100644
--- a/utils/genprimopcode/Main.hs
+++ b/utils/genprimopcode/Main.hs
@@ -519,7 +519,7 @@ gen_wrappers (Info _ entries)
++ "#endif /* defined (__GLASGOW_HASKELL_LLVM__) */\n"
where
specs = filter (not.dodgy) (filter is_primop entries)
- (vecspecs, otherspecs) = partition (llvmOnlyTy . ty) specs
+ (vecspecs, otherspecs) = partition is_llvm_only specs
tycons = foldr union [] $ map (tyconsIn . ty) specs
(vectycons, othertycons) =
(partition llvmOnlyTyCon . filter (`notElem` ["()", "Bool"])) tycons
@@ -543,11 +543,11 @@ gen_wrappers (Info _ entries)
"parAtAbs#", "parAtRel#", "parAtForNow#"
]
- llvmOnlyTy :: Ty -> Bool
- llvmOnlyTy (TyF ty1 ty2) = llvmOnlyTy ty1 || llvmOnlyTy ty2
- llvmOnlyTy (TyApp tycon tys) = llvmOnlyTyCon tycon || any llvmOnlyTy tys
- llvmOnlyTy (TyVar _) = False
- llvmOnlyTy (TyUTup tys) = any llvmOnlyTy tys
+ is_llvm_only :: Entry -> Bool
+ is_llvm_only entry =
+ case lookup_attrib "llvm_only" (opts entry) of
+ Just (OptionTrue _) -> True
+ _ -> False
llvmOnlyTyCon :: TyCon -> Bool
llvmOnlyTyCon "Int32#" = True