diff --git a/llvm/include/llvm/CodeGen/TargetLowering.h b/llvm/include/llvm/CodeGen/TargetLowering.h --- a/llvm/include/llvm/CodeGen/TargetLowering.h +++ b/llvm/include/llvm/CodeGen/TargetLowering.h @@ -2104,9 +2104,9 @@ TargetDAGCombineArray[NT >> 3] |= 1 << (NT&7); } - /// Set the target's minimum function alignment (in log2(bytes)) - void setMinFunctionLogAlignment(unsigned LogAlign) { - MinFunctionAlignment = llvm::Align(1ULL << LogAlign); + /// Set the target's minimum function alignment. + void setMinFunctionAlignment(llvm::Align Align) { + MinFunctionAlignment = Align; } /// Set the target's preferred function alignment. This should be set if diff --git a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp --- a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp +++ b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp @@ -640,7 +640,7 @@ EnableExtLdPromotion = true; // Set required alignment. - setMinFunctionLogAlignment(2); + setMinFunctionAlignment(llvm::Align(4)); // Set preferred alignments. setPrefFunctionLogAlignment(STI.getPrefFunctionLogAlignment()); setPrefLoopLogAlignment(STI.getPrefLoopLogAlignment()); diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp --- a/llvm/lib/Target/ARM/ARMISelLowering.cpp +++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp @@ -1421,7 +1421,8 @@ setPrefLoopLogAlignment(Subtarget->getPrefLoopLogAlignment()); - setMinFunctionLogAlignment(Subtarget->isThumb() ? 1 : 2); + setMinFunctionAlignment(Subtarget->isThumb() ? llvm::Align(2) + : llvm::Align(4)); if (Subtarget->isThumb() || Subtarget->isThumb2()) setTargetDAGCombine(ISD::ABS); diff --git a/llvm/lib/Target/BPF/BPFISelLowering.cpp b/llvm/lib/Target/BPF/BPFISelLowering.cpp --- a/llvm/lib/Target/BPF/BPFISelLowering.cpp +++ b/llvm/lib/Target/BPF/BPFISelLowering.cpp @@ -133,7 +133,7 @@ setBooleanContents(ZeroOrOneBooleanContent); // Function alignments (log2) - setMinFunctionLogAlignment(3); + setMinFunctionAlignment(llvm::Align(8)); setPrefFunctionLogAlignment(3); if (BPFExpandMemcpyInOrder) { diff --git a/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp b/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp --- a/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp +++ b/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp @@ -1237,7 +1237,7 @@ setPrefLoopLogAlignment(4); setPrefFunctionLogAlignment(4); - setMinFunctionLogAlignment(2); + setMinFunctionAlignment(llvm::Align(4)); setStackPointerRegisterToSaveRestore(HRI.getStackRegister()); setBooleanContents(TargetLoweringBase::UndefinedBooleanContent); setBooleanVectorContents(TargetLoweringBase::UndefinedBooleanContent); diff --git a/llvm/lib/Target/Lanai/LanaiISelLowering.cpp b/llvm/lib/Target/Lanai/LanaiISelLowering.cpp --- a/llvm/lib/Target/Lanai/LanaiISelLowering.cpp +++ b/llvm/lib/Target/Lanai/LanaiISelLowering.cpp @@ -145,7 +145,7 @@ setTargetDAGCombine(ISD::XOR); // Function alignments (log2) - setMinFunctionLogAlignment(2); + setMinFunctionAlignment(llvm::Align(4)); setPrefFunctionLogAlignment(2); setJumpIsExpensive(true); diff --git a/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp b/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp --- a/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp +++ b/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp @@ -327,7 +327,7 @@ setLibcallCallingConv(RTLIB::OGT_F64, CallingConv::MSP430_BUILTIN); // TODO: __mspabi_srall, __mspabi_srlll, __mspabi_sllll - setMinFunctionLogAlignment(1); + setMinFunctionAlignment(llvm::Align(2)); setPrefFunctionLogAlignment(1); } diff --git a/llvm/lib/Target/Mips/MipsISelLowering.cpp b/llvm/lib/Target/Mips/MipsISelLowering.cpp --- a/llvm/lib/Target/Mips/MipsISelLowering.cpp +++ b/llvm/lib/Target/Mips/MipsISelLowering.cpp @@ -518,7 +518,8 @@ setLibcallName(RTLIB::SRA_I128, nullptr); } - setMinFunctionLogAlignment(Subtarget.isGP64bit() ? 3 : 2); + setMinFunctionAlignment(Subtarget.isGP64bit() ? llvm::Align(8) + : llvm::Align(4)); // The arguments on the stack are defined in terms of 4-byte slots on O32 // and 8-byte slots on N32/N64. diff --git a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp --- a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp +++ b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp @@ -1180,7 +1180,7 @@ setJumpIsExpensive(); } - setMinFunctionLogAlignment(2); + setMinFunctionAlignment(llvm::Align(4)); if (Subtarget.isDarwin()) setPrefFunctionLogAlignment(4); diff --git a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp --- a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp +++ b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp @@ -198,9 +198,9 @@ setBooleanContents(ZeroOrOneBooleanContent); // Function alignments (log2). - unsigned FunctionAlignment = Subtarget.hasStdExtC() ? 1 : 2; - setMinFunctionLogAlignment(FunctionAlignment); - setPrefFunctionLogAlignment(FunctionAlignment); + const llvm::Align FunctionAlignment(Subtarget.hasStdExtC() ? 2 : 4); + setMinFunctionAlignment(FunctionAlignment); + setPrefFunctionLogAlignment(Log2(FunctionAlignment)); // Effectively disable jump table generation. setMinimumJumpTableEntries(INT_MAX); diff --git a/llvm/lib/Target/Sparc/SparcISelLowering.cpp b/llvm/lib/Target/Sparc/SparcISelLowering.cpp --- a/llvm/lib/Target/Sparc/SparcISelLowering.cpp +++ b/llvm/lib/Target/Sparc/SparcISelLowering.cpp @@ -1805,7 +1805,7 @@ setOperationAction(ISD::INTRINSIC_WO_CHAIN, MVT::Other, Custom); - setMinFunctionLogAlignment(2); + setMinFunctionAlignment(llvm::Align(4)); computeRegisterProperties(Subtarget->getRegisterInfo()); } diff --git a/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp b/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp --- a/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp +++ b/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp @@ -120,7 +120,7 @@ setBooleanVectorContents(ZeroOrNegativeOneBooleanContent); // Instructions are strings of 2-byte aligned 2-byte values. - setMinFunctionLogAlignment(2); + setMinFunctionAlignment(llvm::Align(4)); // For performance reasons we prefer 16-byte alignment. setPrefFunctionLogAlignment(4); diff --git a/llvm/lib/Target/XCore/XCoreISelLowering.cpp b/llvm/lib/Target/XCore/XCoreISelLowering.cpp --- a/llvm/lib/Target/XCore/XCoreISelLowering.cpp +++ b/llvm/lib/Target/XCore/XCoreISelLowering.cpp @@ -171,7 +171,7 @@ setTargetDAGCombine(ISD::INTRINSIC_VOID); setTargetDAGCombine(ISD::INTRINSIC_W_CHAIN); - setMinFunctionLogAlignment(1); + setMinFunctionAlignment(llvm::Align(2)); setPrefFunctionLogAlignment(2); }