diff --git a/polly/include/polly/CodeGen/IRBuilder.h b/polly/include/polly/CodeGen/IRBuilder.h
index 6641ac9..5a111e9 100644
--- a/polly/include/polly/CodeGen/IRBuilder.h
+++ b/polly/include/polly/CodeGen/IRBuilder.h
@@ -79,7 +79,7 @@
   void addAlternativeAliasBases(
       llvm::DenseMap<llvm::AssertingVH<llvm::Value>,
                      llvm::AssertingVH<llvm::Value>> &NewMap) {
-    AlternativeAliasBases.insert(NewMap.begin(), NewMap.end());
+    AlternativeAliasBases.insert_range(NewMap);
   }
 
   /// Delete the set of alternative alias bases
diff --git a/polly/lib/CodeGen/BlockGenerators.cpp b/polly/lib/CodeGen/BlockGenerators.cpp
index b2e3b5d3..cf2cc65 100644
--- a/polly/lib/CodeGen/BlockGenerators.cpp
+++ b/polly/lib/CodeGen/BlockGenerators.cpp
@@ -76,8 +76,8 @@
     return nullptr;
 
   ValueMapT VTV;
-  VTV.insert(BBMap.begin(), BBMap.end());
-  VTV.insert(GlobalMap.begin(), GlobalMap.end());
+  VTV.insert_range(BBMap);
+  VTV.insert_range(GlobalMap);
 
   Scop &S = *Stmt.getParent();
   const DataLayout &DL = S.getFunction().getDataLayout();
@@ -1131,7 +1131,7 @@
 
     // Remember value in case it is visible after this subregion.
     if (isDominatingSubregionExit(DT, R, BB))
-      ValueMap.insert(RegionMap.begin(), RegionMap.end());
+      ValueMap.insert_range(RegionMap);
   }
 
   // Now create a new dedicated region exit block and add it to the region map.
@@ -1164,7 +1164,7 @@
     Instruction *BICopy = BBCopyEnd->getTerminator();
 
     ValueMapT &RegionMap = RegionMaps[BBCopyStart];
-    RegionMap.insert(StartBlockMap.begin(), StartBlockMap.end());
+    RegionMap.insert_range(StartBlockMap);
 
     Builder.SetInsertPoint(BICopy);
     copyInstScalar(Stmt, TI, RegionMap, LTS);
diff --git a/polly/lib/CodeGen/IslNodeBuilder.cpp b/polly/lib/CodeGen/IslNodeBuilder.cpp
index ca49792..e818dab 100644
--- a/polly/lib/CodeGen/IslNodeBuilder.cpp
+++ b/polly/lib/CodeGen/IslNodeBuilder.cpp
@@ -895,7 +895,7 @@
   Id = isl_ast_expr_get_id(StmtExpr);
   isl_ast_expr_free(StmtExpr);
 
-  LTS.insert(OutsideLoopIterations.begin(), OutsideLoopIterations.end());
+  LTS.insert_range(OutsideLoopIterations);
 
   Stmt = (ScopStmt *)isl_id_get_user(Id);
   auto *NewAccesses = createNewAccesses(Stmt, User);
