Code below will trigger an ICE: src/test.cpp:22: Internal compiler error in emit_move_insn, at expr.c:2769 struct X { short a,b,c,d; short e,f,g,h; // without these, I get "impossible register constraint" }; class I { public: virtual bool f( X& p1 ) const = 0; }; class C : public I { virtual bool f( X& p1 ) const; static void g( X& p1 ) asm( "g" ); }; bool C::f( X& p1 ) const { __asm__ __volatile__( "call g" : : "r"(p1) : "memory" ); return true; } Release: gcc version 3.2 20020927 (prerelease) under cygwin Environment: cygwin under Win2000 How-To-Repeat: gcc -c test.cpp
Fix: probably edit expr.c :)
From: Dara Hazeghi <dhazeghi@yahoo.com> To: gcc-gnats@gcc.gnu.org, j.vanbemmel@home.nl Cc: Subject: Re: inline-asm/9233: ICE for inline asm call to function taking a reference parameter Date: Fri, 9 May 2003 22:25:04 -0700 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit- trail&database=gcc&pr=9233 Hello, I can confirm that this bug is still present and 3.2.3, 3.3 branch and mainline (20030509) all ICE on the testcase. Dara
State-Changed-From-To: open->analyzed State-Changed-Why: Confirmed with current CVS.
Reconfirmed with gcc 3.3 branch and mainline (20030604).
Reconfirmed with current branch and mainline on i686-linux. This problem is not specific to cygwin, so changing target appropriately.
*** This bug has been marked as a duplicate of 8788 ***