summaryrefslogtreecommitdiff
path: root/test/files
diff options
context:
space:
mode:
authorGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2013-02-26 00:06:14 -0800
committerGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2013-02-26 00:06:14 -0800
commita340dd61c7320754bf4c12535c5daccbdea9492c (patch)
tree57c23a178881adc61362eb53379b262b09450197 /test/files
parentf2be783020a1c8e05ebcae3717740632b41d1751 (diff)
parent4f2d784a09e5df244ebbee33d23cf931fcacb740 (diff)
downloadscala-a340dd61c7320754bf4c12535c5daccbdea9492c.tar.gz
scala-a340dd61c7320754bf4c12535c5daccbdea9492c.tar.bz2
scala-a340dd61c7320754bf4c12535c5daccbdea9492c.zip
Merge pull request #2158 from JamesIry/master_7006
SI-7006 Eliminate NOPs and unreachable code
Diffstat (limited to 'test/files')
-rw-r--r--test/files/jvm/t7006/Foo_1.flags1
-rw-r--r--test/files/jvm/t7006/Foo_1.scala10
-rw-r--r--test/files/jvm/t7006/Test.scala19
-rw-r--r--test/files/run/t6102.flags2
4 files changed, 31 insertions, 1 deletions
diff --git a/test/files/jvm/t7006/Foo_1.flags b/test/files/jvm/t7006/Foo_1.flags
new file mode 100644
index 0000000000..72fe7b1aa0
--- /dev/null
+++ b/test/files/jvm/t7006/Foo_1.flags
@@ -0,0 +1 @@
+ -Ydead-code -Ydebug -Xfatal-warnings
diff --git a/test/files/jvm/t7006/Foo_1.scala b/test/files/jvm/t7006/Foo_1.scala
new file mode 100644
index 0000000000..995619ce6b
--- /dev/null
+++ b/test/files/jvm/t7006/Foo_1.scala
@@ -0,0 +1,10 @@
+class Foo_1 {
+ def foo {
+ try {
+ val x = 3 // this will be optimized away, leaving a useless jump only block
+ } finally {
+ print("hello")
+ }
+ while(true){} // ensure infinite loop doesn't break the algoirthm
+ }
+}
diff --git a/test/files/jvm/t7006/Test.scala b/test/files/jvm/t7006/Test.scala
new file mode 100644
index 0000000000..065a23510e
--- /dev/null
+++ b/test/files/jvm/t7006/Test.scala
@@ -0,0 +1,19 @@
+import scala.tools.partest.BytecodeTest
+import scala.tools.asm
+import asm.tree.InsnList
+import scala.collection.JavaConverters._
+
+object Test extends BytecodeTest {
+ def show: Unit = {
+ val classNode = loadClassNode("Foo_1")
+ val methodNode = getMethod(classNode, "foo")
+ assert(count(methodNode.instructions, asm.Opcodes.NOP) == 0)
+ assert(count(methodNode.instructions, asm.Opcodes.GOTO) == 1)
+ }
+
+ def count(insnList: InsnList, opcode: Int): Int = {
+ def isNop(node: asm.tree.AbstractInsnNode): Boolean =
+ (node.getOpcode == opcode)
+ insnList.iterator.asScala.count(isNop)
+ }
+}
diff --git a/test/files/run/t6102.flags b/test/files/run/t6102.flags
index e35535c8ea..72fe7b1aa0 100644
--- a/test/files/run/t6102.flags
+++ b/test/files/run/t6102.flags
@@ -1 +1 @@
- -Ydead-code
+ -Ydead-code -Ydebug -Xfatal-warnings