summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2013-08-29 10:53:12 +0200
committerJason Zaugg <jzaugg@gmail.com>2013-08-29 10:55:43 +0200
commit6ad8eb4d899e08288f7c9243910f9c154b9fa21d (patch)
treeede537511e6e1d57aaf28d1496640da42498aa59 /src
parent26dfa54ef31687e4c3e5b85be476ee5759f77950 (diff)
downloadscala-6ad8eb4d899e08288f7c9243910f9c154b9fa21d.tar.gz
scala-6ad8eb4d899e08288f7c9243910f9c154b9fa21d.tar.bz2
scala-6ad8eb4d899e08288f7c9243910f9c154b9fa21d.zip
SI-7763 Don't eliminate CHECK_CAST in dead code elimination.
Even if the result isn't used, the potential ClassCastException is observable, so we must retain them.
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/backend/opt/DeadCodeElimination.scala2
1 files changed, 1 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 483bff6467..7511da8b00 100644
--- a/src/compiler/scala/tools/nsc/backend/opt/DeadCodeElimination.scala
+++ b/src/compiler/scala/tools/nsc/backend/opt/DeadCodeElimination.scala
@@ -159,7 +159,7 @@ abstract class DeadCodeElimination extends SubComponent {
case RETURN(_) | JUMP(_) | CJUMP(_, _, _, _) | CZJUMP(_, _, _, _) | STORE_FIELD(_, _) |
THROW(_) | LOAD_ARRAY_ITEM(_) | STORE_ARRAY_ITEM(_) | SCOPE_ENTER(_) | SCOPE_EXIT(_) | STORE_THIS(_) |
- LOAD_EXCEPTION(_) | SWITCH(_, _) | MONITOR_ENTER() | MONITOR_EXIT() =>
+ LOAD_EXCEPTION(_) | SWITCH(_, _) | MONITOR_ENTER() | MONITOR_EXIT() | CHECK_CAST(_) =>
moveToWorkList()
case CALL_METHOD(m1, _) if isSideEffecting(m1) =>