[llvm] r339884 - [TableGen] Return ValueTypeByHwMode by const reference from CodeGenRegisterClass::getValueTypeNum
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 16 08:29:24 PDT 2018
Author: rksimon
Date: Thu Aug 16 08:29:24 2018
New Revision: 339884
URL: http://llvm.org/viewvc/llvm-project?rev=339884&view=rev
Log:
[TableGen] Return ValueTypeByHwMode by const reference from CodeGenRegisterClass::getValueTypeNum
Avoids costly std::map copies inside ValueTypeByHwMode constructor
Modified:
llvm/trunk/utils/TableGen/CodeGenRegisters.h
llvm/trunk/utils/TableGen/DAGISelMatcherGen.cpp
Modified: llvm/trunk/utils/TableGen/CodeGenRegisters.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeGenRegisters.h?rev=339884&r1=339883&r2=339884&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/CodeGenRegisters.h (original)
+++ llvm/trunk/utils/TableGen/CodeGenRegisters.h Thu Aug 16 08:29:24 2018
@@ -348,7 +348,7 @@ namespace llvm {
ArrayRef<ValueTypeByHwMode> getValueTypes() const { return VTs; }
unsigned getNumValueTypes() const { return VTs.size(); }
- ValueTypeByHwMode getValueTypeNum(unsigned VTNum) const {
+ const ValueTypeByHwMode &getValueTypeNum(unsigned VTNum) const {
if (VTNum < VTs.size())
return VTs[VTNum];
llvm_unreachable("VTNum greater than number of ValueTypes in RegClass!");
Modified: llvm/trunk/utils/TableGen/DAGISelMatcherGen.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/DAGISelMatcherGen.cpp?rev=339884&r1=339883&r2=339884&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/DAGISelMatcherGen.cpp (original)
+++ llvm/trunk/utils/TableGen/DAGISelMatcherGen.cpp Thu Aug 16 08:29:24 2018
@@ -33,15 +33,15 @@ static MVT::SimpleValueType getRegisterV
if (!FoundRC) {
FoundRC = true;
- ValueTypeByHwMode VVT = RC.getValueTypeNum(0);
+ const ValueTypeByHwMode &VVT = RC.getValueTypeNum(0);
if (VVT.isSimple())
VT = VVT.getSimple().SimpleTy;
continue;
}
- // If this occurs in multiple register classes, they all have to agree.
#ifndef NDEBUG
- ValueTypeByHwMode T = RC.getValueTypeNum(0);
+ // If this occurs in multiple register classes, they all have to agree.
+ const ValueTypeByHwMode &T = RC.getValueTypeNum(0);
assert((!T.isSimple() || T.getSimple().SimpleTy == VT) &&
"ValueType mismatch between register classes for this register");
#endif
More information about the llvm-commits
mailing list