https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56025
Tejas Belagod <belagod at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Resolution|FIXED |--- --- Comment #3 from Tejas Belagod <belagod at gcc dot gnu.org> --- (In reply to Tejas Belagod from comment #2) > (In reply to Tim Northover from comment #0) > > 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. > > This should now be fixed. Now mangled as _Z3foos and _Z3foo10__Poly16_t > respectively. > > .cpu generic+fp+simd > .file "gpp.cpp" > .text > .align 2 > .p2align 3,,7 > .global _Z3foos > .type _Z3foos, %function > _Z3foos: > .LFB3026: > .cfi_startproc > ret > .cfi_endproc > .LFE3026: > .size _Z3foos, .-_Z3foos > .align 2 > .p2align 3,,7 > .global _Z3foo10__Poly16_t > .type _Z3foo10__Poly16_t, %function > _Z3foo10__Poly16_t: > .LFB3027: > .cfi_startproc > ret > .cfi_endproc > .LFE3027: > .size _Z3foo10__Poly16_t, .-_Z3foo10__Poly16_t > .ident "GCC: (unknown) 5.0.0 20141229 (experimental)" Sorry, wrong target. Still doesn't seem to be fixed for aarch32.