From 5901c57caab635c0d5c1a7ac6502ea7872f44001 Mon Sep 17 00:00:00 2001 From: Adam Izraelevitz Date: Wed, 24 Feb 2016 20:36:47 -0800 Subject: Fixed printf bugs in scala and stanza versions. Required special casing prints in SplitExp, and emitting expressions instead of their toString counterparts --- src/main/stanza/passes.stanza | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'src/main/stanza') diff --git a/src/main/stanza/passes.stanza b/src/main/stanza/passes.stanza index cb4607b8..e9abaf74 100644 --- a/src/main/stanza/passes.stanza +++ b/src/main/stanza/passes.stanza @@ -1844,11 +1844,16 @@ defn split-exp (m:InModule) -> InModule : if i > 0 : split(e) else : e (e) : e - match(map(split-exp-e{_,0},s)) : + match(s) : (s:Begin) : map(split-exp-s,s) - (s) : - add(v,s) - s + (s:Print) : + val s* = map(split-exp-e{_,1},s) + add(v,s*) + s* + (s) : + val s* = map(split-exp-e{_,0},s) + add(v,s*) + s* split-exp-s(body(m)) InModule(info(m),name(m),ports(m),Begin(to-list(v))) @@ -2696,7 +2701,7 @@ defn emit-verilog (m:InModule) -> Module : defn stop (ret:Int) -> Streamable : ["$fdisplay(32'h80000002,\"" ret "\");$finish;"] defn printf (str:String,args:List) -> Streamable : - val str* = join(List(escape(str),map(escape,map(to-string,args))),",") + val str* = join(List(escape(str),args),",") ["$fwrite(32'h80000002," str* ");"] defn delay (e:Expression, n:Int, clk:Expression) -> Expression : var e* = e -- cgit v1.2.3