$ cat abi.cc #include <iostream> struct abi; void foo (abi &); $ gcc abi.cc abi.cc:3: error: variable or field ‘foo’ declared void abi.cc:3: error: expected primary-expression before ‘&’ token abi.cc:3: error: expected primary-expression before ‘)’ token
The problem is that <bits/atomic_word.h> on ia64 includes <cxxabi.h> which defines namespace abi. Before 4.2, ia64 has used the generic <bits/atomic_word.h>. -- Summary: [4.2/4.3 regression] Namespace pollution in c++ headers Product: gcc Version: 4.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: schwab at suse dot de GCC target triplet: ia64-*-* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30586