Quellcode durchsuchen

Replace llvm::integer_sequence and friends with the C++14 standard version

The implementation in libc++ takes O(1) compile time, ours was O(n).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@368990 91177308-0d34-0410-b5e6-96231b3b80d8
Benjamin Kramer vor 6 Jahren
Ursprung
Commit
f724ed4411

+ 2 - 2
include/clang/ASTMatchers/ASTMatchersInternal.h

@@ -1334,14 +1334,14 @@ public:
   template <typename T> operator Matcher<T>() const {
   template <typename T> operator Matcher<T>() const {
     return DynTypedMatcher::constructVariadic(
     return DynTypedMatcher::constructVariadic(
                Op, ast_type_traits::ASTNodeKind::getFromNodeKind<T>(),
                Op, ast_type_traits::ASTNodeKind::getFromNodeKind<T>(),
-               getMatchers<T>(llvm::index_sequence_for<Ps...>()))
+               getMatchers<T>(std::index_sequence_for<Ps...>()))
         .template unconditionalConvertTo<T>();
         .template unconditionalConvertTo<T>();
   }
   }
 
 
 private:
 private:
   // Helper method to unpack the tuple into a vector.
   // Helper method to unpack the tuple into a vector.
   template <typename T, std::size_t... Is>
   template <typename T, std::size_t... Is>
-  std::vector<DynTypedMatcher> getMatchers(llvm::index_sequence<Is...>) const {
+  std::vector<DynTypedMatcher> getMatchers(std::index_sequence<Is...>) const {
     return {Matcher<T>(std::get<Is>(Params))...};
     return {Matcher<T>(std::get<Is>(Params))...};
   }
   }
 
 

+ 2 - 2
include/clang/Sema/Sema.h

@@ -1621,7 +1621,7 @@ public:
 
 
     template <std::size_t... Is>
     template <std::size_t... Is>
     void emit(const SemaDiagnosticBuilder &DB,
     void emit(const SemaDiagnosticBuilder &DB,
-              llvm::index_sequence<Is...>) const {
+              std::index_sequence<Is...>) const {
       // Apply all tuple elements to the builder in order.
       // Apply all tuple elements to the builder in order.
       bool Dummy[] = {false, (DB << getPrintable(std::get<Is>(Args)))...};
       bool Dummy[] = {false, (DB << getPrintable(std::get<Is>(Args)))...};
       (void)Dummy;
       (void)Dummy;
@@ -1635,7 +1635,7 @@ public:
 
 
     void diagnose(Sema &S, SourceLocation Loc, QualType T) override {
     void diagnose(Sema &S, SourceLocation Loc, QualType T) override {
       const SemaDiagnosticBuilder &DB = S.Diag(Loc, DiagID);
       const SemaDiagnosticBuilder &DB = S.Diag(Loc, DiagID);
-      emit(DB, llvm::index_sequence_for<Ts...>());
+      emit(DB, std::index_sequence_for<Ts...>());
       DB << T;
       DB << T;
     }
     }
   };
   };

+ 4 - 4
include/clang/Tooling/Refactoring/RefactoringActionRulesInternal.h

@@ -47,7 +47,7 @@ template <typename RuleType, typename... RequirementTypes, size_t... Is>
 void invokeRuleAfterValidatingRequirements(
 void invokeRuleAfterValidatingRequirements(
     RefactoringResultConsumer &Consumer, RefactoringRuleContext &Context,
     RefactoringResultConsumer &Consumer, RefactoringRuleContext &Context,
     const std::tuple<RequirementTypes...> &Requirements,
     const std::tuple<RequirementTypes...> &Requirements,
-    llvm::index_sequence<Is...>) {
+    std::index_sequence<Is...>) {
   // Check if the requirements we're interested in can be evaluated.
   // Check if the requirements we're interested in can be evaluated.
   auto Values =
   auto Values =
       std::make_tuple(std::get<Is>(Requirements).evaluate(Context)...);
       std::make_tuple(std::get<Is>(Requirements).evaluate(Context)...);
@@ -87,7 +87,7 @@ template <typename... RequirementTypes, size_t... Is>
 void visitRefactoringOptions(
 void visitRefactoringOptions(
     RefactoringOptionVisitor &Visitor,
     RefactoringOptionVisitor &Visitor,
     const std::tuple<RequirementTypes...> &Requirements,
     const std::tuple<RequirementTypes...> &Requirements,
-    llvm::index_sequence<Is...>) {
+    std::index_sequence<Is...>) {
   visitRefactoringOptionsImpl(Visitor, std::get<Is>(Requirements)...);
   visitRefactoringOptionsImpl(Visitor, std::get<Is>(Requirements)...);
 }
 }
 
 
@@ -131,7 +131,7 @@ createRefactoringActionRule(const RequirementTypes &... Requirements) {
                 RefactoringRuleContext &Context) override {
                 RefactoringRuleContext &Context) override {
       internal::invokeRuleAfterValidatingRequirements<RuleType>(
       internal::invokeRuleAfterValidatingRequirements<RuleType>(
           Consumer, Context, Requirements,
           Consumer, Context, Requirements,
-          llvm::index_sequence_for<RequirementTypes...>());
+          std::index_sequence_for<RequirementTypes...>());
     }
     }
 
 
     bool hasSelectionRequirement() override {
     bool hasSelectionRequirement() override {
@@ -142,7 +142,7 @@ createRefactoringActionRule(const RequirementTypes &... Requirements) {
     void visitRefactoringOptions(RefactoringOptionVisitor &Visitor) override {
     void visitRefactoringOptions(RefactoringOptionVisitor &Visitor) override {
       internal::visitRefactoringOptions(
       internal::visitRefactoringOptions(
           Visitor, Requirements,
           Visitor, Requirements,
-          llvm::index_sequence_for<RequirementTypes...>());
+          std::index_sequence_for<RequirementTypes...>());
     }
     }
   private:
   private:
     std::tuple<RequirementTypes...> Requirements;
     std::tuple<RequirementTypes...> Requirements;

+ 2 - 2
lib/CodeGen/EHScopeStack.h

@@ -199,14 +199,14 @@ public:
     SavedTuple Saved;
     SavedTuple Saved;
 
 
     template <std::size_t... Is>
     template <std::size_t... Is>
-    T restore(CodeGenFunction &CGF, llvm::index_sequence<Is...>) {
+    T restore(CodeGenFunction &CGF, std::index_sequence<Is...>) {
       // It's important that the restores are emitted in order. The braced init
       // It's important that the restores are emitted in order. The braced init
       // list guarantees that.
       // list guarantees that.
       return T{DominatingValue<As>::restore(CGF, std::get<Is>(Saved))...};
       return T{DominatingValue<As>::restore(CGF, std::get<Is>(Saved))...};
     }
     }
 
 
     void Emit(CodeGenFunction &CGF, Flags flags) override {
     void Emit(CodeGenFunction &CGF, Flags flags) override {
-      restore(CGF, llvm::index_sequence_for<As...>()).Emit(CGF, flags);
+      restore(CGF, std::index_sequence_for<As...>()).Emit(CGF, flags);
     }
     }
 
 
   public:
   public: