c++/3545: ICE passing a class object to inline assembly
rth@gcc.gnu.org
rth@gcc.gnu.org
Thu Apr 4 04:10:00 GMT 2002
Old Synopsis: ICE in emit_move_insn, at expr.c:2724
New Synopsis: ICE passing a class object to inline assembly
State-Changed-From-To: open->analyzed
State-Changed-By: rth
State-Changed-When: Thu Apr 4 04:07:54 2002
State-Changed-Why:
ICE still happens with gcc 3.1 prelease.
A reduced test case is
class cCislo
{
public:
long Cislo;
cCislo () { Cislo = 0; }
cCislo (const cCislo &P) { Cislo = P.Cislo; }
cCislo (int A) { Cislo = A; }
};
void foo(cCislo A, cCislo B)
{
cCislo Sucet;
asm volatile ("AddL %2, %1"
: "=g" (Sucet)
: "0" (A), "q" (B)
: "cc");
}
The problem here is that the compiler Really does not want
to pass a class to an asm. The fix for this will involve
issuing an error for this mistake.
What you wanted is to pass "A.Cislo" to the asm, not "A".
Similarly for the other asm arguments.
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=3545
More information about the Gcc-bugs
mailing list