diff options
Diffstat (limited to 'llvm/lib/Target/AArch64/AArch64CompressJumpTables.cpp')
-rw-r--r-- | llvm/lib/Target/AArch64/AArch64CompressJumpTables.cpp | 13 |
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); } } |