module Data.LLVM.BitCode.IR.Attrs where import Data.LLVM.BitCode.Bitstream import Data.LLVM.BitCode.Match import Data.LLVM.BitCode.Record import Text.LLVM.AST import Control.Monad ((<=<),mzero) -- | Matching function for parsing the linkage types out of fields. linkage :: Match Field Linkage linkage = choose <=< numeric where choose :: Match Int Linkage choose n = case n of 0 -> return External 1 -> return Weak 2 -> return Appending 3 -> return Internal 4 -> return Linkonce 5 -> return DLLImport 6 -> return DLLExport 7 -> return ExternWeak 8 -> return Common 9 -> return Private 10 -> return WeakODR 11 -> return LinkonceODR 12 -> return AvailableExternally 13 -> return LinkerPrivate 14 -> return LinkerPrivateWeak 15 -> return LinkerPrivateWeakDefAuto 16 -> return Weak 17 -> return WeakODR 18 -> return Linkonce 19 -> return LinkonceODR _ -> mzero