1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 04:02:41 +01:00

EmitAlignment() also emits optional fill value.

llvm-svn: 40500
This commit is contained in:
Evan Cheng 2007-07-25 23:35:07 +00:00
parent f34a0509c2
commit 4b747bb6a0
2 changed files with 10 additions and 4 deletions

View 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.

View 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";
}