[clang] [Clang][AArch64]Refactor typespec handling in SveEmitter.cpp (PR #117717)

Sander de Smalen via cfe-commits cfe-commits at lists.llvm.org
Mon Dec 2 06:49:55 PST 2024


================
@@ -570,27 +579,35 @@ void SVEType::applyTypespec(StringRef TS) {
   for (char I : TS) {
     switch (I) {
     case 'Q':
+      assert(Kind == Invalid && "Invalid use of modifer!");
       Kind = Svcount;
       break;
     case 'P':
+      assert(Kind == Invalid && "Invalid use of modifer!");
       Kind = Predicate;
       break;
     case 'U':
+      assert(Kind == Invalid && "Invalid use of modifer!");
       Kind = UInt;
       break;
     case 'c':
+      Kind = isInvalid() ? SInt : Kind;
----------------
sdesmalen-arm wrote:

Sorry, for a second I must have forgotten that `Q` and `P` are also valid with `[csil]`. I think that even for `q`, `P` and `Q` should be valid modifiers. So just ignore this suggestion!

That said, `f`, `h`, `d` and `b` should require `Kind == Invalid`, as the typespec modifiers don't apply to them, so an assert for those would be useful.

https://github.com/llvm/llvm-project/pull/117717


More information about the cfe-commits mailing list