aboutsummaryrefslogtreecommitdiff
path: root/gcc/java/jcf-write.c
diff options
context:
space:
mode:
authorRoger Sayle <roger@eyesopen.com>2005-02-01 21:20:34 +0000
committerRoger Sayle <sayle@gcc.gnu.org>2005-02-01 21:20:34 +0000
commit8ddd633ab7c014302093a65f134fd2b7edea97b9 (patch)
tree49304ee893802752508f13bc8eede2f0cf647ac6 /gcc/java/jcf-write.c
parentca58f2bc5c2ad8d30514c32e2e0b5283d0486a3c (diff)
downloadgcc-8ddd633ab7c014302093a65f134fd2b7edea97b9.zip
gcc-8ddd633ab7c014302093a65f134fd2b7edea97b9.tar.gz
gcc-8ddd633ab7c014302093a65f134fd2b7edea97b9.tar.bz2
jcf-write.c (generate_bytecode_insns): Implement RSHIFT_EXPR of unsigned types using iushr and lushr JVM bytecodes.
* jcf-write.c (generate_bytecode_insns): Implement RSHIFT_EXPR of unsigned types using iushr and lushr JVM bytecodes. From-SVN: r94560
Diffstat (limited to 'gcc/java/jcf-write.c')
-rw-r--r--gcc/java/jcf-write.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/java/jcf-write.c b/gcc/java/jcf-write.c
index da8c6c9..603eaa5 100644
--- a/gcc/java/jcf-write.c
+++ b/gcc/java/jcf-write.c
@@ -2146,7 +2146,9 @@ generate_bytecode_insns (tree exp, int target, struct jcf_partial *state)
jopcode = OPCODE_irem;
goto binop;
case LSHIFT_EXPR: jopcode = OPCODE_ishl; goto binop;
- case RSHIFT_EXPR: jopcode = OPCODE_ishr; goto binop;
+ case RSHIFT_EXPR:
+ jopcode = TYPE_UNSIGNED (type) ? OPCODE_iushr : OPCODE_ishr;
+ goto binop;
case URSHIFT_EXPR: jopcode = OPCODE_iushr; goto binop;
case TRUTH_AND_EXPR:
case BIT_AND_EXPR: jopcode = OPCODE_iand; goto binop;