Commit 146e16f6 by Ben Clayton

C++14: Use enum class builtin hashing

Instead of casting to int for a map key. Bug: b/147359661 Change-Id: Id777f7285f9349e7ab855c4a5a26d6a2aa4c02ba Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/39953 Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com> Reviewed-by: 's avatarAlexis Hétu <sugoi@google.com> Tested-by: 's avatarBen Clayton <bclayton@google.com>
parent 316f0cb6
......@@ -192,10 +192,7 @@ private:
const llvm::DataLayout &dataLayout);
JITGlobals(const JITGlobals &) = default;
// The cache key here is actually a rr::Optimization::Level. We use int
// as 'enum class' types do not provide builtin hash functions until
// C++14. See: https://stackoverflow.com/a/29618545.
Cache<int, TargetMachineSPtr> targetMachines;
Cache<rr::Optimization::Level, TargetMachineSPtr> targetMachines;
};
JITGlobals *JITGlobals::get()
......@@ -206,13 +203,15 @@ JITGlobals *JITGlobals::get()
JITGlobals::TargetMachineSPtr JITGlobals::getTargetMachine(rr::Optimization::Level optlevel)
{
return targetMachines.getOrCreate(static_cast<int>(optlevel), [&]() {
return TargetMachineSPtr(llvm::EngineBuilder()
#ifdef ENABLE_RR_DEBUG_INFO
.setOptLevel(toLLVM(rr::Optimization::Level::None))
#else
.setOptLevel(toLLVM(optlevel))
auto llvmOptLevel = toLLVM(rr::Optimization::Level::None);
#else // ENABLE_RR_DEBUG_INFO
auto llvmOptLevel = toLLVM(optlevel);
#endif // ENABLE_RR_DEBUG_INFO
return targetMachines.getOrCreate(optlevel, [&]() {
return TargetMachineSPtr(llvm::EngineBuilder()
.setOptLevel(llvmOptLevel)
.setMCPU(mcpu)
.setMArch(march)
.setMAttrs(mattrs)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment