EmitAlignment() also emits optional fill value.
authorEvan Cheng <evan.cheng@apple.com>
Wed, 25 Jul 2007 23:35:07 +0000 (23:35 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Wed, 25 Jul 2007 23:35:07 +0000 (23:35 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40500 91177308-0d34-0410-b5e6-96231b3b80d8

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

index 954b9bcee1f8021625454357614cdda6abed6279..b848276416fa14995b53e97bc90a76e4b9d08175 100644 (file)
@@ -251,7 +251,9 @@ namespace llvm {
     /// an explicit alignment requested, it will unconditionally override the
     /// alignment request.  However, if ForcedAlignBits is specified, this value
     /// has final say: the ultimate alignment will be the max of ForcedAlignBits
-    /// and the alignment computed with NumBits and the global.
+    /// and the alignment computed with NumBits and the global. If UseFillExpr
+    /// is true, it also emits an optional second value FillValue which the
+    /// assembler uses to fill gaps to match alignment.
     ///
     /// The algorithm is:
     ///     Align = NumBits;
@@ -259,7 +261,8 @@ namespace llvm {
     ///     Align = std::max(Align, ForcedAlignBits);
     ///
     void EmitAlignment(unsigned NumBits, const GlobalValue *GV = 0,
-                       unsigned ForcedAlignBits = 0) const;
+                       unsigned ForcedAlignBits = 0, bool UseFillExpr = false,
+                       unsigned FillValue = 0) const;
 
   protected:
     /// EmitZeros - Emit a block of zeros.
index 586472c38ef9b17f2021b7c36a7bc797a43eef7e..7e07d8480088f9df065970d473e47bb9954ceeb0 100644 (file)
@@ -621,14 +621,17 @@ void AsmPrinter::EmitString(const std::string &String) const {
 //     Align = std::max(Align, ForcedAlignBits);
 //
 void AsmPrinter::EmitAlignment(unsigned NumBits, const GlobalValue *GV,
-                               unsigned ForcedAlignBits) const {
+                               unsigned ForcedAlignBits, bool UseFillExpr,
+                               unsigned FillValue) const {
   if (GV && GV->getAlignment())
     NumBits = Log2_32(GV->getAlignment());
   NumBits = std::max(NumBits, ForcedAlignBits);
   
   if (NumBits == 0) return;   // No need to emit alignment.
   if (TAI->getAlignmentIsInBytes()) NumBits = 1 << NumBits;
-  O << TAI->getAlignDirective() << NumBits << "\n";
+  O << TAI->getAlignDirective() << NumBits;
+  if (UseFillExpr) O << ",0x" << std::hex << FillValue << std::dec;
+  O << "\n";
 }