From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14446 invoked by alias); 7 Jan 2015 14:37:46 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 14408 invoked by uid 48); 7 Jan 2015 14:37:40 -0000 From: "belagod at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/56025] ARM NEON polynomial types have broken overload resolution Date: Wed, 07 Jan 2015 14:37:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: target X-Bugzilla-Version: 4.8.0 X-Bugzilla-Keywords: ABI X-Bugzilla-Severity: normal X-Bugzilla-Who: belagod at gcc dot gnu.org X-Bugzilla-Status: REOPENED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2015-01/txt/msg00376.txt.bz2 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56025 --- Comment #5 from Tejas Belagod --- ACLE states that "poly8_t and poly16_t are defined as unsigned integer types. It is unspecified whether these are the same type as uint8_t and uint16_t for overloading and mangling purposes" Presently, poly types are implemented as distinct types in the ARM backend with default mangling which is wrong. This obviates the need for their own mangling scheme in the ABI which it does not specify. Therefore, it cannot be modelled as a distinct type until the ABI says that it is a distinct type. Also, poly8_t and poly16_t are presently modelled as signed types which is incorrect. When we change this to an unsigned type, it will be incompatible with legacy anyway wrt mangling among other things. So, till the time the ABI decides to make poly types as distinct types, we can model it as an unsigned type or as another type name for uint8_t or uint16_t. This will disallow overloading of uint8_t and poly8_t for eg and break current overloads, but correcting poly to unsigned type is a greater good. This is also future-proof because if the ABI decides to model poly and unsigned types as distinct types, previously disallowed overloading will then be allowed which isn't breaking legacy in the broad sense.