public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* libgcj/5641: Verifier ICE on reference to inherited method
@ 2002-02-09  2:06 ebb9
  0 siblings, 0 replies; only message in thread
From: ebb9 @ 2002-02-09  2:06 UTC (permalink / raw)
  To: gcc-gnats


>Number:         5641
>Category:       libgcj
>Synopsis:       Verifier ICE on reference to inherited method
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Sat Feb 09 02:06:00 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     Eric Blake
>Release:        unknown-1.0
>Organization:
>Environment:
cygwin
>Description:
>From the Classpath mailing list:
http://mail.gnu.org/pipermail/classpath/2002-February/001881.html

Note in verify-jikes.gcj that the verifier chokes like this:
java/net/Socket.java: In class `java.net.Socket':
java/net/Socket.java: In method `java.net.Socket.getLocalAddress()':
java/net/Socket.java:296: class 'java.net.SocketImpl' has no method named 'getOption' matching signature '(I)Ljava/lang/Object;'
java/net/Socket.java: In method `java.net.Socket.setTcpNoDelay(boolean)':
java/net/Socket.java:388: class 'java.net.SocketImpl' has no method named 'setOption' matching signature '(ILjava/lang/Object;)V'
java/net/Socket.java: In method `java.net.Socket.getTcpNoDelay()':
java/net/Socket.java:403: Internal compiler error in gen_lowpart, at emit-rtl.c:1183
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
>How-To-Repeat:
I think this simplification will show the same problem (but I'm on cygwin, and can't check this):

interface I
{
  void m();
}
abstract class C implements I {}
class Foo
{
  void Bar(C c)
  {
    c.m();
  }
  void blah(C c)
  {
    c.m();
  }
}
>Fix:
The verifier must track abstract methods inherited from interfaces.

Meanwhile, there are two workarounds in Java source code:
1) In class C, redeclare m:
abstract class C implements I
{
  public abstract void m();
}

2) In class Foo, change the method qualifier to a class which declares the method:
class Foo
{
  void Bar(C c)
  {
    ((I) c).m();
  }
  void blah(C c)
  {
    ((I) c).m();
  }
}
>Release-Note:
>Audit-Trail:
>Unformatted:


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2002-02-09 10:06 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-02-09  2:06 libgcj/5641: Verifier ICE on reference to inherited method ebb9

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).