aboutsummaryrefslogtreecommitdiff
path: root/gcc/java/parse.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/java/parse.c')
-rw-r--r--gcc/java/parse.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/java/parse.c b/gcc/java/parse.c
index ed25b16..1dd713c 100644
--- a/gcc/java/parse.c
+++ b/gcc/java/parse.c
@@ -12344,9 +12344,12 @@ patch_unaryop (node, wfl_op)
case PREDECREMENT_EXPR:
decl = strip_out_static_field_access_decl (op);
if (!JDECL_P (decl)
- && !((TREE_CODE (decl) == INDIRECT_REF
- || TREE_CODE (decl) == COMPONENT_REF)
- && JPRIMITIVE_TYPE_P (TREE_TYPE (decl))))
+ && TREE_CODE (decl) != COMPONENT_REF
+ && !(flag_emit_class_files && TREE_CODE (decl) == ARRAY_REF)
+ && TREE_CODE (decl) != INDIRECT_REF
+ && !(TREE_CODE (decl) == COMPOUND_EXPR
+ && TREE_OPERAND (decl, 1)
+ && (TREE_CODE (TREE_OPERAND (decl, 1)) == INDIRECT_REF)))
{
tree lvalue;
/* Before screaming, check that we're not in fact trying to