jhuber6 wrote: > I'm not super thrilled about NOT having to introduce a type name, I'm not > looking forward to the exciting world of `void foo(int > __attribute__((ext_vector_type(4))) x)` replacing `void foo(int4 x)`.
This makes introducing a type name easier because you can use `using` with templates. But I really don't think that it makes sense to restrict this to `only` typedef, it's even listed as a FIXME in the original patch. > I am extremely not at ease with flipping this to be a C++ attribute. Back in > the dawn of time, C++ attributes were meant to be non-semantic / removable > with no effect. This has kindof become muddled throughout the years, and > we're probably moving away from that, and yes you have namespaced it, but I'd > like such things to not be super cute and to remain clearly double prefix > scary things. I think https://github.com/llvm/llvm-project/commit/301eb6b68f30074ee3a90e2dfbd11dfd87076323 tried to solve some of those issues. A lot of type / expression level attributes are expected to be droppable, but we have tons of existing ones that definitely aren't. E.g. address spaces and the fifty different vector types for each target. I could force it to be double prefixed, but this really still should be a type level attribute, since it maps 1-to-1 with the LLVM vector type. I'd greatly prefer not to arbitrarily restrict it though, since it would be a major outlier. https://github.com/llvm/llvm-project/pull/130177 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits