diff --git a/re2/compile.cc b/re2/compile.cc
index adb45fd..14e401a 100644
--- a/re2/compile.cc
+++ b/re2/compile.cc
@@ -44,7 +44,7 @@ struct PatchList {
   static PatchList Append(Prog::Inst *inst0, PatchList l1, PatchList l2);
 };
 
-static PatchList nullPatchList;
+static PatchList nullPatchList = { 0 };
 
 // Returns patch list containing just p.
 PatchList PatchList::Mk(uint32 p) {
@@ -106,12 +106,13 @@ struct Frag {
   uint32 begin;
   PatchList end;
 
-  explicit Frag(LinkerInitialized) {}
   Frag() : begin(0) { end.p = 0; }  // needed so Frag can go in vector
   Frag(uint32 begin, PatchList end) : begin(begin), end(end) {}
 };
 
-static Frag kNullFrag(LINKER_INITIALIZED);
+static Frag NullFrag() {
+  return Frag();
+}
 
 // Input encodings.
 enum Encoding {
@@ -684,13 +685,13 @@ Frag Compiler::PreVisit(Regexp* re, Frag, bool* stop) {
   if (failed_)
     *stop = true;
 
-  return kNullFrag;  // not used by caller
+  return NullFrag();  // not used by caller
 }
 
 Frag Compiler::Literal(Rune r, bool foldcase) {
   switch (encoding_) {
     default:
-      return kNullFrag;
+      return NullFrag();
 
     case kEncodingLatin1:
       return ByteRange(r, r, foldcase);
@@ -1006,7 +1007,7 @@ Prog* Compiler::Compile(Regexp* re, bool reversed, int64 max_mem) {
   bool is_anchor_end = IsAnchorEnd(&sre, 0);
 
   // Generate fragment for entire regexp.
-  Frag f = c.WalkExponential(sre, kNullFrag, 2*c.max_inst_);
+  Frag f = c.WalkExponential(sre, NullFrag(), 2*c.max_inst_);
   sre->Decref();
   if (c.failed_)
     return NULL;
@@ -1097,7 +1098,7 @@ Prog* Compiler::CompileSet(const RE2::Options& options, RE2::Anchor anchor,
   c.Setup(pf, options.max_mem(), anchor);
 
   // Compile alternation of fragments.
-  Frag all = c.WalkExponential(re, kNullFrag, 2*c.max_inst_);
+  Frag all = c.WalkExponential(re, NullFrag(), 2*c.max_inst_);
   re->Decref();
   if (c.failed_)
     return NULL;
diff --git a/re2/re2.cc b/re2/re2.cc
index 0da886d..b9e44fc 100644
--- a/re2/re2.cc
+++ b/re2/re2.cc
@@ -32,10 +32,10 @@ namespace re2 {
 static const int kMaxArgs = 16;
 static const int kVecSize = 1+kMaxArgs;
 
-const VariadicFunction2<bool, const StringPiece&, const RE2&, RE2::Arg, RE2::FullMatchN> RE2::FullMatch;
-const VariadicFunction2<bool, const StringPiece&, const RE2&, RE2::Arg, RE2::PartialMatchN> RE2::PartialMatch;
-const VariadicFunction2<bool, StringPiece*, const RE2&, RE2::Arg, RE2::ConsumeN> RE2::Consume;
-const VariadicFunction2<bool, StringPiece*, const RE2&, RE2::Arg, RE2::FindAndConsumeN> RE2::FindAndConsume;
+const VariadicFunction2<bool, const StringPiece&, const RE2&, RE2::Arg, RE2::FullMatchN> RE2::FullMatch = {};
+const VariadicFunction2<bool, const StringPiece&, const RE2&, RE2::Arg, RE2::PartialMatchN> RE2::PartialMatch = {};
+const VariadicFunction2<bool, StringPiece*, const RE2&, RE2::Arg, RE2::ConsumeN> RE2::Consume = {};
+const VariadicFunction2<bool, StringPiece*, const RE2&, RE2::Arg, RE2::FindAndConsumeN> RE2::FindAndConsume = {};
 
 #define kDefaultMaxMem (8<<20)
 
diff --git a/re2/variadic_function.h b/re2/variadic_function.h
index 8d2b763..7c7d6d5 100644
--- a/re2/variadic_function.h
+++ b/re2/variadic_function.h
@@ -11,8 +11,6 @@ template <typename Result, typename Param0, typename Param1, typename Arg,
           Result (*Func)(Param0, Param1, const Arg* const [], int count)>
 class VariadicFunction2 {
  public:
-  VariadicFunction2() {}
-
   Result operator()(Param0 p0, Param1 p1) const {
     return Func(p0, p1, 0, 0);
   }
