summaryrefslogtreecommitdiff
path: root/include/llvm/MC/MCLabel.h
diff options
context:
space:
mode:
authorKevin Enderby <enderby@apple.com>2010-05-17 23:08:19 +0000
committerKevin Enderby <enderby@apple.com>2010-05-17 23:08:19 +0000
commitebe7fcd041e1e9c3a0c535b26d8cdb45805bbeb8 (patch)
tree24b43a97e9c13fffbfa6bc0cbb970686a513694b /include/llvm/MC/MCLabel.h
parentc6177a4531a5d7e2207a3184cc8a4f1792073a7d (diff)
downloadllvm-ebe7fcd041e1e9c3a0c535b26d8cdb45805bbeb8.tar.gz
llvm-ebe7fcd041e1e9c3a0c535b26d8cdb45805bbeb8.tar.bz2
llvm-ebe7fcd041e1e9c3a0c535b26d8cdb45805bbeb8.tar.xz
Added support in MC for Directional Local Labels.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103989 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/MC/MCLabel.h')
-rw-r--r--include/llvm/MC/MCLabel.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/include/llvm/MC/MCLabel.h b/include/llvm/MC/MCLabel.h
new file mode 100644
index 0000000000..727520d4af
--- /dev/null
+++ b/include/llvm/MC/MCLabel.h
@@ -0,0 +1,56 @@
+//===- MCLabel.h - Machine Code Directional Local Labels --------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file contains the declaration of the MCLabel class.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_MC_MCLABEL_H
+#define LLVM_MC_MCLABEL_H
+
+namespace llvm {
+ class MCContext;
+ class raw_ostream;
+
+ /// MCLabel - Instances of this class represent a label name in the MC file,
+ /// and MCLabel are created and unique'd by the MCContext class. MCLabel
+ /// should only be constructed for valid instances in the object file.
+ class MCLabel {
+ // Instance - the instance number of this Directional Local Label
+ unsigned Instance;
+
+ private: // MCContext creates and uniques these.
+ friend class MCContext;
+ MCLabel(unsigned instance)
+ : Instance(instance) {}
+
+ MCLabel(const MCLabel&); // DO NOT IMPLEMENT
+ void operator=(const MCLabel&); // DO NOT IMPLEMENT
+ public:
+ /// getInstance - Get the current instance of this Directional Local Label.
+ unsigned getInstance() const { return Instance; }
+
+ /// incInstance - Increment the current instance of this Directional Local
+ /// Label.
+ unsigned incInstance() { return ++Instance; }
+
+ /// print - Print the value to the stream \arg OS.
+ void print(raw_ostream &OS) const;
+
+ /// dump - Print the value to stderr.
+ void dump() const;
+ };
+
+ inline raw_ostream &operator<<(raw_ostream &OS, const MCLabel &Label) {
+ Label.print(OS);
+ return OS;
+ }
+} // end namespace llvm
+
+#endif