public inbox for java-prs@sourceware.org
help / color / mirror / Atom feed
* [Bug java/38840] New: GCJ internal compiler error in handle_constant under very specific combination of conditions
@ 2009-01-14 15:40 nils dot de dot reus at ivm dot vu dot nl
2009-01-14 20:44 ` [Bug java/38840] " nils dot de dot reus at ivm dot vu dot nl
0 siblings, 1 reply; 2+ messages in thread
From: nils dot de dot reus at ivm dot vu dot nl @ 2009-01-14 15:40 UTC (permalink / raw)
To: java-prs
When compiling a class which assigns the value 1 to a variable of type static
final int, and that class has an annotation with a boolean value being set in
it, and annotation retention policy for the annotation is set RUNTIME, an
internal compiler error occurs in handle_constant.
I tried this on three different compilers, including the latest svn trunk. All
yielded the same error under the same conditions.
Tested with:
gcj (GCC) 4.2.1 (Ubuntu 4.2.1-5ubuntu5) (on 64 bit Ubuntu 7.10)
gcj (GCC) 4.2.4 (Ubuntu 4.2.4-1ubuntu3) (on 32 bit Ubuntu 8.04 LTS)
gcj (GCC) 4.4.0 20090113 (experimental) (on 32 bit Ubuntu 8.04 LTS)
I do not know what options the Ubuntu binaries were built with, but I built
from svn using all defaults:
./contrib/download_ecj
./configure --prefix=$HOME/gcc-trunk/20090113
make
make install
I've constructed two files that together demonstrate the effect.
//-------------- TestAnnotation.java -------------------
package nl.vu.ivm.nils.gcj.annotation;
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
public @interface TestAnnotation {
String eggs() default "";
int spam() default 0;
boolean foo() default false;
};
//------------------------------------------------------
//-------------- Test.java -----------------------------
package nl.vu.ivm.nils.gcj.annotation;
import nl.vu.ivm.nils.gcj.annotation.TestAnnotation;
@TestAnnotation(eggs = "yolk", spam = 5, foo = true)
public class Test {
static final int bar = 1;
};
//------------------------------------------------------
Now here goes.. all well until the third step:
$ gcj -C nl/vu/ivm/nils/gcj/annotation/TestAnnotation.java
$ gcj -C nl/vu/ivm/nils/gcj/annotation/Test.java
$ gcj -c nl/vu/ivm/nils/gcj/annotation/Test.class
In file included from <built-in>:0:
nl/vu/ivm/nils/gcj/annotation/Test.java:0: internal compiler error: in
handle_constant, at java/jcf-parse.c:584
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
Here is again with -v:
$ gcj -v -c nl/vu/ivm/nils/gcj/annotation/Test.class
Using built-in specs.
Reading specs from
/home/nils/gcc-trunk/latest/lib/gcc/i686-pc-linux-gnu/4.4.0/../../../libgcj.spec
rename spec startfile to startfileorig
rename spec lib to liborig
Target: i686-pc-linux-gnu
Configured with: ./configure --prefix=/home/nils/gcc-trunk/latest
Thread model: posix
gcc version 4.4.0 20090113 (experimental) (GCC)
COLLECT_GCC_OPTIONS='-v' '-c'
'-fbootclasspath=./:/home/nils/gcc-trunk/latest/share/java/libgcj-4.4.0.jar'
'-g1' '-shared-libgcc' '-mtune=generic'
COLLECT_GCC_OPTIONS='-v' '-c'
'-fbootclasspath=./:/home/nils/gcc-trunk/latest/share/java/libgcj-4.4.0.jar'
'-g1' '-shared-libgcc' '-mtune=generic'
/home/nils/gcc-trunk/latest/libexec/gcc/i686-pc-linux-gnu/4.4.0/jc1
nl/vu/ivm/nils/gcj/annotation/Test.class -fhash-synchronization
-fno-use-divide-subroutine -fuse-boehm-gc -fnon-call-exceptions
-fkeep-inline-functions -quiet -dumpbase Test.class -mtune=generic -auxbase
Test -g1 -version
-fbootclasspath=./:/home/nils/gcc-trunk/latest/share/java/libgcj-4.4.0.jar
-faux-classpath /tmp/cccemUCX.zip -o /tmp/ccOYsl8K.s
GNU Java (GCC) version 4.4.0 20090113 (experimental) (i686-pc-linux-gnu)
compiled by GNU C version 4.4.0 20090113 (experimental), GMP version
4.2.2, MPFR version 2.3.1.
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Class path starts here:
/tmp/cccemUCX.zip/ (zip)
./ (system)
/home/nils/gcc-trunk/latest/share/java/libgcj-4.4.0.jar/ (system) (zip)
In file included from <built-in>:0:
nl/vu/ivm/nils/gcj/annotation/Test.java:0: internal compiler error: in
handle_constant, at java/jcf-parse.c:584
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
What drives me up the walls is that doing *any* of the following will cause
this code to compile, so it must somehow be the combination of these things
that causes the error:
* If I do not set @Retention(RetentionPolicy.RUNTIME), it compiles.
* If I do not assign anything to the boolean field in the annotation (foo in
the example), it compiles.
* If I do not make bar final, it compiles.
* If I assign 0, 2, or 3 to bar, it compiles - just not if I assign 1.
Is this some kind of corner case?
--
Summary: GCJ internal compiler error in handle_constant under
very specific combination of conditions
Product: gcc
Version: 4.4.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: java
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: nils dot de dot reus at ivm dot vu dot nl
GCC build triplet: i686-pc-linux-gnu
GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38840
^ permalink raw reply [flat|nested] 2+ messages in thread
* [Bug java/38840] GCJ internal compiler error in handle_constant under very specific combination of conditions
2009-01-14 15:40 [Bug java/38840] New: GCJ internal compiler error in handle_constant under very specific combination of conditions nils dot de dot reus at ivm dot vu dot nl
@ 2009-01-14 20:44 ` nils dot de dot reus at ivm dot vu dot nl
0 siblings, 0 replies; 2+ messages in thread
From: nils dot de dot reus at ivm dot vu dot nl @ 2009-01-14 20:44 UTC (permalink / raw)
To: java-prs
------- Comment #1 from nils dot de dot reus at ivm dot vu dot nl 2009-01-14 20:44 -------
It is a bit further removed from the real life situation I am dealing with, but
to make testing easier I've moved it all into one file so you don't need to
bother with importing or package structure.
// ------------------------- Test.java -------------------------------
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@interface TestAnnotation {
String eggs() default "";
int spam() default 0;
boolean foo() default false;
};
@TestAnnotation(eggs = "yolk", spam = 5, foo = true)
public class Test {
static final int bar = 1;
};
// -------------------------------------------------------------------
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38840
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2009-01-14 20:44 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-01-14 15:40 [Bug java/38840] New: GCJ internal compiler error in handle_constant under very specific combination of conditions nils dot de dot reus at ivm dot vu dot nl
2009-01-14 20:44 ` [Bug java/38840] " nils dot de dot reus at ivm dot vu dot nl
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).