module LLVM.Target.Options where
import LLVM.Prelude
data FloatABI
= FloatABIDefault
| FloatABISoft
| FloatABIHard
deriving (Eq, Ord, Read, Show, Enum, Bounded, Typeable, Data, Generic)
data FloatingPointOperationFusionMode
= FloatingPointOperationFusionFast
| FloatingPointOperationFusionStandard
| FloatingPointOperationFusionStrict
deriving (Eq, Ord, Read, Show, Enum, Bounded, Typeable, Data, Generic)
data DebugCompressionType
= CompressNone
| CompressGNU
| CompressZ
deriving (Eq, Ord, Read, Show, Enum, Bounded, Typeable, Data, Generic)
data Options = Options {
printMachineCode :: Bool,
unsafeFloatingPointMath :: Bool,
noInfinitiesFloatingPointMath :: Bool,
noNaNsFloatingPointMath :: Bool,
honorSignDependentRoundingFloatingPointMathOption :: Bool,
noZerosInBSS :: Bool,
guaranteedTailCallOptimization :: Bool,
enableFastInstructionSelection :: Bool,
useInitArray :: Bool,
disableIntegratedAssembler :: Bool,
compressDebugSections :: DebugCompressionType,
trapUnreachable :: Bool,
stackAlignmentOverride :: Word32,
floatABIType :: FloatABI,
allowFloatingPointOperationFusion :: FloatingPointOperationFusionMode
}
deriving (Eq, Ord, Read, Show)