[PATCH] D149006: [llvm][Support] Replace `%` operator with `&` in `Align::isAligned(...)`

Sviatoslav Osipov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sat Apr 22 13:52:00 PDT 2023

Stoorx created this revision.
Herald added a project: All.
Stoorx requested review of this revision.
Herald added a project: LLVM.

Since the function `Align::value()` ALWAYS returns power of 2,
it is easier to check reminder by conjunction with mask, which is `(Pow2Value - 1)`.

  rG LLVM Github Monorepo



Index: llvm/include/llvm/Support/Alignment.h
--- llvm/include/llvm/Support/Alignment.h
+++ llvm/include/llvm/Support/Alignment.h
@@ -143,7 +143,7 @@
 /// Checks that SizeInBytes is a multiple of the alignment.
 inline bool isAligned(Align Lhs, uint64_t SizeInBytes) {
-  return SizeInBytes % Lhs.value() == 0;
+  return !(SizeInBytes & (Lhs.value() - 1));
 /// Checks that Addr is a multiple of the alignment.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D149006.516103.patch
Type: text/x-patch
Size: 485 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230422/4ca0a07b/attachment.bin>

More information about the llvm-commits mailing list