Index: llvm/lib/MC/MCParser/AsmParser.cpp =================================================================== --- llvm/lib/MC/MCParser/AsmParser.cpp +++ llvm/lib/MC/MCParser/AsmParser.cpp @@ -3451,10 +3451,14 @@ // up to one. if (Alignment == 0) Alignment = 1; - if (!isPowerOf2_64(Alignment)) + if (!isPowerOf2_64(Alignment)) { ReturnVal |= Error(AlignmentLoc, "alignment must be a power of 2"); - if (!isUInt<32>(Alignment)) + Alignment = PowerOf2Floor(Alignment); + } + if (!isUInt<32>(Alignment)) { ReturnVal |= Error(AlignmentLoc, "alignment must be smaller than 2**32"); + Alignment = 1u << 31; + } } // Diagnose non-sensical max bytes to align. Index: llvm/test/Assembler/invalid-module-asm.ll =================================================================== --- /dev/null +++ llvm/test/Assembler/invalid-module-asm.ll @@ -0,0 +1,6 @@ +; RUN: not llc < %s -o /dev/null 2>%t.err +; RUN: FileCheck %s < %t.err + +; CHECK: alignment must be a power of 2 +module asm "\09.align\093" +