summaryrefslogtreecommitdiff
path: root/llvm/lib/Target/AArch64/AArch64CompressJumpTables.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Target/AArch64/AArch64CompressJumpTables.cpp')
-rw-r--r--llvm/lib/Target/AArch64/AArch64CompressJumpTables.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64CompressJumpTables.cpp b/llvm/lib/Target/AArch64/AArch64CompressJumpTables.cpp
index 48dab79b32d3a..2592387059652 100644
--- a/llvm/lib/Target/AArch64/AArch64CompressJumpTables.cpp
+++ b/llvm/lib/Target/AArch64/AArch64CompressJumpTables.cpp
@@ -20,6 +20,7 @@
#include "llvm/CodeGen/TargetInstrInfo.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/MC/MCContext.h"
+#include "llvm/Support/Alignment.h"
#include "llvm/Support/Debug.h"
using namespace llvm;
@@ -74,10 +75,16 @@ void AArch64CompressJumpTables::scanFunction() {
BlockInfo.clear();
BlockInfo.resize(MF->getNumBlockIDs());
- int Offset = 0;
+ unsigned Offset = 0;
for (MachineBasicBlock &MBB : *MF) {
- BlockInfo[MBB.getNumber()] = Offset;
- Offset += computeBlockSize(MBB);
+ const Align Alignment = MBB.getAlignment();
+ unsigned AlignedOffset;
+ if (Alignment == Align::None())
+ AlignedOffset = Offset;
+ else
+ AlignedOffset = alignTo(Offset, Alignment);
+ BlockInfo[MBB.getNumber()] = AlignedOffset;
+ Offset = AlignedOffset + computeBlockSize(MBB);
}
}