projects
/
mate.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
basicblock: annotate BBs with exceptions
[mate.git]
/
Mate
/
BasicBlocks.hs
diff --git
a/Mate/BasicBlocks.hs
b/Mate/BasicBlocks.hs
index 7fefb6015d9a8cbd001050157f737d3729bb8b92..7fd2e4830eca4c7699fafde8030da559f11b4fb5 100644
(file)
--- a/
Mate/BasicBlocks.hs
+++ b/
Mate/BasicBlocks.hs
@@
-35,6
+35,15
@@
type BBState = Targets
type AnalyseState = State BBState [OffIns]
type AnalyseState = State BBState [OffIns]
+noException :: B.ByteString
+noException = B.empty
+
+emptyBasicBlock :: BasicBlock
+emptyBasicBlock = BasicBlock
+ { code = []
+ , exception = noException
+ , successor = Return }
+
printMapBB :: MapBB -> IO ()
printMapBB hmap = do
printfBb "BlockIDs: "
printMapBB :: MapBB -> IO ()
printMapBB hmap = do
printfBb "BlockIDs: "
@@
-144,7
+153,7
@@
buildCFG' hmap ((off, entry, _):xs) insns = buildCFG' (insertlist entryi hmap) x
parseBasicBlock :: Int -> [OffIns] -> BasicBlock
parseBasicBlock :: Int -> [OffIns] -> BasicBlock
-parseBasicBlock i insns =
BasicBlock insonly endblock
+parseBasicBlock i insns =
emptyBasicBlock { code = insonly, successor = endblock }
where
(lastblock, is) = takeWhilePlusOne validins omitins insns
(_, _, insonly) = unzip3 is
where
(lastblock, is) = takeWhilePlusOne validins omitins insns
(_, _, insonly) = unzip3 is