http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56025
Bug #: 56025 Summary: ARM NEON polynomial types have broken overload resolution Classification: Unclassified Product: gcc Version: 4.8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: tim.northo...@arm.com While investigating bug #56024, we discovered this problem in the same area. Essentially, GCC has semi-special builtin types to cover poly8_t and poly16_t defined in arm_neon.h. These types are used by G++ when calculating the overload resolution. The following two functions can both be defined with no issues in the front-end: #include <arm_neon.h> void foo(short s) {} void foo(__builtin_neon_poly16 s) {} However, in the resulting assembly they are both mangled as _Z3foos, which causes a conflict. This mangling area is likely to be affected by any change fixing 56024, so a sensible combined solution might be a good idea.