diff --git include/clang/Sema/Sema.h include/clang/Sema/Sema.h
index 252ea5b..de39811 100644
--- include/clang/Sema/Sema.h
+++ include/clang/Sema/Sema.h
@@ -834,6 +834,7 @@ public:
 
   /// \brief Get a string to suggest for zero-initialization of a type.
   const char *getFixItZeroInitializerForType(QualType T) const;
+  const char *getFixItZeroLiteralForType(QualType T) const;
 
   ExprResult Owned(Expr* E) { return E; }
   ExprResult Owned(ExprResult R) { return R; }
diff --git lib/Sema/SemaChecking.cpp lib/Sema/SemaChecking.cpp
index d12f707..a9557a5 100644
--- lib/Sema/SemaChecking.cpp
+++ lib/Sema/SemaChecking.cpp
@@ -4220,7 +4220,8 @@ void CheckImplicitConversion(Sema &S, Expr *E, QualType T,
     if (Loc.isMacroID())
       Loc = S.SourceMgr.getImmediateExpansionRange(Loc).first;
     S.Diag(Loc, diag::warn_impcast_null_pointer_to_integer)
-        << T << Loc << clang::SourceRange(CC);
+        << T << clang::SourceRange(CC)
+        << FixItHint::CreateReplacement(Loc, S.getFixItZeroLiteralForType(T));
     return;
   }
 
diff --git lib/Sema/SemaFixItUtils.cpp lib/Sema/SemaFixItUtils.cpp
index b78ea7d..e9c53be 100644
--- lib/Sema/SemaFixItUtils.cpp
+++ lib/Sema/SemaFixItUtils.cpp
@@ -202,3 +202,13 @@ const char *Sema::getFixItZeroInitializerForType(QualType T) const {
     return " = {}";
   return 0;
 }
+
+const char *Sema::getFixItZeroLiteralForType(QualType T) const {
+  const char *Str = getFixItZeroInitializerForType(T);
+  if (!Str)
+    return Str;
+  size_t Len = std::strlen(Str);
+  assert(Len > 3 && "Should be a non-record type init");
+  assert(strncmp(Str, " = ", 3) == 0 && "Should be non-record type init");
+  return Str + 3;
+}
diff --git test/FixIt/fixit.cpp test/FixIt/fixit.cpp
index e9b4d75..86a2dd4 100644
--- test/FixIt/fixit.cpp
+++ test/FixIt/fixit.cpp
@@ -205,7 +205,6 @@ template<template<typename> Foo, // expected-error {{template template parameter
          template<typename> struct Baz> // expected-error {{template template parameter requires 'class' after the parameter list}}
 void func();
 
-
 namespace ShadowedTagType {
 class Foo {
  public:
@@ -218,6 +217,9 @@ class Foo {
 void Foo::SetBar(Bar bar) { bar_ = bar; } // expected-error {{must use 'enum' tag to refer to type 'Bar' in this scope}}
 }
 
+#define NULL __null
+char c = NULL; // expected-warning {{implicit conversion of NULL constant to 'char'}}
+
 namespace arrow_suggest {
 
 template <typename T>
