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;
       }