OLD | NEW |
---|---|
1 //===- subzero/src/IceGlobalContext.cpp - Global context defs ---*- C++ -*-===// | 1 //===- subzero/src/IceGlobalContext.cpp - Global context defs ---*- C++ -*-===// |
2 // | 2 // |
3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 // | 9 // |
10 // This file defines aspects of the compilation that persist across | 10 // This file defines aspects of the compilation that persist across |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
87 TypePool<uint64_t, ConstantInteger> Integers; | 87 TypePool<uint64_t, ConstantInteger> Integers; |
88 TypePool<RelocatableTuple, ConstantRelocatable> Relocatables; | 88 TypePool<RelocatableTuple, ConstantRelocatable> Relocatables; |
89 }; | 89 }; |
90 | 90 |
91 GlobalContext::GlobalContext(llvm::raw_ostream *OsDump, | 91 GlobalContext::GlobalContext(llvm::raw_ostream *OsDump, |
92 llvm::raw_ostream *OsEmit, VerboseMask Mask, | 92 llvm::raw_ostream *OsEmit, VerboseMask Mask, |
93 TargetArch Arch, OptLevel Opt, | 93 TargetArch Arch, OptLevel Opt, |
94 IceString TestPrefix) | 94 IceString TestPrefix) |
95 : StrDump(OsDump), StrEmit(OsEmit), VMask(Mask), | 95 : StrDump(OsDump), StrEmit(OsEmit), VMask(Mask), |
96 ConstPool(new ConstantPool()), Arch(Arch), Opt(Opt), | 96 ConstPool(new ConstantPool()), Arch(Arch), Opt(Opt), |
97 TestPrefix(TestPrefix), HasEmittedFirstMethod(false) {} | 97 TestPrefix(TestPrefix), HasEmittedFirstMethod(false) { |
98 BuildIntrinsicMap(&IntrinsicInfos); | |
JF
2014/06/10 03:50:41
Why isn't think just IntrinsicMap's default constr
jvoung (off chromium)
2014/06/16 20:51:58
Done.
| |
99 } | |
98 | 100 |
99 // In this context, name mangling means to rewrite a symbol using a | 101 // In this context, name mangling means to rewrite a symbol using a |
100 // given prefix. For a C++ symbol, nest the original symbol inside | 102 // given prefix. For a C++ symbol, nest the original symbol inside |
101 // the "prefix" namespace. For other symbols, just prepend the | 103 // the "prefix" namespace. For other symbols, just prepend the |
102 // prefix. | 104 // prefix. |
103 IceString GlobalContext::mangleName(const IceString &Name) const { | 105 IceString GlobalContext::mangleName(const IceString &Name) const { |
104 // An already-nested name like foo::bar() gets pushed down one | 106 // An already-nested name like foo::bar() gets pushed down one |
105 // level, making it equivalent to Prefix::foo::bar(). | 107 // level, making it equivalent to Prefix::foo::bar(). |
106 // _ZN3foo3barExyz ==> _ZN6Prefix3foo3barExyz | 108 // _ZN3foo3barExyz ==> _ZN6Prefix3foo3barExyz |
107 // A non-nested but mangled name like bar() gets nested, making it | 109 // A non-nested but mangled name like bar() gets nested, making it |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
203 return ConstPool->Floats.getConstantPool(); | 205 return ConstPool->Floats.getConstantPool(); |
204 case IceType_f64: | 206 case IceType_f64: |
205 return ConstPool->Doubles.getConstantPool(); | 207 return ConstPool->Doubles.getConstantPool(); |
206 case IceType_void: | 208 case IceType_void: |
207 case IceType_NUM: | 209 case IceType_NUM: |
208 break; | 210 break; |
209 } | 211 } |
210 llvm_unreachable("Unknown type"); | 212 llvm_unreachable("Unknown type"); |
211 } | 213 } |
212 | 214 |
215 IntrinsicInfo GlobalContext::getIntrinsicInfo(const IceString &Name) const { | |
216 IntrinsicMap::const_iterator I = IntrinsicInfos.find(Name); | |
217 if (I == IntrinsicInfos.end()) | |
218 return UnknownIntrinsicInfo; | |
219 return I->second; | |
220 } | |
221 | |
213 void Timer::printElapsedUs(GlobalContext *Ctx, const IceString &Tag) const { | 222 void Timer::printElapsedUs(GlobalContext *Ctx, const IceString &Tag) const { |
214 if (Ctx->isVerbose(IceV_Timing)) { | 223 if (Ctx->isVerbose(IceV_Timing)) { |
215 // Prefixing with '#' allows timing strings to be included | 224 // Prefixing with '#' allows timing strings to be included |
216 // without error in textual assembly output. | 225 // without error in textual assembly output. |
217 Ctx->getStrDump() << "# " << getElapsedUs() << " usec " << Tag << "\n"; | 226 Ctx->getStrDump() << "# " << getElapsedUs() << " usec " << Tag << "\n"; |
218 } | 227 } |
219 } | 228 } |
220 | 229 |
221 } // end of namespace Ice | 230 } // end of namespace Ice |
OLD | NEW |