packages feed

dhscanner-bitcode 1.0.17 → 1.1.0

raw patch · 2 files changed

+14/−2 lines, 2 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Bitcode: EqOp :: BinopOp
+ Bitcode: NeqOp :: BinopOp
+ Bitcode: OtherOp :: BinopOp
+ Bitcode: [binopOperator] :: BinopContent -> BinopOp
+ Bitcode: data BinopOp
+ Bitcode: instance Data.Aeson.Types.FromJSON.FromJSON Bitcode.BinopOp
+ Bitcode: instance Data.Aeson.Types.ToJSON.ToJSON Bitcode.BinopOp
+ Bitcode: instance GHC.Classes.Eq Bitcode.BinopOp
+ Bitcode: instance GHC.Classes.Ord Bitcode.BinopOp
+ Bitcode: instance GHC.Generics.Generic Bitcode.BinopOp
+ Bitcode: instance GHC.Show.Show Bitcode.BinopOp
- Bitcode: BinopContent :: Variable -> Value -> Value -> BinopContent
+ Bitcode: BinopContent :: Variable -> Value -> Value -> BinopOp -> BinopContent

Files

dhscanner-bitcode.cabal view
@@ -20,7 +20,7 @@     in mind. The commands resemble an abstract RISC-style assembley, motivated by keeping
     later-phases analyses as simple as possible.
 
-version:            1.0.17
+version:            1.1.0
 license:            GPL-3.0-only
 license-file:       LICENSE
 author:             OrenGitHub
src/Bitcode.hs view
@@ -165,12 +165,24 @@      }
      deriving ( Show, Eq, Generic, ToJSON, FromJSON, Ord )
 
+-- | Coarse operator classification for 'BinopContent'. Only equality
+-- variants are distinguished; everything else collapses to 'OtherOp' so
+-- downstream analyses ( e.g. @kb_comparison@ in @dhscanner-kbgen@ ) can
+-- pick out gated-return-on-comparison patterns without carrying the full
+-- 'Ast.Operator' surface into the bitcode layer.
+data BinopOp
+   = EqOp
+   | NeqOp
+   | OtherOp
+   deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
+
 data BinopContent
    = BinopContent
      {
          binopOutput :: Variable,
          binopLhs :: Value,
-         binopRhs :: Value
+         binopRhs :: Value,
+         binopOperator :: BinopOp
      }
      deriving ( Show, Eq, Generic, ToJSON, FromJSON, Ord )