craig.topper added inline comments.
================
Comment at: clang/test/SemaCXX/attr-riscv-rvv-vector-bits.cpp:12
+
+template<typename T> struct S { T var; };
+
----------------
erichkeane wrote:
> craig.topper wrote:
> > @erichkeane does this cover the dependent case or were you looking for
> > something else?
> >
> > Here are on the only mentions of template I see in SVE tests that use this
> > attribute.
> >
> > ```
> > clang/test$ ack template `ack arm_sve_vector -l`
> > CodeGenCXX/aarch64-mangle-sve-fixed-vectors.cpp
> > 37:template <typename T> struct S {};
> >
> > SemaCXX/attr-arm-sve-vector-bits.cpp
> > 16:template<typename T> struct S { T var; };
> > ```
> >
> > Here is the result for this patch
> >
> > ```
> > clang/test$ ack template `ack riscv_rvv_vector -l`
> > CodeGenCXX/riscv-mangle-rvv-fixed-vectors.cpp
> > 48:template <typename T> struct S {};
> >
> > SemaCXX/attr-riscv-rvv-vector-bits.cpp
> > 12:template<typename T> struct S { T var; };
> > ```
> Thats unfortunate, and I wish I'd thought of it at the time/been more active
> reviewing the SVE stuff then. Really what I'm looking for is:
>
> ```
> template<int N>
> struct Whatever {
> using Something = char __attribute((riscv_rvv_vector_bits(N)));
> };
>
> void Func(Whatever<5>::Something MyVar){}
>
> ```
That does not appear to work.
```
$ ./bin/clang test.cpp --target=riscv64 -march=rv64gcv -mrvv-vector-bits=zvl
test.cpp:3:41: error: 'riscv_rvv_vector_bits' attribute requires an integer
constant
using Something = char __attribute((riscv_rvv_vector_bits(N)));
```
It's not very useful as a template parameter. There's only one value that works
and that's whatever __RISCV_RVV_VLEN_BITS is set to.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D145088/new/
https://reviews.llvm.org/D145088
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits