From 13c6ff8f7a91ddaaf1cddf17dc090eff9664e811 Mon Sep 17 00:00:00 2001 From: azidar Date: Mon, 17 Aug 2015 14:04:59 -0700 Subject: Fixed bug where equality between expressions was incorrect, leading to an optimization that eliminated some when statements. Added test case. --- src/main/stanza/passes.stanza | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/main/stanza/passes.stanza b/src/main/stanza/passes.stanza index d3efb02e..9d2b1281 100644 --- a/src/main/stanza/passes.stanza +++ b/src/main/stanza/passes.stanza @@ -1242,9 +1242,10 @@ defmethod equal? (e1:Expression,e2:Expression) -> True|False : if value(e1) == value(e2) : width(e1) == width(e2) else : false (e1:WRef,e2:WRef) : name(e1) == name(e2) - ;(e1:DoPrim,e2:DoPrim) : TODO - (e1:WSubfield,e2:WSubfield) : name(e1) == name(e2) - ;(e1:Pad,e2:Pad) : width(e1) == width(e2) and value(e1) == value(e2) + (e1:WSubfield,e2:WSubfield) : + (name(e1) == name(e2)) and (exp(e1) == exp(e2)) + (e1:WIndex,e2:WIndex) : + (value(e1) == value(e2)) and (exp(e1) == exp(e2)) (e1:DoPrim,e2:DoPrim) : var are-equal? = op(e1) == op(e2) for (x in args(e1),y in args(e2)) do : @@ -1495,12 +1496,12 @@ defn build-tables (s:Stmt, match(r) : (r:SymbolicValue) : resets[i] = r (r) : false - ;println-debug("TABLE-C") - ;for x in assign-c do : println-debug(x) - ;println-debug("TABLE-A") - ;for x in assign-a do : println-debug(x) - ;println-debug("TABLE") - ;for x in assign do : println-debug(x) + println-debug("TABLE-C") + for x in assign-c do : println-debug(x) + println-debug("TABLE-A") + for x in assign-a do : println-debug(x) + println-debug("TABLE") + for x in assign do : println-debug(x) (s:Connect|OnReset) : val key* = match(loc(s)) : (e:WRef) : name(e) -- cgit v1.2.3