From: Chris Lattner Date: Mon, 14 Nov 2005 19:00:06 +0000 (+0000) Subject: Teach emitAlignment to handle explicit alignment requests by globals. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=a1ab72daadbdc5b499ce7e7e97c4b80efad46736;p=oota-llvm.git Teach emitAlignment to handle explicit alignment requests by globals. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24354 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/CodeGen/AsmPrinter.h b/include/llvm/CodeGen/AsmPrinter.h index e6b7fccd07a..1a207271031 100644 --- a/include/llvm/CodeGen/AsmPrinter.h +++ b/include/llvm/CodeGen/AsmPrinter.h @@ -137,8 +137,9 @@ namespace llvm { /// emitAlignment - Emit an alignment directive to the specified power of /// two boundary. For example, if you pass in 3 here, you will get an 8 - /// byte alignment. - void emitAlignment(unsigned NumBits) const; + /// byte alignment. If a global value is specified, and if that global has + /// an explicit alignment requested, it will override the alignment request. + void emitAlignment(unsigned NumBits, const GlobalValue *GV = 0) const; /// emitZeros - Emit a block of zeros. /// diff --git a/lib/CodeGen/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter.cpp index 452cc0583ed..a6028e43de8 100644 --- a/lib/CodeGen/AsmPrinter.cpp +++ b/lib/CodeGen/AsmPrinter.cpp @@ -35,7 +35,9 @@ void AsmPrinter::setupMachineFunction(MachineFunction &MF) { } // emitAlignment - Emit an alignment directive to the specified power of two. -void AsmPrinter::emitAlignment(unsigned NumBits) const { +void AsmPrinter::emitAlignment(unsigned NumBits, const GlobalValue *GV) const { + if (GV && GV->getAlignment()) + NumBits = Log2_32(GV->getAlignment()); if (NumBits == 0) return; // No need to emit alignment. if (AlignmentIsInBytes) NumBits = 1 << NumBits; O << AlignDirective << NumBits << "\n";