erichkeane added inline comments.
================ Comment at: clang/lib/CodeGen/CGBuiltin.cpp:2048 + QualType Type) { + static llvm::DenseMap<QualType, StringRef> Types; if (Types.empty()) { ---------------- yihanaa wrote: > yihanaa wrote: > > erichkeane wrote: > > > yihanaa wrote: > > > > erichkeane wrote: > > > > > yihanaa wrote: > > > > > > erichkeane wrote: > > > > > > > Instead of this initialization, can we make this a constexpr > > > > > > > constructor/collection of some sort and instantiate it inline? > > > > > > > Instead of this initialization, can we make this a constexpr > > > > > > > constructor/collection of some sort and instantiate it inline? > > > > > > > > > > > > I don't have a good idea because it relies on Context to get some > > > > > > types like const char * > > > > > We could at minimum do a in inline-initializer instead of the branch > > > > > below. > > > > I still haven't come up with a good idea to do it๐ > > > Hrmph, `DenseMap` doesn't seem to have an init list ctor?! > > > > > > Since this is a finite, known at compile time list of low 'N', I'd > > > suggest just making it `static std::array<pair<QualType, StringRef>> > > > Types = {{Context.CharTy, "%c"},...`. > > > > > > Then just doing a llvm::find_if. The list is small enough I suspect the > > > DenseMap overhead is more than the use of `llvm::find_if`. > > Haha,DenseMap also has no constexpr ctor. I think the time complexity of > > these two is the same. > The Context.CharTy... etc. are not static, So we might need a static value > instead of it, and compare it with QualType They don't have to be static? This should do 'magic static' initialization. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D122822/new/ https://reviews.llvm.org/D122822 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits