From 8576a68e0d4eb4a24533d6e7d0c14cdfea2eda27 Mon Sep 17 00:00:00 2001 From: Jack Koenig Date: Fri, 8 May 2020 23:31:36 -0700 Subject: Lazily generate more detailed error messages in CheckHighFormLike Don't serialize Expressions unless there is an error --- src/main/scala/firrtl/passes/CheckHighForm.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/main/scala/firrtl/passes/CheckHighForm.scala b/src/main/scala/firrtl/passes/CheckHighForm.scala index 25bfc20b..6f8f6a8c 100644 --- a/src/main/scala/firrtl/passes/CheckHighForm.scala +++ b/src/main/scala/firrtl/passes/CheckHighForm.scala @@ -151,14 +151,14 @@ trait CheckHighFormLike { this: Pass => case _ => // Do Nothing } - def checkHighFormW(info: Info, mname: String)(w: Width): Unit = { + def checkHighFormW(info: Info, mname: => String)(w: Width): Unit = { w match { case wx: IntWidth if wx.width < 0 => errors.append(new NegWidthException(info, mname)) case wx => // Do nothing } } - def checkHighFormT(info: Info, mname: String)(t: Type): Unit = { + def checkHighFormT(info: Info, mname: => String)(t: Type): Unit = { t foreach checkHighFormT(info, mname) t match { case tx: VectorType if tx.size < 0 => -- cgit v1.2.3 From 6910d3fbb355ac5707904a1b4a238f0f20e3e7c5 Mon Sep 17 00:00:00 2001 From: Jack Koenig Date: Fri, 8 May 2020 23:33:50 -0700 Subject: Don't check Types of Expressions in CheckHighFormLike Expression Types are derived. They cannot cause the errors detected by CheckHighFormLike independently of the user-specified types that remain chedked. This speeds up CheckChirrtl and CheckHighForm substantially. --- src/main/scala/firrtl/passes/CheckHighForm.scala | 1 - 1 file changed, 1 deletion(-) (limited to 'src') diff --git a/src/main/scala/firrtl/passes/CheckHighForm.scala b/src/main/scala/firrtl/passes/CheckHighForm.scala index 6f8f6a8c..5ca5cd54 100644 --- a/src/main/scala/firrtl/passes/CheckHighForm.scala +++ b/src/main/scala/firrtl/passes/CheckHighForm.scala @@ -191,7 +191,6 @@ trait CheckHighFormLike { this: Pass => case ex => ex foreach validSubexp(info, mname) } e foreach checkHighFormW(info, mname + "/" + e.serialize) - e foreach checkHighFormT(info, mname + "/" + e.serialize) e foreach checkHighFormE(info, mname, names) } -- cgit v1.2.3