diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index d80ff952754d92144a69af5d0f465c5c735e20a0..485e362b094870c947517c6b678484a877de08de 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,7 @@ +2006-03-15 Tom Tromey <tromey@redhat.com> + + * parse.y (analyze_clinit_body): Ignore empty statements. + 2006-03-08 David Daney <ddaney@avtrex.com> * gcj.texi: Document -static-libgcj option. diff --git a/gcc/java/parse.y b/gcc/java/parse.y index 4ba158171b0fad1cb2cd5fa1f04eba42e9d8fc7d..48a56d8f1d834550319a63b7d55fac89cc189d2f 100644 --- a/gcc/java/parse.y +++ b/gcc/java/parse.y @@ -1,6 +1,6 @@ /* Source code parsing and tree node generation for the GNU compiler for the Java(TM) language. - Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 + Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. Contributed by Alexandre Petit-Bianco (apbianco@cygnus.com) @@ -8006,7 +8006,8 @@ maybe_generate_pre_expand_clinit (tree class_type) } /* Analyzes a method body and look for something that isn't a - MODIFY_EXPR with a constant value. */ + MODIFY_EXPR with a constant value. Return true if <clinit> is + needed, false otherwise. */ static int analyze_clinit_body (tree this_class, tree bbody) @@ -8045,6 +8046,11 @@ analyze_clinit_body (tree this_class, tree bbody) || ! DECL_INITIAL (TREE_OPERAND (bbody, 0)) || DECL_CONTEXT (TREE_OPERAND (bbody, 0)) != this_class); + case NOP_EXPR: + /* We might see an empty statement here, which is + ignorable. */ + return ! IS_EMPTY_STMT (bbody); + default: return 1; }