[c pass] merge neighbour conditionals (improved)
This commit is contained in:
parent
9a0bfd468c
commit
9483f7df5e
@ -96,8 +96,15 @@ let rec merge_neighbour_ifs = function
|
|||||||
| [] -> []
|
| [] -> []
|
||||||
| [stmt] -> [stmt]
|
| [stmt] -> [stmt]
|
||||||
| CIf (c, e1, e2) :: CIf (c', e'1, e'2) :: b ->
|
| CIf (c, e1, e2) :: CIf (c', e'1, e'2) :: b ->
|
||||||
if c = c'
|
begin
|
||||||
then merge_neighbour_ifs (CIf (c, e1 @ e'1, e2 @ e'2) :: b)
|
if c = c' then
|
||||||
else (CIf (c, e1, e2)) :: merge_neighbour_ifs (CIf (c', e'1, e'2) :: b)
|
merge_neighbour_ifs (CIf (c, e1 @ e'1, e2 @ e'2) :: b)
|
||||||
|
else if c = CMonOp (MOp_not, c') then
|
||||||
|
merge_neighbour_ifs (CIf (c, e1 @ e'2, e2 @ e'1) :: b)
|
||||||
|
else if c' = CMonOp (MOp_not, c) then
|
||||||
|
merge_neighbour_ifs (CIf (c, e1 @ e'2, e2 @ e'1) :: b)
|
||||||
|
else CIf (c, e1, e2) :: merge_neighbour_ifs (CIf (c', e'1, e'2) :: b)
|
||||||
|
end
|
||||||
| stmt :: stmt' :: b ->
|
| stmt :: stmt' :: b ->
|
||||||
stmt :: merge_neighbour_ifs (stmt' :: b)
|
stmt :: merge_neighbour_ifs (stmt' :: b)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user