aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/llvm/CodeGen/AsmPrinter.h7
-rw-r--r--lib/CodeGen/AsmPrinter.cpp7
2 files changed, 10 insertions, 4 deletions
diff --git a/include/llvm/CodeGen/AsmPrinter.h b/include/llvm/CodeGen/AsmPrinter.h
index 954b9bcee1..b848276416 100644
--- a/include/llvm/CodeGen/AsmPrinter.h
+++ b/include/llvm/CodeGen/AsmPrinter.h
@@ -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.
diff --git a/lib/CodeGen/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter.cpp
index 586472c38e..7e07d84800 100644
--- a/lib/CodeGen/AsmPrinter.cpp
+++ b/lib/CodeGen/AsmPrinter.cpp
@@ -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";
}