struct T { const char *p; };
struct S { T a, b, c; unsigned d; };
void bar (const T &, const T &);

void
foo (S &s, T e)
{
  const char *a = e.p;
  const char *b = s.b.p;
  __asm__ volatile ("/* %0 %1 */" : : "rm" (a), "rm" (b));
  bar (e, s.b);
}

has PRE_MODIFY and PRE_INC in MEM operands of ASM_OPERANDS.  I can't see how
that can be right - there is no guarantee that the operand is used in the asm
at all, and even when it is used, it would have to be used in a load or store
with update insn.


-- 
           Summary: auto-inc-dec pushes PRE_MODIFY/PRE_INC into inline asm
                    operands
           Product: gcc
           Version: 4.6.0
            Status: UNCONFIRMED
          Keywords: wrong-code
          Severity: normal
          Priority: P3
         Component: middle-end
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: jakub at gcc dot gnu dot org
GCC target triplet: powerpc64-linux


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44492

Reply via email to