# gcc-4.0.1-20050507 during build (gcj -C -O2 for all *.java) of the org.eclipse.jdt.core from eclipse 3.1M6 tarball I get: org/eclipse/jdt/internal/compiler/parser/RecoveredElement.java:210: internal compiler error: in generate_bytecode_conditional, at java/jcf-write.c:1337 # testcase: unpack eclipse-sourceBuild-srcIncluded-3.1M6.zip and run below script: cd plugins/org.eclipse.jdt.core cp -f model/org/eclipse/jdt/core/Signature.java \ compiler/org/eclipse/jdt/core for f in `find batch -name '*.java' -or -name '*.properties'`; do g=`echo $f | sed 's:^batch/:compiler/:' | xargs dirname` [ -d $g ] || mkdir -p $g cp -a $f $g done cd compiler for f in `find -name '*.java' | cut -c 3-`; do gcj -Wno-deprecated -C -O2 $f done
One workaround is not to use -O2. My current guess is that a fold-based optimization creates a tree that the bytecode generator does not understand.
Reduced test case public class reduce { char[] source; public int compute(int pos) { for (int i = 0; i < pos; ++i) if (!(source[i] == ' ' || source[i] == '\t')) return -1; return pos; } }
I submitted a patch.
Subject: Bug 21519 CVSROOT: /cvs/gcc Module name: gcc Changes by: tromey@gcc.gnu.org 2005-05-15 18:28:30 Modified files: gcc/java : ChangeLog expr.c jcf-write.c libjava : ChangeLog Added files: libjava/testsuite/libjava.compile: pr21519.java pr21519.no-link Log message: gcc/java: PR java/21519: * jcf-write.c (generate_bytecode_insns) <SAVE_EXPR>: Don't call NOTE_PUSH. libjava: PR java/21519: * testsuite/libjava.compile/pr21519.java: New file. * testsuite/libjava.compile/pr21519.no-link: New file. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/java/ChangeLog.diff?cvsroot=gcc&r1=1.1610&r2=1.1611 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/java/expr.c.diff?cvsroot=gcc&r1=1.225&r2=1.226 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/java/jcf-write.c.diff?cvsroot=gcc&r1=1.162&r2=1.163 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libjava/ChangeLog.diff?cvsroot=gcc&r1=1.3612&r2=1.3613 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libjava/testsuite/libjava.compile/pr21519.java.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libjava/testsuite/libjava.compile/pr21519.no-link.diff?cvsroot=gcc&r1=NONE&r2=1.1
Subject: Bug 21519 CVSROOT: /cvs/gcc Module name: gcc Branch: gcc-4_0-branch Changes by: tromey@gcc.gnu.org 2005-05-15 19:09:30 Modified files: gcc/java : ChangeLog jcf-write.c libjava : ChangeLog Added files: libjava/testsuite/libjava.compile: pr21519.java pr21519.no-link Log message: gcc/java: PR java/21519: * jcf-write.c (generate_bytecode_insns) <SAVE_EXPR>: Don't call NOTE_PUSH. libjava: PR java/21519: * testsuite/libjava.compile/pr21519.java: New file. * testsuite/libjava.compile/pr21519.no-link: New file. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/java/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.1556.2.20&r2=1.1556.2.21 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/java/jcf-write.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.162&r2=1.162.4.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libjava/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.3391.2.65&r2=1.3391.2.66 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libjava/testsuite/libjava.compile/pr21519.java.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libjava/testsuite/libjava.compile/pr21519.no-link.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.2.1
Fix checked in.