diff options
| author | Jack Koenig | 2020-09-06 12:33:57 -0700 |
|---|---|---|
| committer | GitHub | 2020-09-06 12:33:57 -0700 |
| commit | e420f99d87ece9f56504b3afc2e37d40b6e8c7b1 (patch) | |
| tree | b5b0bd58912cdc28dc7d7abe34cde812c6e1c755 /src/main/scala/firrtl/transforms | |
| parent | b6de1491af7ba88bb778aaeeba369b6b87151f9e (diff) | |
Add --pretty:no-expr-inlining to prevent expression inlining (#1869)
Also rename --Wno-scala-version-warning to
--warn:no-scala-version-deprecation and adopt naming convention where
resulting annotation matches the CLI option
Diffstat (limited to 'src/main/scala/firrtl/transforms')
| -rw-r--r-- | src/main/scala/firrtl/transforms/CombineCats.scala | 20 | ||||
| -rw-r--r-- | src/main/scala/firrtl/transforms/InlineBooleanExpressions.scala | 42 |
2 files changed, 39 insertions, 23 deletions
diff --git a/src/main/scala/firrtl/transforms/CombineCats.scala b/src/main/scala/firrtl/transforms/CombineCats.scala index 3014d0e3..6d05698f 100644 --- a/src/main/scala/firrtl/transforms/CombineCats.scala +++ b/src/main/scala/firrtl/transforms/CombineCats.scala @@ -7,6 +7,7 @@ import firrtl.PrimOps._ import firrtl.WrappedExpression._ import firrtl.annotations.NoTargetAnnotation import firrtl.options.Dependency +import firrtl.stage.PrettyNoExprInlining import scala.collection.mutable @@ -74,11 +75,18 @@ class CombineCats extends Transform with DependencyAPIMigration { val defaultMaxCatLen = 10 def execute(state: CircuitState): CircuitState = { - val maxCatLen = state.annotations.collectFirst { - case m: MaxCatLenAnnotation => m.maxCatLen - }.getOrElse(defaultMaxCatLen) - - val modulesx = state.circuit.modules.map(CombineCats.onMod(maxCatLen)) - state.copy(circuit = state.circuit.copy(modules = modulesx)) + val run = !state.annotations.contains(PrettyNoExprInlining) + + if (run) { + val maxCatLen = state.annotations.collectFirst { + case m: MaxCatLenAnnotation => m.maxCatLen + }.getOrElse(defaultMaxCatLen) + + val modulesx = state.circuit.modules.map(CombineCats.onMod(maxCatLen)) + state.copy(circuit = state.circuit.copy(modules = modulesx)) + } else { + logger.info(s"--${PrettyNoExprInlining.longOption} specified, skipping...") + state + } } } diff --git a/src/main/scala/firrtl/transforms/InlineBooleanExpressions.scala b/src/main/scala/firrtl/transforms/InlineBooleanExpressions.scala index 31d69cc4..b405f353 100644 --- a/src/main/scala/firrtl/transforms/InlineBooleanExpressions.scala +++ b/src/main/scala/firrtl/transforms/InlineBooleanExpressions.scala @@ -3,6 +3,7 @@ package firrtl package transforms +import firrtl.stage.PrettyNoExprInlining import firrtl.annotations.{NoTargetAnnotation, Target} import firrtl.annotations.TargetToken.{fromStringToTargetToken, OfModule, Ref} import firrtl.ir._ @@ -159,26 +160,33 @@ class InlineBooleanExpressions extends Transform with DependencyAPIMigration { } def execute(state: CircuitState): CircuitState = { - val dontTouchMap: Map[OfModule, Set[Ref]] = { - val refTargets = state.annotations.flatMap { - case anno: HasDontTouches => anno.dontTouches - case o => Nil - } - val dontTouches: Seq[(OfModule, Ref)] = refTargets.map { - case r => Target.referringModule(r).module.OfModule -> r.ref.Ref + val run = !state.annotations.contains(PrettyNoExprInlining) + + if (run) { + val dontTouchMap: Map[OfModule, Set[Ref]] = { + val refTargets = state.annotations.flatMap { + case anno: HasDontTouches => anno.dontTouches + case o => Nil + } + val dontTouches: Seq[(OfModule, Ref)] = refTargets.map { + case r => Target.referringModule(r).module.OfModule -> r.ref.Ref + } + dontTouches.groupBy(_._1).mapValues(_.map(_._2).toSet).toMap } - dontTouches.groupBy(_._1).mapValues(_.map(_._2).toSet).toMap - } - val maxInlineCount = state.annotations.collectFirst { - case InlineBooleanExpressionsMax(max) => max - }.getOrElse(InlineBooleanExpressions.defaultMax) + val maxInlineCount = state.annotations.collectFirst { + case InlineBooleanExpressionsMax(max) => max + }.getOrElse(InlineBooleanExpressions.defaultMax) - val modulesx = state.circuit.modules.map { m => - val mapMethods = new MapMethods(maxInlineCount, dontTouchMap.getOrElse(m.name.OfModule, Set.empty[Ref])) - m.mapStmt(mapMethods.onStmt(_)) - } + val modulesx = state.circuit.modules.map { m => + val mapMethods = new MapMethods(maxInlineCount, dontTouchMap.getOrElse(m.name.OfModule, Set.empty[Ref])) + m.mapStmt(mapMethods.onStmt(_)) + } - state.copy(circuit = state.circuit.copy(modules = modulesx)) + state.copy(circuit = state.circuit.copy(modules = modulesx)) + } else { + logger.info(s"--${PrettyNoExprInlining.longOption} specified, skipping...") + state + } } } |
