summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2016-11-11 17:13:50 +1000
committerGitHub <noreply@github.com>2016-11-11 17:13:50 +1000
commit35f8908c214b5458ffe32c782dc81055773f5fb4 (patch)
treeb74bb94ea3c7b4732fbed116ab13219e16f5db15
parente8a3f7bee7a3b5c55046eafce1e16b8f24e838a0 (diff)
parent1dfdb9cf709be3234479cf4db089007fd63c3402 (diff)
downloadscala-35f8908c214b5458ffe32c782dc81055773f5fb4.tar.gz
scala-35f8908c214b5458ffe32c782dc81055773f5fb4.tar.bz2
scala-35f8908c214b5458ffe32c782dc81055773f5fb4.zip
Merge pull request #5518 from som-snytt/issue/10037-2.11
SI-10037 ASR/LSR switched in ICodeReader
-rw-r--r--src/compiler/scala/tools/nsc/backend/icode/Primitives.scala2
-rw-r--r--src/compiler/scala/tools/nsc/symtab/classfile/ICodeReader.scala8
-rw-r--r--test/files/run/t10037.check2
-rw-r--r--test/files/run/t10037.flags1
-rw-r--r--test/files/run/t10037/shifter_2.scala8
-rw-r--r--test/files/run/t10037/shifty_1.scala7
6 files changed, 23 insertions, 5 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/icode/Primitives.scala b/src/compiler/scala/tools/nsc/backend/icode/Primitives.scala
index 27bf836484..dd930ba52f 100644
--- a/src/compiler/scala/tools/nsc/backend/icode/Primitives.scala
+++ b/src/compiler/scala/tools/nsc/backend/icode/Primitives.scala
@@ -210,7 +210,7 @@ trait Primitives { self: ICodes =>
case LSL => "LSL"
case ASR => "ASR"
case LSR => "LSR"
- case _ => throw new RuntimeException("ShitOp unknown case")
+ case _ => throw new RuntimeException("ShiftOp unknown case")
}
}
diff --git a/src/compiler/scala/tools/nsc/symtab/classfile/ICodeReader.scala b/src/compiler/scala/tools/nsc/symtab/classfile/ICodeReader.scala
index b2f5a4119d..7f18565cdf 100644
--- a/src/compiler/scala/tools/nsc/symtab/classfile/ICodeReader.scala
+++ b/src/compiler/scala/tools/nsc/symtab/classfile/ICodeReader.scala
@@ -452,10 +452,10 @@ abstract class ICodeReader extends ClassfileParser {
case JVM.ishl => code.emit(CALL_PRIMITIVE(Shift(LSL, INT)))
case JVM.lshl => code.emit(CALL_PRIMITIVE(Shift(LSL, LONG)))
- case JVM.ishr => code.emit(CALL_PRIMITIVE(Shift(LSR, INT)))
- case JVM.lshr => code.emit(CALL_PRIMITIVE(Shift(LSR, LONG)))
- case JVM.iushr => code.emit(CALL_PRIMITIVE(Shift(ASR, INT)))
- case JVM.lushr => code.emit(CALL_PRIMITIVE(Shift(ASR, LONG)))
+ case JVM.ishr => code.emit(CALL_PRIMITIVE(Shift(ASR, INT)))
+ case JVM.lshr => code.emit(CALL_PRIMITIVE(Shift(ASR, LONG)))
+ case JVM.iushr => code.emit(CALL_PRIMITIVE(Shift(LSR, INT)))
+ case JVM.lushr => code.emit(CALL_PRIMITIVE(Shift(LSR, LONG)))
case JVM.iand => code.emit(CALL_PRIMITIVE(Logical(AND, INT)))
case JVM.land => code.emit(CALL_PRIMITIVE(Logical(AND, LONG)))
case JVM.ior => code.emit(CALL_PRIMITIVE(Logical(OR, INT)))
diff --git a/test/files/run/t10037.check b/test/files/run/t10037.check
new file mode 100644
index 0000000000..94c07bddf5
--- /dev/null
+++ b/test/files/run/t10037.check
@@ -0,0 +1,2 @@
+-1073741824
+1073741824
diff --git a/test/files/run/t10037.flags b/test/files/run/t10037.flags
new file mode 100644
index 0000000000..2a7be92cd4
--- /dev/null
+++ b/test/files/run/t10037.flags
@@ -0,0 +1 @@
+-optimise -Ybackend:GenASM -Yinline-warnings
diff --git a/test/files/run/t10037/shifter_2.scala b/test/files/run/t10037/shifter_2.scala
new file mode 100644
index 0000000000..901dd2a312
--- /dev/null
+++ b/test/files/run/t10037/shifter_2.scala
@@ -0,0 +1,8 @@
+
+object Test extends App {
+ val i = shifty.X.f(Int.MinValue)
+ val j = shifty.X.g(Int.MinValue)
+ println(i)
+ println(j)
+}
+
diff --git a/test/files/run/t10037/shifty_1.scala b/test/files/run/t10037/shifty_1.scala
new file mode 100644
index 0000000000..2f28da01ca
--- /dev/null
+++ b/test/files/run/t10037/shifty_1.scala
@@ -0,0 +1,7 @@
+
+package shifty
+
+object X {
+ @inline def f(i: Int): Int = i >> 1
+ @inline def g(i: Int): Int = i >>> 1
+}