diff options
-rw-r--r-- | lib/AST/Type.cpp | 16 | ||||
-rw-r--r-- | tools/driver/Makefile | 8 |
2 files changed, 12 insertions, 12 deletions
diff --git a/lib/AST/Type.cpp b/lib/AST/Type.cpp index 583cb5d57c..320e807dca 100644 --- a/lib/AST/Type.cpp +++ b/lib/AST/Type.cpp @@ -1586,10 +1586,18 @@ void FunctionProtoType::Profile(llvm::FoldingSetNodeID &ID, QualType Result, ID.AddPointer(Result.getAsOpaquePtr()); for (unsigned i = 0; i != NumArgs; ++i) ID.AddPointer(ArgTys[i].getAsOpaquePtr()); - ID.AddBoolean(epi.Variadic); - ID.AddInteger(epi.TypeQuals); - ID.AddInteger(epi.RefQualifier); - ID.AddInteger(epi.ExceptionSpecType); + // This method is relatively performance sensitive, so as a performance + // shortcut, use one AddInteger call instead of four for the next four + // fields. + assert(!(unsigned(epi.Variadic) & ~1) && + !(unsigned(epi.TypeQuals) & ~255) && + !(unsigned(epi.RefQualifier) & ~3) && + !(unsigned(epi.ExceptionSpecType) & ~7) && + "Values larger than expected."); + ID.AddInteger(unsigned(epi.Variadic) + + (epi.TypeQuals << 1) + + (epi.RefQualifier << 9) + + (epi.ExceptionSpecType << 11)); if (epi.ExceptionSpecType == EST_Dynamic) { for (unsigned i = 0; i != epi.NumExceptions; ++i) ID.AddPointer(epi.Exceptions[i].getAsOpaquePtr()); diff --git a/tools/driver/Makefile b/tools/driver/Makefile index 1ba8bc24d1..00fb3500c7 100644 --- a/tools/driver/Makefile +++ b/tools/driver/Makefile @@ -9,13 +9,7 @@ CLANG_LEVEL := ../.. TOOLNAME = clang -ifndef CLANG_IS_PRODUCTION TOOLALIAS = clang++ -else - ifdef CLANGXX_IS_PRODUCTION - TOOLALIAS = clang++ - endif -endif # We don't currently expect production Clang builds to be interested in # plugins. This is important for startup performance. @@ -72,7 +66,5 @@ endif # Translate make variable to define when building a "production" clang. ifdef CLANG_IS_PRODUCTION CPP.Defines += -DCLANG_IS_PRODUCTION -endif -ifdef CLANGXX_IS_PRODUCTION CPP.Defines += -DCLANGXX_IS_PRODUCTION endif |