This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

(C++) mangling vector types


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, which doesn't generalize very well at all...

Clearly, we need to fix this, and the ABI committee has been settling on a new mangling.

The question is, how should we handle the transition?

Should the default behavior in 4.5 be:

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


And what flag should we use to control it? We're currently at -fabi-version=2. -fabi-version=3 currently changes the mangling of the address of a variable or function used as a template argument.

a) Add the vector change to the current ABI v3.
b) Take over -fabi-version=3 and bump the template arg change to v4.
c) Use -fabi-version=2.1.
d) Use a separate flag to control vector mangling.

Opinions?

Jason


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]