summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-08-17 19:14:29 +0000
committerChris Lattner <sabre@nondot.org>2004-08-17 19:14:29 +0000
commitbfddc2030a7e67b9e0c42276525d6932375ff261 (patch)
treeda76fcec614d09668443ec641fdda0e1a3ee757d /include
parentd2b0bb41f45c1d2381904221c780da8f750d2823 (diff)
downloadllvm-bfddc2030a7e67b9e0c42276525d6932375ff261.tar.gz
llvm-bfddc2030a7e67b9e0c42276525d6932375ff261.tar.bz2
llvm-bfddc2030a7e67b9e0c42276525d6932375ff261.tar.xz
Add support for alignment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15888 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/llvm/CodeGen/AsmPrinter.h23
1 files changed, 21 insertions, 2 deletions
diff --git a/include/llvm/CodeGen/AsmPrinter.h b/include/llvm/CodeGen/AsmPrinter.h
index b441ef5407..f21ed140b4 100644
--- a/include/llvm/CodeGen/AsmPrinter.h
+++ b/include/llvm/CodeGen/AsmPrinter.h
@@ -47,7 +47,7 @@ namespace llvm {
/// CommentChar - This indicates the comment character used by the
/// assembler.
- const char *CommentChar;
+ const char *CommentChar; // Defaults to "#"
/// GlobalPrefix - If this is set to a non-empty string, it is prepended
/// onto all global symbols. This is often used for "_" or ".".
@@ -71,6 +71,17 @@ namespace llvm {
const char *Data32bitsDirective; // Defaults to "\t.long\t"
const char *Data64bitsDirective; // Defaults to "\t.quad\t"
+ /// AlignDirective - The directive used to emit round up to an alignment
+ /// boundary.
+ ///
+ const char *AlignDirective; // Defaults to "\t.align\t"
+
+ /// AlignmentIsInBytes - If this is true (the default) then the asmprinter
+ /// emits ".align N" directives, where N is the number of bytes to align to.
+ /// Otherwise, it emits ".align log2(N)", e.g. 3 to align to an 8 byte
+ /// boundary.
+ bool AlignmentIsInBytes; // Defaults to true
+
AsmPrinter(std::ostream &o, TargetMachine &tm)
: O(o), TM(tm),
CommentChar("#"),
@@ -80,7 +91,10 @@ namespace llvm {
Data8bitsDirective("\t.byte\t"),
Data16bitsDirective("\t.short\t"),
Data32bitsDirective("\t.long\t"),
- Data64bitsDirective("\t.quad\t") { }
+ Data64bitsDirective("\t.quad\t"),
+ AlignDirective("\t.align\t"),
+ AlignmentIsInBytes(true) {
+ }
/// doInitialization - Set up the AsmPrinter when we are working on a new
/// module. If your pass overrides this, it must make sure to explicitly
@@ -95,6 +109,11 @@ namespace llvm {
/// is being processed from runOnMachineFunction.
void setupMachineFunction(MachineFunction &MF);
+ /// 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;
+
/// emitConstantValueOnly - Print out the specified constant, without a
/// storage class. Only constants of first-class type are allowed here.
void emitConstantValueOnly(const Constant *CV);