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.

Reply via email to