diff options
| author | jackbackrack | 2015-04-21 08:31:35 -0700 |
|---|---|---|
| committer | jackbackrack | 2015-04-21 08:31:35 -0700 |
| commit | 2766967ca7f9afb4bf8680098b94d1562ff743a6 (patch) | |
| tree | b4bf027268350122c3423e157984755c9d2a6a84 /src | |
| parent | 2b2f658ffa16ad4c635e037cf77a4db85564da6b (diff) | |
| parent | fe2b96f8bbb5ed8deff6cbc8b377087b53d0c4d2 (diff) | |
merge
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/stanza/passes.stanza | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/main/stanza/passes.stanza b/src/main/stanza/passes.stanza index d14da0b5..42045531 100644 --- a/src/main/stanza/passes.stanza +++ b/src/main/stanza/passes.stanza @@ -1730,14 +1730,21 @@ defn split-exp (c:Circuit) : defn f (s:Stmt) -> False: split-exp-s(s,v) do(f,s) (s:Conditionally) : error("Shouldn't be here") - (s) : add(v,map(split-exp-e{_,v},s)) + (s:Connect) : + match(loc(s)) : + (e:WritePort) : add(v,map(split-exp-e{_,v,name(exp(s) as WRef)},s)) + (e) : add(v,map(split-exp-e{_,v,name(loc(s) as WRef)},s)) + (s:DefNode) : add(v,map(split-exp-e{_,v,name(s)},s)) + (s) : add(v,map(split-exp-e{_,v,false},s)) false - defn split-exp-e (e:Expression,v:Vector<Stmt>) -> Expression : - match(map(split-exp-e{_,v},e)): + defn split-exp-e (e:Expression,v:Vector<Stmt>,n:Symbol|False) -> Expression : + match(map(split-exp-e{_,v,n},e)): (e:Subfield|DoPrim|ReadPort|Register|WritePort) : - val n = gensym(`T) - add(v,DefNode(n,e)) - WRef(n,type(e),NodeKind(),UNKNOWN-GENDER) + val n* = + if n typeof False : gensym(`T) + else : to-symbol $ string-join $ [n as Symbol gensym(`#)] + add(v,DefNode(n*,e)) + WRef(n*,type(e),NodeKind(),UNKNOWN-GENDER) (e) : e Circuit{_,main(c)} $ |
