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