[TableGen] TypeSetByHwMode::operator== optimization
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Thu, 16 Aug 2018 16:16:28 +0000 (16:16 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Thu, 16 Aug 2018 16:16:28 +0000 (16:16 +0000)
commit0e1813390520a06820070188829c46ce9c7dbd28
tree12f6cc52ac521b4bfc52642d9ef99bf584176726
parent0ea8d8b95177796f2f6d17f0d0981191c19b2864
[TableGen] TypeSetByHwMode::operator== optimization

This operator is called a great deal, by checking for the cheap isSimple equality cases first (a common occurrence) we can improve performance as we avoid a lot of std::map find/iteration in hasDefault.

isSimple also means that a default value is present, so we can avoid some hasDefault calls.

This also avoids a rather dodgy piece of logic that was checking for isSimple() && !VTS.isSimple() but not the inverse - it now uses the general hasDefault mode comparison test instead.

Saves around 15secs in debug builds of x86 -gen-dag-isel.

Differential Revision: https://reviews.llvm.org/D50841

llvm-svn: 339890
llvm/utils/TableGen/CodeGenDAGPatterns.cpp