(C++) mangling vector types

2009-11-12 Thread Jason Merrill
The G++ mangling of SIMD vector types (SSE, Altivec, etc.) is fundamentally broken as it doesn't currently encode the size of the vector, only the element type. So overloading of different size vectors fails. It seems when I implemented this I was modeling the Altivec __vector qualifier, whic

Re: (C++) mangling vector types

2009-11-12 Thread Ulrich Drepper
On 11/12/2009 07:24 AM, Jason Merrill wrote: c) Use -fabi-version=2.1. I'd favor this if you can emit aliases with the old names wherever this is possible and currently done. -- ➧ Ulrich Drepper ➧ Red Hat, Inc. ➧ 444 Castro St ➧ Mountain View, CA ❖

Re: (C++) mangling vector types

2009-11-12 Thread Richard Henderson
On 11/12/2009 07:24 AM, Jason Merrill wrote: 1) Leave the current mangling as is 2) Leave the current mangling as is for the most common vector size on a target (SSE, Altivec) and use the new mangling for other vector sizes. 3) Switch to the new mangling I vote for 2. a) Add the vector change

Re: (C++) mangling vector types

2009-11-12 Thread Daniel Jacobowitz
On Thu, Nov 12, 2009 at 08:10:13AM -0800, Richard Henderson wrote: > On 11/12/2009 07:24 AM, Jason Merrill wrote: > >1) Leave the current mangling as is > >2) Leave the current mangling as is for the most common vector size on a > >target (SSE, Altivec) and use the new mangling for other vector siz

Re: (C++) mangling vector types

2009-11-12 Thread Jason Merrill
On 11/12/2009 11:14 AM, Ulrich Drepper wrote: On 11/12/2009 07:24 AM, Jason Merrill wrote: c) Use -fabi-version=2.1. I'd favor this if you can emit aliases with the old names wherever this is possible and currently done. I suppose if we unconditionally use the new mangling and emit a weak a

Re: (C++) mangling vector types

2009-11-12 Thread Ulrich Drepper
On 11/12/2009 08:35 AM, Jason Merrill wrote: I'd favor this if you can emit aliases with the old names wherever this is possible and currently done. I suppose if we unconditionally use the new mangling and emit a weak alias with the old mangling, old external references will resolve to somthing

Re: (C++) mangling vector types

2009-11-12 Thread Joseph S. Myers
On Thu, 12 Nov 2009, Daniel Jacobowitz wrote: > On Thu, Nov 12, 2009 at 08:10:13AM -0800, Richard Henderson wrote: > > On 11/12/2009 07:24 AM, Jason Merrill wrote: > > >1) Leave the current mangling as is > > >2) Leave the current mangling as is for the most common vector size on a > > >target (SS

Re: (C++) mangling vector types

2009-11-12 Thread Jason Merrill
On 11/12/2009 11:50 AM, Ulrich Drepper wrote: On 11/12/2009 08:35 AM, Jason Merrill wrote: I'd favor this if you can emit aliases with the old names wherever this is possible and currently done. I suppose if we unconditionally use the new mangling and emit a weak alias with the old mangling, o

Re: (C++) mangling vector types

2009-11-12 Thread Mark Mitchell
Richard Henderson wrote: > On 11/12/2009 07:24 AM, Jason Merrill wrote: >> 1) Leave the current mangling as is >> 2) Leave the current mangling as is for the most common vector size on a >> target (SSE, Altivec) and use the new mangling for other vector sizes. >> 3) Switch to the new mangling > >

Re: (C++) mangling vector types

2009-11-12 Thread Jason Merrill
On 11/12/2009 01:18 PM, Mark Mitchell wrote: b) Take over -fabi-version=3 and bump the template arg change to v4. I'm not sure what "take over" means, but I think this change should be in v4. People might be using v3, and we shouldn't break their world. Introducing 2.1, or a separate flag, see

Re: (C++) mangling vector types

2009-11-12 Thread Dave Korn
Jason Merrill wrote: > On 11/12/2009 11:50 AM, Ulrich Drepper wrote: >> On 11/12/2009 08:35 AM, Jason Merrill wrote: I'd favor this if you can emit aliases with the old names wherever this is possible and currently done. >>> >>> I suppose if we unconditionally use the new mangling and emi

Re: (C++) mangling vector types

2009-11-12 Thread Mark Mitchell
Jason Merrill wrote: > There is a difference from v3, which is just a correction to match the > ABI document; it doesn't prevent us from implementing the full language, > which is why we never bumped the default. So I would like to be able to > make the vector change without also making the templ

Re: (C++) mangling vector types

2009-11-12 Thread Jason Merrill
On 11/12/2009 04:32 PM, Mark Mitchell wrote: I understand the argument, but it sounds overly complicated. Or else not complicated enough. If we no longer think that a linear progression of ABI versions is sufficient, then we should have switches for picking your point in the multi-dimensional s

Re: (C++) mangling vector types

2009-11-12 Thread Mark Mitchell
Jason Merrill wrote: > I think that a linear progression is sufficient, but I want an > additional point between 2 and 3 since 2 is the current default and 3 > already has meaning. Thus the 2.1 suggestion. But, there's no longer a total ordering on ABIs; 3 isn't "bigger than" 2.1 anymore. (Pres

Re: (C++) mangling vector types

2009-11-12 Thread Jason Merrill
On 11/12/2009 04:48 PM, Mark Mitchell wrote: So, do you consider ABIv3 there only as a theoretical conformance option? In other words, not something we're going to make the default in any forseeable future? (Those aren't meant to be rhetorical questions -- I'm just asking.) That has been my t

Re: (C++) mangling vector types

2009-11-12 Thread Mark Mitchell
Jason Merrill wrote: >> So, do you consider ABIv3 there only as a theoretical conformance >> option? In other words, not something we're going to make the default >> in any forseeable future? (Those aren't meant to be rhetorical >> questions -- I'm just asking.) > > That has been my thinking, b

Re: (C++) mangling vector types

2009-11-12 Thread Jason Merrill
On 11/12/2009 05:19 PM, Mark Mitchell wrote: So, I still tend to think that the best thing is to put the vector stuff into v4, and switch that on when we update libstdc++. I think your suggest is coherent and well-reasoned, but it seems like a lot of complexity to deal with a template corner cas

Re: (C++) mangling vector types

2009-11-12 Thread Mark Mitchell
Jason Merrill wrote: > It isn't such a corner case, unfortunately; any code that tries to > overload on multiple vector sizes (i.e. MMX and SSE vectors) will break. > See bug 12909 and its duplicates. This is becoming more of a problem > with the advent of the Intel AVX extension. This still se

Re: (C++) mangling vector types

2009-11-13 Thread Gabriel Dos Reis
On Thu, Nov 12, 2009 at 5:57 PM, Mark Mitchell wrote: > Jason Merrill wrote: > >> It isn't such a corner case, unfortunately; any code that tries to >> overload on multiple vector sizes (i.e. MMX and SSE vectors) will break. >>  See bug 12909 and its duplicates.  This is becoming more of a problem

Re: (C++) mangling vector types

2009-11-13 Thread Mark Mitchell
Gabriel Dos Reis wrote: >> This still seems a lot of complexity to me, and I still think inserting >> a new version between 2 and 3 is odd. If we need the complexity, I >> think we have to introduce a new orthogonal option for vector mangling, >> independent of the ABI version, but implied by ABI