diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2013-01-07 09:09:30 +0100 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2013-01-26 15:41:07 +0100 |
commit | 412ad5724c0ca34f5fd6982ff6a0b12a437218bc (patch) | |
tree | 55e366895405a810b92ea22d4dd8d93015912442 | |
parent | f21b1ce7fda9022d6d805a708882c5a2ab241f41 (diff) | |
download | scala-412ad5724c0ca34f5fd6982ff6a0b12a437218bc.tar.gz scala-412ad5724c0ca34f5fd6982ff6a0b12a437218bc.tar.bz2 scala-412ad5724c0ca34f5fd6982ff6a0b12a437218bc.zip |
SI-4859 Retain MODULE_LOAD in dead code elim.
Without this, the following test fails:
SCALAC_OPTS="-optimize" ./test/partest test/files/run/t4859.scala
-rw-r--r-- | src/compiler/scala/tools/nsc/backend/opt/DeadCodeElimination.scala | 2 | ||||
-rw-r--r-- | test/files/run/t4859.scala | 2 |
2 files changed, 3 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/opt/DeadCodeElimination.scala b/src/compiler/scala/tools/nsc/backend/opt/DeadCodeElimination.scala index f7e743a6f1..0282457a12 100644 --- a/src/compiler/scala/tools/nsc/backend/opt/DeadCodeElimination.scala +++ b/src/compiler/scala/tools/nsc/backend/opt/DeadCodeElimination.scala @@ -144,6 +144,8 @@ abstract class DeadCodeElimination extends SubComponent { } } if (necessary) worklist += ((bb, idx)) + case LOAD_MODULE(sym) if isLoadNeeded(sym) => + worklist += ((bb, idx)) // SI-4859 Module initialization might side-effect. case _ => () } rd = rdef.interpret(bb, idx, rd) diff --git a/test/files/run/t4859.scala b/test/files/run/t4859.scala index 6d223f2179..3c20cea983 100644 --- a/test/files/run/t4859.scala +++ b/test/files/run/t4859.scala @@ -15,7 +15,7 @@ object Outer { object Test { def main(args: Array[String]) { - Outer.Inner.i // we still don't initiialize Outer here (but should we?) + Outer.Inner.i // we still don't initialize Outer here (but should we?) {println("About to reference Inner.i"); Outer}.Inner.i // Outer will be initialized. |