[PATCH] D140222: [AArch64] Check 128-bit Sysreg Builtins

Tomas Matheson via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Dec 20 04:45:43 PST 2022


tmatheson accepted this revision.
tmatheson added a comment.
This revision is now accepted and ready to land.

Couple of nits, since you will be updating this anyway after dropping D140221 <https://reviews.llvm.org/D140221>, otherwise LGTM.



================
Comment at: clang/lib/Sema/SemaChecking.cpp:8297
              << Arg->getSourceRange();
   } else if (IsAArch64Builtin && Fields.size() == 1) {
+    // If this is a write ...
----------------
It might be more readable to outline this whole branch and remove the redundant "else".


================
Comment at: clang/lib/Sema/SemaChecking.cpp:8298
   } else if (IsAArch64Builtin && Fields.size() == 1) {
-    // If the register name is one of those that appear in the condition below
-    // and the special register builtin being used is one of the write builtins,
-    // then we require that the argument provided for writing to the register
-    // is an integer constant expression. This is because it will be lowered to
-    // an MSR (immediate) instruction, so we need to know the immediate at
-    // compile time.
+    // If this is a write ...
     if (TheCall->getNumArgs() != 2)
----------------
This comment style is a bit confusing; the actual code says if(NOT a write) return false; imo the code is readable enough without them.


================
Comment at: clang/lib/Sema/SemaChecking.cpp:8334-8340
+    if (MaxLimit)
+      return SemaBuiltinConstantArgRange(TheCall, 1, 0, MaxLimit.value());
+
+    // Otherwise, no checking is needed as we we lower to some kind of MSR
+    // (register) rather than an MSR (immediate).
+    return false;
   }
----------------
nit: stick to early return pattern



Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D140222/new/

https://reviews.llvm.org/D140222



More information about the cfe-commits mailing list