Record whether the weights on out-edges from a MBB are normalized.
[oota-llvm.git] / include / llvm / CodeGen / DwarfStringPoolEntry.h
1 //===- llvm/CodeGen/DwarfStringPoolEntry.h - String pool entry --*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 #ifndef LLVM_CODEGEN_DWARFSTRINGPOOLENTRY_H
11 #define LLVM_CODEGEN_DWARFSTRINGPOOLENTRY_H
12
13 #include "llvm/ADT/StringMap.h"
14
15 namespace llvm {
16
17 class MCSymbol;
18
19 /// Data for a string pool entry.
20 struct DwarfStringPoolEntry {
21   MCSymbol *Symbol;
22   unsigned Offset;
23   unsigned Index;
24 };
25
26 /// String pool entry reference.
27 struct DwarfStringPoolEntryRef {
28   const StringMapEntry<DwarfStringPoolEntry> *I = nullptr;
29
30 public:
31   DwarfStringPoolEntryRef() = default;
32   explicit DwarfStringPoolEntryRef(
33       const StringMapEntry<DwarfStringPoolEntry> &I)
34       : I(&I) {}
35
36   explicit operator bool() const { return I; }
37   MCSymbol *getSymbol() const {
38     assert(I->second.Symbol && "No symbol available!");
39     return I->second.Symbol;
40   }
41   unsigned getOffset() const { return I->second.Offset; }
42   unsigned getIndex() const { return I->second.Index; }
43   StringRef getString() const { return I->first(); }
44
45   bool operator==(const DwarfStringPoolEntryRef &X) const { return I == X.I; }
46   bool operator!=(const DwarfStringPoolEntryRef &X) const { return I != X.I; }
47 };
48
49 } // end namespace llvm
50
51 #endif