[llvm-commits] CVS: llvm/include/llvm/CodeGen/AsmPrinter.h
Chris Lattner
lattner at cs.uiuc.edu
Mon Nov 21 00:13:01 PST 2005
Changes in directory llvm/include/llvm/CodeGen:
AsmPrinter.h updated: 1.18 -> 1.19
---
Log message:
Make the AsmPrinter keep track of the notion of a function number.
---
Diffs of the changes: (+19 -2)
AsmPrinter.h | 21 +++++++++++++++++++--
1 files changed, 19 insertions(+), 2 deletions(-)
Index: llvm/include/llvm/CodeGen/AsmPrinter.h
diff -u llvm/include/llvm/CodeGen/AsmPrinter.h:1.18 llvm/include/llvm/CodeGen/AsmPrinter.h:1.19
--- llvm/include/llvm/CodeGen/AsmPrinter.h:1.18 Mon Nov 21 01:51:06 2005
+++ llvm/include/llvm/CodeGen/AsmPrinter.h Mon Nov 21 02:12:47 2005
@@ -27,6 +27,14 @@
/// CurrentSection - The current section we are emitting to. This is
/// controlled and used by the SwitchSection method.
std::string CurrentSection;
+
+ /// FunctionNumber - This provides a unique ID for each function emitted in
+ /// this translation unit. It is autoincremented by SetupMachineFunction,
+ /// and can be accessed with getFunctionNumber() and
+ /// IncrementFunctionNumber().
+ ///
+ unsigned FunctionNumber;
+
protected:
/// Output stream on which we're printing assembly code.
///
@@ -112,7 +120,7 @@
bool AlignmentIsInBytes; // Defaults to true
AsmPrinter(std::ostream &o, TargetMachine &tm)
- : O(o), TM(tm),
+ : FunctionNumber(0), O(o), TM(tm),
CommentString("#"),
GlobalPrefix(""),
PrivateGlobalPrefix("."),
@@ -140,7 +148,16 @@
/// current section is, but does not emit a .section directive.
///
void SwitchSection(const char *NewSection, const GlobalValue *GV);
-
+
+ /// getFunctionNumber - Return a unique ID for the current function.
+ ///
+ unsigned getFunctionNumber() const { return FunctionNumber; }
+
+ /// IncrementFunctionNumber - Increase Function Number. AsmPrinters should
+ /// not normally call this, as the counter is automatically bumped by
+ /// SetupMachineFunction.
+ void IncrementFunctionNumber() { FunctionNumber++; }
+
/// doInitialization - Set up the AsmPrinter when we are working on a new
/// module. If your pass overrides this, it must make sure to explicitly
/// call this implementation.
More information about the llvm-commits
mailing list