public inbox for gcc-prs@sourceware.org help / color / mirror / Atom feed
From: Peter Skvarenina <peter@frix.fri.utc.sk> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, Subject: Re: c++/3545: ICE passing a class object to inline assembly Date: Sat, 06 Apr 2002 08:06:00 -0000 [thread overview] Message-ID: <20020406160601.23515.qmail@sources.redhat.com> (raw) The following reply was made to PR c++/3545; it has been noted by GNATS. From: Peter Skvarenina <peter@frix.fri.utc.sk> To: rth@gcc.gnu.org, gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, nobody@gcc.gnu.org, peter@frix.fri.utc.sk, gcc-gnats@gcc.gnu.org Cc: Subject: Re: c++/3545: ICE passing a class object to inline assembly Date: Sat, 6 Apr 2002 17:58:13 +0200 (CEST) > 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 > After I posted this message, I realised my mistake and replaced all affected statements to access 'Cislo' member. But it has still remainded (ICE) up to version 3.0.1 of the GCC. But after GCC 3.0.3, it is now working ;') (I haven't tested it for GCC 3.0.2) This applies to original, non-reduced case with access to 'Cislo' instead of class instance. It was important, that there were inline operators +, -, etc. When I moved code from these operators to another inline functions and called them from those operators, ICE haven't been issued. (Both foo and op were inline). But it leads to *very* ineffective code with gcc 3.0.0 ;( Thank you for all, these inline optimizations can greatly save time. Peter
next reply other threads:[~2002-04-06 16:06 UTC|newest] Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top 2002-04-06 8:06 Peter Skvarenina [this message] -- strict thread matches above, loose matches on Subject: below -- 2002-04-12 19:32 rodrigc 2002-04-04 4:07 rth
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20020406160601.23515.qmail@sources.redhat.com \ --to=peter@frix.fri.utc.sk \ --cc=gcc-prs@gcc.gnu.org \ --cc=nobody@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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).