llvm.org GIT mirror llvm / 45111d1
move the mangler into libtarget from vmcore. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93664 91177308-0d34-0410-b5e6-96231b3b80d8 Chris Lattner 10 years ago
16 changed file(s) with 207 addition(s) and 208 deletion(s). Raw diff Collapse all Expand all
+0
-87
include/llvm/Support/Mangler.h less more
None //===-- llvm/Support/Mangler.h - Self-contained name mangler ----*- C++ -*-===//
1 //
2 // The LLVM Compiler Infrastructure
3 //
4 // This file is distributed under the University of Illinois Open Source
5 // License. See LICENSE.TXT for details.
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // Unified name mangler for various backends.
10 //
11 //===----------------------------------------------------------------------===//
12
13 #ifndef LLVM_SUPPORT_MANGLER_H
14 #define LLVM_SUPPORT_MANGLER_H
15
16 #include "llvm/ADT/DenseMap.h"
17 #include "llvm/ADT/SmallPtrSet.h"
18 #include
19
20 namespace llvm {
21 class Twine;
22 class Type;
23 class Module;
24 class Value;
25 class GlobalValue;
26 template class SmallVectorImpl;
27
28 class Mangler {
29 public:
30 enum ManglerPrefixTy {
31 Default, ///< Emit default string before each symbol.
32 Private, ///< Emit "private" prefix before each symbol.
33 LinkerPrivate ///< Emit "linker private" prefix before each symbol.
34 };
35
36 private:
37 /// Prefix - This string is added to each symbol that is emitted, unless the
38 /// symbol is marked as not needing this prefix.
39 const char *Prefix;
40
41 /// PrivatePrefix - This string is emitted before each symbol with private
42 /// linkage.
43 const char *PrivatePrefix;
44
45 /// LinkerPrivatePrefix - This string is emitted before each symbol with
46 /// "linker_private" linkage.
47 const char *LinkerPrivatePrefix;
48
49 /// AnonGlobalIDs - We need to give global values the same name every time
50 /// they are mangled. This keeps track of the number we give to anonymous
51 /// ones.
52 ///
53 DenseMap AnonGlobalIDs;
54
55 /// NextAnonGlobalID - This simple counter is used to unique value names.
56 ///
57 unsigned NextAnonGlobalID;
58
59 public:
60 // Mangler ctor - if a prefix is specified, it will be prepended onto all
61 // symbols.
62 Mangler(Module &M, const char *Prefix = "", const char *privatePrefix = "",
63 const char *linkerPrivatePrefix = "");
64
65 /// getNameWithPrefix - Fill OutName with the name of the appropriate prefix
66 /// and the specified global variable's name. If the global variable doesn't
67 /// have a name, this fills in a unique name for the global.
68 void getNameWithPrefix(SmallVectorImpl &OutName, const GlobalValue *GV,
69 bool isImplicitlyPrivate);
70
71 /// getNameWithPrefix - Fill OutName with the name of the appropriate prefix
72 /// and the specified name as the global variable name. GVName must not be
73 /// empty.
74 void getNameWithPrefix(SmallVectorImpl &OutName, const Twine &GVName,
75 ManglerPrefixTy PrefixTy = Mangler::Default);
76
77 /// getNameWithPrefix - Return the name of the appropriate prefix
78 /// and the specified global variable's name. If the global variable doesn't
79 /// have a name, this fills in a unique name for the global.
80 std::string getNameWithPrefix(const GlobalValue *GV,
81 bool isImplicitlyPrivate = false);
82 };
83
84 } // End llvm namespace
85
86 #endif // LLVM_SUPPORT_MANGLER_H
0 //===-- llvm/Support/Mangler.h - Self-contained name mangler ----*- C++ -*-===//
1 //
2 // The LLVM Compiler Infrastructure
3 //
4 // This file is distributed under the University of Illinois Open Source
5 // License. See LICENSE.TXT for details.
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // Unified name mangler for various backends.
10 //
11 //===----------------------------------------------------------------------===//
12
13 #ifndef LLVM_SUPPORT_MANGLER_H
14 #define LLVM_SUPPORT_MANGLER_H
15
16 #include "llvm/ADT/DenseMap.h"
17 #include
18
19 namespace llvm {
20 class Twine;
21 class Type;
22 class Module;
23 class Value;
24 class GlobalValue;
25 template class SmallVectorImpl;
26
27 class Mangler {
28 public:
29 enum ManglerPrefixTy {
30 Default, ///< Emit default string before each symbol.
31 Private, ///< Emit "private" prefix before each symbol.
32 LinkerPrivate ///< Emit "linker private" prefix before each symbol.
33 };
34
35 private:
36 /// Prefix - This string is added to each symbol that is emitted, unless the
37 /// symbol is marked as not needing this prefix.
38 const char *Prefix;
39
40 /// PrivatePrefix - This string is emitted before each symbol with private
41 /// linkage.
42 const char *PrivatePrefix;
43
44 /// LinkerPrivatePrefix - This string is emitted before each symbol with
45 /// "linker_private" linkage.
46 const char *LinkerPrivatePrefix;
47
48 /// AnonGlobalIDs - We need to give global values the same name every time
49 /// they are mangled. This keeps track of the number we give to anonymous
50 /// ones.
51 ///
52 DenseMap AnonGlobalIDs;
53
54 /// NextAnonGlobalID - This simple counter is used to unique value names.
55 ///
56 unsigned NextAnonGlobalID;
57
58 public:
59 // Mangler ctor - if a prefix is specified, it will be prepended onto all
60 // symbols.
61 Mangler(Module &M, const char *Prefix = "", const char *privatePrefix = "",
62 const char *linkerPrivatePrefix = "");
63
64 /// getNameWithPrefix - Fill OutName with the name of the appropriate prefix
65 /// and the specified global variable's name. If the global variable doesn't
66 /// have a name, this fills in a unique name for the global.
67 void getNameWithPrefix(SmallVectorImpl &OutName, const GlobalValue *GV,
68 bool isImplicitlyPrivate);
69
70 /// getNameWithPrefix - Fill OutName with the name of the appropriate prefix
71 /// and the specified name as the global variable name. GVName must not be
72 /// empty.
73 void getNameWithPrefix(SmallVectorImpl &OutName, const Twine &GVName,
74 ManglerPrefixTy PrefixTy = Mangler::Default);
75
76 /// getNameWithPrefix - Return the name of the appropriate prefix
77 /// and the specified global variable's name. If the global variable doesn't
78 /// have a name, this fills in a unique name for the global.
79 std::string getNameWithPrefix(const GlobalValue *GV,
80 bool isImplicitlyPrivate = false);
81 };
82
83 } // End llvm namespace
84
85 #endif // LLVM_SUPPORT_MANGLER_H
1515 #include "llvm/DerivedTypes.h"
1616 #include "llvm/Constants.h"
1717 #include "llvm/Module.h"
18 #include "llvm/CodeGen/DwarfWriter.h"
1819 #include "llvm/CodeGen/GCMetadataPrinter.h"
1920 #include "llvm/CodeGen/MachineConstantPool.h"
2021 #include "llvm/CodeGen/MachineFrameInfo.h"
2223 #include "llvm/CodeGen/MachineJumpTableInfo.h"
2324 #include "llvm/CodeGen/MachineLoopInfo.h"
2425 #include "llvm/CodeGen/MachineModuleInfo.h"
25 #include "llvm/CodeGen/DwarfWriter.h"
2626 #include "llvm/Analysis/DebugInfo.h"
2727 #include "llvm/MC/MCContext.h"
2828 #include "llvm/MC/MCInst.h"
3232 #include "llvm/Support/CommandLine.h"
3333 #include "llvm/Support/ErrorHandling.h"
3434 #include "llvm/Support/FormattedStream.h"
35 #include "llvm/Support/Mangler.h"
3635 #include "llvm/MC/MCAsmInfo.h"
36 #include "llvm/Target/Mangler.h"
3737 #include "llvm/Target/TargetData.h"
3838 #include "llvm/Target/TargetInstrInfo.h"
3939 #include "llvm/Target/TargetLowering.h"
1717 #include "llvm/MC/MCSection.h"
1818 #include "llvm/MC/MCStreamer.h"
1919 #include "llvm/MC/MCAsmInfo.h"
20 #include "llvm/Target/Mangler.h"
2021 #include "llvm/Target/TargetData.h"
2122 #include "llvm/Target/TargetFrameInfo.h"
2223 #include "llvm/Target/TargetLoweringObjectFile.h"
2425 #include "llvm/ADT/StringExtras.h"
2526 #include "llvm/Support/Debug.h"
2627 #include "llvm/Support/ErrorHandling.h"
27 #include "llvm/Support/Mangler.h"
2828 #include "llvm/Support/Timer.h"
2929 #include "llvm/System/Path.h"
3030 using namespace llvm;
2222 #include "llvm/MC/MCSection.h"
2323 #include "llvm/MC/MCStreamer.h"
2424 #include "llvm/MC/MCSymbol.h"
25 #include "llvm/Target/Mangler.h"
2526 #include "llvm/Target/TargetData.h"
2627 #include "llvm/Target/TargetFrameInfo.h"
2728 #include "llvm/Target/TargetLoweringObjectFile.h"
2829 #include "llvm/Target/TargetOptions.h"
2930 #include "llvm/Target/TargetRegisterInfo.h"
3031 #include "llvm/Support/Dwarf.h"
31 #include "llvm/Support/Mangler.h"
3232 #include "llvm/Support/Timer.h"
3333 #include "llvm/Support/raw_ostream.h"
3434 #include "llvm/ADT/SmallString.h"
4444 #include "llvm/MC/MCContext.h"
4545 #include "llvm/MC/MCSectionELF.h"
4646 #include "llvm/MC/MCAsmInfo.h"
47 #include "llvm/Target/Mangler.h"
4748 #include "llvm/Target/TargetData.h"
4849 #include "llvm/Target/TargetELFWriterInfo.h"
4950 #include "llvm/Target/TargetLowering.h"
5152 #include "llvm/Target/TargetMachine.h"
5253 #include "llvm/Support/Debug.h"
5354 #include "llvm/Support/ErrorHandling.h"
54 #include "llvm/Support/Mangler.h"
5555 #include "llvm/Support/raw_ostream.h"
5656 #include "llvm/ADT/SmallString.h"
5757 using namespace llvm;
3232 #include "llvm/MC/MCStreamer.h"
3333 #include "llvm/Support/ErrorHandling.h"
3434 #include "llvm/Support/FormattedStream.h"
35 #include "llvm/Support/Mangler.h"
3635 #include "llvm/Support/raw_ostream.h"
36 #include "llvm/Target/Mangler.h"
3737 #include "llvm/Target/TargetData.h"
3838 #include "llvm/Target/TargetLowering.h"
3939 #include "llvm/Target/TargetLoweringObjectFile.h"
3232 #include "llvm/Analysis/ValueTracking.h"
3333 #include "llvm/CodeGen/Passes.h"
3434 #include "llvm/CodeGen/IntrinsicLowering.h"
35 #include "llvm/Target/Mangler.h"
3536 #include "llvm/Transforms/Scalar.h"
3637 #include "llvm/MC/MCAsmInfo.h"
3738 #include "llvm/MC/MCSymbol.h"
4344 #include "llvm/Support/FormattedStream.h"
4445 #include "llvm/Support/GetElementPtrTypeIterator.h"
4546 #include "llvm/Support/InstVisitor.h"
46 #include "llvm/Support/Mangler.h"
4747 #include "llvm/Support/MathExtras.h"
4848 #include "llvm/System/Host.h"
4949 #include "llvm/Config/config.h"
0 //===-- Mangler.cpp - Self-contained c/asm llvm name mangler --------------===//
1 //
2 // The LLVM Compiler Infrastructure
3 //
4 // This file is distributed under the University of Illinois Open Source
5 // License. See LICENSE.TXT for details.
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // Unified name mangler for assembly backends.
10 //
11 //===----------------------------------------------------------------------===//
12
13 #include "llvm/Target/Mangler.h"
14 #include "llvm/GlobalValue.h"
15 #include "llvm/ADT/SmallString.h"
16 #include "llvm/ADT/Twine.h"
17 #include "llvm/Support/raw_ostream.h"
18 using namespace llvm;
19
20 /// getNameWithPrefix - Fill OutName with the name of the appropriate prefix
21 /// and the specified name as the global variable name. GVName must not be
22 /// empty.
23 void Mangler::getNameWithPrefix(SmallVectorImpl &OutName,
24 const Twine &GVName, ManglerPrefixTy PrefixTy) {
25 SmallString<256> TmpData;
26 StringRef Name = GVName.toStringRef(TmpData);
27 assert(!Name.empty() && "getNameWithPrefix requires non-empty name");
28
29 // If the global name is not led with \1, add the appropriate prefixes.
30 if (Name[0] != '\1') {
31 if (PrefixTy == Mangler::Private)
32 OutName.append(PrivatePrefix, PrivatePrefix+strlen(PrivatePrefix));
33 else if (PrefixTy == Mangler::LinkerPrivate)
34 OutName.append(LinkerPrivatePrefix,
35 LinkerPrivatePrefix+strlen(LinkerPrivatePrefix));
36
37 if (Prefix[0] == 0)
38 ; // Common noop, no prefix.
39 else if (Prefix[1] == 0)
40 OutName.push_back(Prefix[0]); // Common, one character prefix.
41 else
42 OutName.append(Prefix, Prefix+strlen(Prefix)); // Arbitrary prefix.
43 } else {
44 Name = Name.substr(1);
45 }
46
47 OutName.append(Name.begin(), Name.end());
48 }
49
50
51 /// getNameWithPrefix - Fill OutName with the name of the appropriate prefix
52 /// and the specified global variable's name. If the global variable doesn't
53 /// have a name, this fills in a unique name for the global.
54 void Mangler::getNameWithPrefix(SmallVectorImpl &OutName,
55 const GlobalValue *GV,
56 bool isImplicitlyPrivate) {
57 // If this global has a name, handle it simply.
58 if (GV->hasName()) {
59 ManglerPrefixTy PrefixTy = Mangler::Default;
60 if (GV->hasPrivateLinkage() || isImplicitlyPrivate)
61 PrefixTy = Mangler::Private;
62 else if (GV->hasLinkerPrivateLinkage())
63 PrefixTy = Mangler::LinkerPrivate;
64
65 return getNameWithPrefix(OutName, GV->getName(), PrefixTy);
66 }
67
68 // If the global variable doesn't have a name, return a unique name for the
69 // global based on a numbering.
70
71 // Anonymous names always get prefixes.
72 if (GV->hasPrivateLinkage() || isImplicitlyPrivate)
73 OutName.append(PrivatePrefix, PrivatePrefix+strlen(PrivatePrefix));
74 else if (GV->hasLinkerPrivateLinkage())
75 OutName.append(LinkerPrivatePrefix,
76 LinkerPrivatePrefix+strlen(LinkerPrivatePrefix));;
77 OutName.append(Prefix, Prefix+strlen(Prefix));
78
79 // Get the ID for the global, assigning a new one if we haven't got one
80 // already.
81 unsigned &ID = AnonGlobalIDs[GV];
82 if (ID == 0) ID = NextAnonGlobalID++;
83
84 // Must mangle the global into a unique ID.
85 raw_svector_ostream(OutName) << "__unnamed_" << ID;
86 }
87
88 /// getNameWithPrefix - Fill OutName with the name of the appropriate prefix
89 /// and the specified global variable's name. If the global variable doesn't
90 /// have a name, this fills in a unique name for the global.
91 std::string Mangler::getNameWithPrefix(const GlobalValue *GV,
92 bool isImplicitlyPrivate) {
93 SmallString<64> Buf;
94 getNameWithPrefix(Buf, GV, isImplicitlyPrivate);
95 return std::string(Buf.begin(), Buf.end());
96 }
97
98
99 Mangler::Mangler(Module &M, const char *prefix, const char *privatePrefix,
100 const char *linkerPrivatePrefix)
101 : Prefix(prefix), PrivatePrefix(privatePrefix),
102 LinkerPrivatePrefix(linkerPrivatePrefix), NextAnonGlobalID(1) {
103 }
3535 #include "llvm/MC/MCSectionMachO.h"
3636 #include "llvm/MC/MCStreamer.h"
3737 #include "llvm/MC/MCSymbol.h"
38 #include "llvm/Target/Mangler.h"
3839 #include "llvm/Target/TargetLoweringObjectFile.h"
3940 #include "llvm/Target/TargetRegisterInfo.h"
4041 #include "llvm/Target/TargetInstrInfo.h"
4142 #include "llvm/Target/TargetOptions.h"
4243 #include "llvm/Target/TargetRegistry.h"
43 #include "llvm/Support/Mangler.h"
4444 #include "llvm/Support/MathExtras.h"
4545 #include "llvm/Support/CommandLine.h"
4646 #include "llvm/Support/Debug.h"
2121 #include "llvm/MC/MCSectionMachO.h"
2222 #include "llvm/MC/MCSectionELF.h"
2323 #include "llvm/MC/MCSymbol.h"
24 #include "llvm/Target/Mangler.h"
2425 #include "llvm/Target/TargetData.h"
2526 #include "llvm/Target/TargetMachine.h"
2627 #include "llvm/Target/TargetOptions.h"
2728 #include "llvm/Support/ErrorHandling.h"
28 #include "llvm/Support/Mangler.h"
2929 #include "llvm/Support/raw_ostream.h"
3030 #include "llvm/ADT/SmallString.h"
3131 #include "llvm/ADT/StringExtras.h"
299299 IsIndirect = false;
300300 IsPCRel = false;
301301
302 // FIXME: Use GetGlobalValueSymbol.
302303 SmallString<128> Name;
303304 Mang->getNameWithPrefix(Name, GV, false);
304305 return MCSymbolRefExpr::Create(Name.str(), getContext());
2020 #include "llvm/MC/MCExpr.h"
2121 #include "llvm/MC/MCInst.h"
2222 #include "llvm/MC/MCStreamer.h"
23 #include "llvm/Support/ErrorHandling.h"
23 #include "llvm/Target/Mangler.h"
2424 #include "llvm/Support/FormattedStream.h"
25 #include "llvm/Support/Mangler.h"
2625 #include "llvm/ADT/SmallString.h"
27 #include "llvm/Analysis/DebugInfo.h"
2826 using namespace llvm;
2927
3028
77 //===----------------------------------------------------------------------===//
88
99 #include "X86TargetObjectFile.h"
10 #include "llvm/ADT/SmallString.h"
11 #include "llvm/Support/Mangler.h"
10 #include "llvm/CodeGen/MachineModuleInfoImpls.h"
1211 #include "llvm/MC/MCContext.h"
1312 #include "llvm/MC/MCExpr.h"
14 #include "llvm/CodeGen/MachineModuleInfoImpls.h"
13 #include "llvm/Target/Mangler.h"
14 #include "llvm/ADT/SmallString.h"
1515 using namespace llvm;
1616
1717 const MCExpr *X8632_MachoTargetObjectFile::
2626 MachineModuleInfoMachO &MachOMMI =
2727 MMI->getObjFileInfo();
2828
29 // FIXME: Use GetSymbolWithGlobalValueBase.
2930 SmallString<128> Name;
3031 Mang->getNameWithPrefix(Name, GV, true);
3132 Name += "$non_lazy_ptr";
+0
-104
lib/VMCore/Mangler.cpp less more
None //===-- Mangler.cpp - Self-contained c/asm llvm name mangler --------------===//
1 //
2 // The LLVM Compiler Infrastructure
3 //
4 // This file is distributed under the University of Illinois Open Source
5 // License. See LICENSE.TXT for details.
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // Unified name mangler for assembly backends.
10 //
11 //===----------------------------------------------------------------------===//
12
13 #include "llvm/Support/Mangler.h"
14 #include "llvm/GlobalValue.h"
15 #include "llvm/ADT/SmallString.h"
16 #include "llvm/ADT/Twine.h"
17 #include "llvm/Support/raw_ostream.h"
18 using namespace llvm;
19
20 /// getNameWithPrefix - Fill OutName with the name of the appropriate prefix
21 /// and the specified name as the global variable name. GVName must not be
22 /// empty.
23 void Mangler::getNameWithPrefix(SmallVectorImpl &OutName,
24 const Twine &GVName, ManglerPrefixTy PrefixTy) {
25 SmallString<256> TmpData;
26 StringRef Name = GVName.toStringRef(TmpData);
27 assert(!Name.empty() && "getNameWithPrefix requires non-empty name");
28
29 // If the global name is not led with \1, add the appropriate prefixes.
30 if (Name[0] != '\1') {
31 if (PrefixTy == Mangler::Private)
32 OutName.append(PrivatePrefix, PrivatePrefix+strlen(PrivatePrefix));
33 else if (PrefixTy == Mangler::LinkerPrivate)
34 OutName.append(LinkerPrivatePrefix,
35 LinkerPrivatePrefix+strlen(LinkerPrivatePrefix));
36
37 if (Prefix[0] == 0)
38 ; // Common noop, no prefix.
39 else if (Prefix[1] == 0)
40 OutName.push_back(Prefix[0]); // Common, one character prefix.
41 else
42 OutName.append(Prefix, Prefix+strlen(Prefix)); // Arbitrary prefix.
43 } else {
44 Name = Name.substr(1);
45 }
46
47 OutName.append(Name.begin(), Name.end());
48 }
49
50
51 /// getNameWithPrefix - Fill OutName with the name of the appropriate prefix
52 /// and the specified global variable's name. If the global variable doesn't
53 /// have a name, this fills in a unique name for the global.
54 void Mangler::getNameWithPrefix(SmallVectorImpl &OutName,
55 const GlobalValue *GV,
56 bool isImplicitlyPrivate) {
57 // If this global has a name, handle it simply.
58 if (GV->hasName()) {
59 ManglerPrefixTy PrefixTy = Mangler::Default;
60 if (GV->hasPrivateLinkage() || isImplicitlyPrivate)
61 PrefixTy = Mangler::Private;
62 else if (GV->hasLinkerPrivateLinkage())
63 PrefixTy = Mangler::LinkerPrivate;
64
65 return getNameWithPrefix(OutName, GV->getName(), PrefixTy);
66 }
67
68 // If the global variable doesn't have a name, return a unique name for the
69 // global based on a numbering.
70
71 // Anonymous names always get prefixes.
72 if (GV->hasPrivateLinkage() || isImplicitlyPrivate)
73 OutName.append(PrivatePrefix, PrivatePrefix+strlen(PrivatePrefix));
74 else if (GV->hasLinkerPrivateLinkage())
75 OutName.append(LinkerPrivatePrefix,
76 LinkerPrivatePrefix+strlen(LinkerPrivatePrefix));;
77 OutName.append(Prefix, Prefix+strlen(Prefix));
78
79 // Get the ID for the global, assigning a new one if we haven't got one
80 // already.
81 unsigned &ID = AnonGlobalIDs[GV];
82 if (ID == 0) ID = NextAnonGlobalID++;
83
84 // Must mangle the global into a unique ID.
85 raw_svector_ostream(OutName) << "__unnamed_" << ID;
86 }
87
88 /// getNameWithPrefix - Fill OutName with the name of the appropriate prefix
89 /// and the specified global variable's name. If the global variable doesn't
90 /// have a name, this fills in a unique name for the global.
91 std::string Mangler::getNameWithPrefix(const GlobalValue *GV,
92 bool isImplicitlyPrivate) {
93 SmallString<64> Buf;
94 getNameWithPrefix(Buf, GV, isImplicitlyPrivate);
95 return std::string(Buf.begin(), Buf.end());
96 }
97
98
99 Mangler::Mangler(Module &M, const char *prefix, const char *privatePrefix,
100 const char *linkerPrivatePrefix)
101 : Prefix(prefix), PrivatePrefix(privatePrefix),
102 LinkerPrivatePrefix(linkerPrivatePrefix), NextAnonGlobalID(1) {
103 }
3131 #include "llvm/CodeGen/FileWriters.h"
3232 #include "llvm/Support/CommandLine.h"
3333 #include "llvm/Support/FormattedStream.h"
34 #include "llvm/Support/Mangler.h"
3534 #include "llvm/Support/MemoryBuffer.h"
3635 #include "llvm/Support/StandardPasses.h"
3736 #include "llvm/Support/SystemUtils.h"
3837 #include "llvm/System/Host.h"
3938 #include "llvm/System/Program.h"
4039 #include "llvm/System/Signals.h"
40 #include "llvm/Target/Mangler.h"
4141 #include "llvm/Target/SubtargetFeature.h"
4242 #include "llvm/Target/TargetOptions.h"
4343 #include "llvm/MC/MCAsmInfo.h"
2121 #include "llvm/ADT/Triple.h"
2222 #include "llvm/Bitcode/ReaderWriter.h"
2323 #include "llvm/Support/SystemUtils.h"
24 #include "llvm/Support/Mangler.h"
2524 #include "llvm/Support/MemoryBuffer.h"
2625 #include "llvm/Support/MathExtras.h"
2726 #include "llvm/System/Host.h"
2827 #include "llvm/System/Path.h"
2928 #include "llvm/System/Process.h"
29 #include "llvm/Target/Mangler.h"
3030 #include "llvm/Target/SubtargetFeature.h"
3131 #include "llvm/MC/MCAsmInfo.h"
3232 #include "llvm/Target/TargetMachine.h"