[TableGen] TypeInfer - Cache the legal types as TypeSetByHwMode
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Fri, 17 Aug 2018 15:54:07 +0000 (15:54 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Fri, 17 Aug 2018 15:54:07 +0000 (15:54 +0000)
commit45e61c5f9919e7a04bbe4de879a639147e66715d
tree8ee1c90577088906e9321395ad29e068966c4bed
parent2ec36f08a6cce7aa6f2e0ae5a1f62a475148baf5
[TableGen] TypeInfer - Cache the legal types as TypeSetByHwMode

We were just caching the MVT set of legal types, then every call creating a new TypeSetByHwMode with it and passing it back on the stack. There's no need to do this - we can create and cache the whole TypeSetByHwMode once and return a const reference to it each time.

Additionally, TypeInfer::expandOverloads wasn't making use of the fact that the cache just contains a default mode containing all the types.

Saves up to 30secs in debug builds of x86 -gen-dag-isel.

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

llvm-svn: 340042
llvm/utils/TableGen/CodeGenDAGPatterns.cpp
llvm/utils/TableGen/CodeGenDAGPatterns.h