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

           Summary: volatile goes missing after inlining
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: pins...@gcc.gnu.org


Take:
volatile int t;
static inline int cvmx_atomic_get32(volatile int *ptr)
{
    return *ptr;
}
void f(void)
{
  while (!cvmx_atomic_get32(&t))
    ;
}

Nothing fancy but after inlining, we have:
  D.2699_5 = t;
Which is wrong as t is volatile

Reply via email to