diff --git a/polly/lib/CodeGen/BlockGenerators.cpp b/polly/lib/CodeGen/BlockGenerators.cpp
index c2c4faa..8cd1251 100644
--- a/polly/lib/CodeGen/BlockGenerators.cpp
+++ b/polly/lib/CodeGen/BlockGenerators.cpp
@@ -133,7 +133,7 @@
                                     __isl_take isl_aff *Aff, void *User) {
   IslGenInfo *GenInfo = (IslGenInfo *)User;
 
-  assert((GenInfo->Result == NULL) &&
+  assert((GenInfo->Result == nullptr) &&
          "Result is already set. Currently only single isl_aff is supported");
   assert(isl_set_plain_is_universe(Set) &&
          "Code generation failed because the set is not universe");
@@ -146,7 +146,7 @@
 
 Value *IslGenerator::generateIslPwAff(__isl_take isl_pw_aff *PwAff) {
   IslGenInfo User;
-  User.Result = NULL;
+  User.Result = nullptr;
   User.Generator = this;
   isl_pw_aff_foreach_piece(PwAff, mergeIslAffValues, &User);
   assert(User.Result && "Code generation for isl_pw_aff failed");
@@ -186,7 +186,7 @@
   if (Value *New = BBMap.lookup(Old))
     return New;
 
-  return NULL;
+  return nullptr;
 }
 
 Value *BlockGenerator::getNewValue(const Value *Old, ValueMapT &BBMap,
@@ -215,7 +215,7 @@
   // Now the scalar dependence is neither available nor SCEVCodegenable, this
   // should never happen in the current code generator.
   llvm_unreachable("Unexpected scalar dependence in region!");
-  return NULL;
+  return nullptr;
 }
 
 void BlockGenerator::copyInstScalar(const Instruction *Inst, ValueMapT &BBMap,
@@ -446,7 +446,7 @@
   Type *VectorPtrType = getVectorPtrTy(Pointer, VectorWidth);
   unsigned Offset = NegativeStride ? VectorWidth - 1 : 0;
 
-  Value *NewPointer = NULL;
+  Value *NewPointer = nullptr;
   NewPointer = getNewValue(Pointer, ScalarMaps[Offset], GlobalMaps[Offset],
                            VLTS[Offset], getLoopForInst(Load));
   Value *VectorPtr =
