Teach emitAlignment to handle explicit alignment requests by globals.
authorChris Lattner <sabre@nondot.org>
Mon, 14 Nov 2005 19:00:06 +0000 (19:00 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 14 Nov 2005 19:00:06 +0000 (19:00 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24354 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/AsmPrinter.h
lib/CodeGen/AsmPrinter.cpp

index e6b7fccd07a060084f6d809613e1fedae51c8081..1a207271031b7a0d576ca894f1a3fc82de10142e 100644 (file)
@@ -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.
     ///
index 452cc0583ed73469ab265179c7a7e8bebc4a77b1..a6028e43de89fb1ac01b840a359dd5525e37d521 100644 (file)
@@ -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";