[lld] a0c01f0 - [lld-macho][nfc] Use alignToPowerOf2 instead of alignTo when possible

Jez Ng via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 11 14:14:00 PST 2023


Author: Jez Ng
Date: 2023-01-11T17:13:33-05:00
New Revision: a0c01f05cdbe4f099e2d10d3e19e89c8f248b3d6

URL: https://github.com/llvm/llvm-project/commit/a0c01f05cdbe4f099e2d10d3e19e89c8f248b3d6
DIFF: https://github.com/llvm/llvm-project/commit/a0c01f05cdbe4f099e2d10d3e19e89c8f248b3d6.diff

LOG: [lld-macho][nfc] Use alignToPowerOf2 instead of alignTo when possible

Skips the divide operation which is generally expensive. Not that it
matters in this diff, the code changed is not particularly hot, but just
for principle & consistency...

Reviewed By: #lld-macho, oontvoo, MaskRay

Differential Revision: https://reviews.llvm.org/D141461

Added: 
    

Modified: 
    lld/MachO/Writer.cpp

Removed: 
    


################################################################################
diff  --git a/lld/MachO/Writer.cpp b/lld/MachO/Writer.cpp
index 880d4290c4e8d..b88f99c920f67 100644
--- a/lld/MachO/Writer.cpp
+++ b/lld/MachO/Writer.cpp
@@ -133,8 +133,8 @@ class LCSubFramework final : public LoadCommand {
   LCSubFramework(StringRef umbrella) : umbrella(umbrella) {}
 
   uint32_t getSize() const override {
-    return alignTo(sizeof(sub_framework_command) + umbrella.size() + 1,
-                   target->wordSize);
+    return alignToPowerOf2(sizeof(sub_framework_command) + umbrella.size() + 1,
+                           target->wordSize);
   }
 
   void writeTo(uint8_t *buf) const override {
@@ -388,7 +388,8 @@ class LCRPath final : public LoadCommand {
   explicit LCRPath(StringRef path) : path(path) {}
 
   uint32_t getSize() const override {
-    return alignTo(sizeof(rpath_command) + path.size() + 1, target->wordSize);
+    return alignToPowerOf2(sizeof(rpath_command) + path.size() + 1,
+                           target->wordSize);
   }
 
   void writeTo(uint8_t *buf) const override {
@@ -412,8 +413,8 @@ class LCDyldEnv final : public LoadCommand {
   explicit LCDyldEnv(StringRef name) : name(name) {}
 
   uint32_t getSize() const override {
-    return alignTo(sizeof(dyld_env_command) + name.size() + 1,
-                   target->wordSize);
+    return alignToPowerOf2(sizeof(dyld_env_command) + name.size() + 1,
+                           target->wordSize);
   }
 
   void writeTo(uint8_t *buf) const override {
@@ -1075,8 +1076,8 @@ void Writer::finalizeAddresses() {
     // `fileOff + fileSize == next segment fileOff`. So we call alignTo() before
     // (instead of after) computing fileSize to ensure that the segments are
     // contiguous. We handle addr / vmSize similarly for the same reason.
-    fileOff = alignTo(fileOff, pageSize);
-    addr = alignTo(addr, pageSize);
+    fileOff = alignToPowerOf2(fileOff, pageSize);
+    addr = alignToPowerOf2(addr, pageSize);
     seg->vmSize = addr - seg->addr;
     seg->fileSize = fileOff - seg->fileOff;
     seg->assignAddressesToStartEndSymbols();


        


More information about the llvm-commits mailing list