diff --git a/CHANGES.txt b/CHANGES.txt
index 35ddd53..5020b78 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -22,6 +22,8 @@
   * GzipInputStream and GzipOutputStream support reading/writing gzip- or
     zlib-compressed streams if zlib is available.
     (google/protobuf/io/gzip_stream.h)
+  * Generated constructors explicitly initialize all fields (to avoid warnings
+    with certain compiler settings).
 
   Java
   * Fixed bug where Message.mergeFrom(Message) failed to merge extensions.
diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt
index 01c8033..5c6d9d2 100644
--- a/CONTRIBUTORS.txt
+++ b/CONTRIBUTORS.txt
@@ -59,3 +59,6 @@
     * MS Visual Studio error format option.
   Brian Olson <brianolson@google.com>
     * gzip/zlib I/O support.
+  Michael Poole <mdpoole@troilus.org>
+    * Fixed warnings about generated constructors not explicitly initializing
+      all fields (only present with certain compiler settings).
diff --git a/src/google/protobuf/compiler/cpp/cpp_enum_field.cc b/src/google/protobuf/compiler/cpp/cpp_enum_field.cc
index 19779a8..a78bf88 100644
--- a/src/google/protobuf/compiler/cpp/cpp_enum_field.cc
+++ b/src/google/protobuf/compiler/cpp/cpp_enum_field.cc
@@ -218,7 +218,11 @@
 
 void RepeatedEnumFieldGenerator::
 GenerateInitializer(io::Printer* printer) const {
-  // Not needed for repeated fields.
+  printer->Print(variables_, ",\n$name$_()");
+  if (descriptor_->options().packed() &&
+      descriptor_->file()->options().optimize_for() == FileOptions::SPEED) {
+    printer->Print(variables_, ",\n_$name$_cached_byte_size_()");
+  }
 }
 
 void RepeatedEnumFieldGenerator::
diff --git a/src/google/protobuf/compiler/cpp/cpp_message.cc b/src/google/protobuf/compiler/cpp/cpp_message.cc
index c6843e9..d2f7680 100644
--- a/src/google/protobuf/compiler/cpp/cpp_message.cc
+++ b/src/google/protobuf/compiler/cpp/cpp_message.cc
@@ -753,6 +753,7 @@
   }
 
   printer->Print(
+    "_unknown_fields_(),\n"
     "_cached_size_(0)");
 
   // Write the initializers for each field.
diff --git a/src/google/protobuf/compiler/cpp/cpp_message_field.cc b/src/google/protobuf/compiler/cpp/cpp_message_field.cc
index 7d57a6d..e2d2370 100644
--- a/src/google/protobuf/compiler/cpp/cpp_message_field.cc
+++ b/src/google/protobuf/compiler/cpp/cpp_message_field.cc
@@ -213,7 +213,7 @@
 
 void RepeatedMessageFieldGenerator::
 GenerateInitializer(io::Printer* printer) const {
-  // Not needed for repeated fields.
+  printer->Print(variables_, ",\n$name$_()");
 }
 
 void RepeatedMessageFieldGenerator::
diff --git a/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc b/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc
index 768d30c..57244c5 100644
--- a/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc
+++ b/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc
@@ -283,7 +283,11 @@
 
 void RepeatedPrimitiveFieldGenerator::
 GenerateInitializer(io::Printer* printer) const {
-  // Not needed for repeated fields.
+  printer->Print(variables_, ",\n$name$_()");
+  if (descriptor_->options().packed() &&
+      descriptor_->file()->options().optimize_for() == FileOptions::SPEED) {
+    printer->Print(variables_, ",\n_$name$_cached_byte_size_()");
+  }
 }
 
 void RepeatedPrimitiveFieldGenerator::
diff --git a/src/google/protobuf/compiler/cpp/cpp_string_field.cc b/src/google/protobuf/compiler/cpp/cpp_string_field.cc
index 200e3d6..51c5c6f 100644
--- a/src/google/protobuf/compiler/cpp/cpp_string_field.cc
+++ b/src/google/protobuf/compiler/cpp/cpp_string_field.cc
@@ -361,7 +361,7 @@
 
 void RepeatedStringFieldGenerator::
 GenerateInitializer(io::Printer* printer) const {
-  // Not needed for repeated fields.
+  printer->Print(variables_, ",\n$name$_()");
 }
 
 void RepeatedStringFieldGenerator::
diff --git a/src/google/protobuf/descriptor.pb.cc b/src/google/protobuf/descriptor.pb.cc
index 0df3f3b..16b4442 100644
--- a/src/google/protobuf/descriptor.pb.cc
+++ b/src/google/protobuf/descriptor.pb.cc
@@ -560,7 +560,9 @@
 
 FileDescriptorSet::FileDescriptorSet()
   : ::google::protobuf::Message(),
-    _cached_size_(0) {
+    _unknown_fields_(),
+    _cached_size_(0),
+    file_() {
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
 }
 
@@ -568,7 +570,9 @@
 
 FileDescriptorSet::FileDescriptorSet(const FileDescriptorSet& from)
   : ::google::protobuf::Message(),
-    _cached_size_(0) {
+    _unknown_fields_(),
+    _cached_size_(0),
+    file_() {
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
   MergeFrom(from);
 }
@@ -740,9 +744,15 @@
 
 FileDescriptorProto::FileDescriptorProto()
   : ::google::protobuf::Message(),
+    _unknown_fields_(),
     _cached_size_(0),
     name_(const_cast< ::std::string*>(&_default_name_)),
     package_(const_cast< ::std::string*>(&_default_package_)),
+    dependency_(),
+    message_type_(),
+    enum_type_(),
+    service_(),
+    extension_(),
     options_(NULL) {
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
 }
@@ -752,9 +762,15 @@
 
 FileDescriptorProto::FileDescriptorProto(const FileDescriptorProto& from)
   : ::google::protobuf::Message(),
+    _unknown_fields_(),
     _cached_size_(0),
     name_(const_cast< ::std::string*>(&_default_name_)),
     package_(const_cast< ::std::string*>(&_default_package_)),
+    dependency_(),
+    message_type_(),
+    enum_type_(),
+    service_(),
+    extension_(),
     options_(NULL) {
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
   MergeFrom(from);
@@ -1160,6 +1176,7 @@
 
 DescriptorProto_ExtensionRange::DescriptorProto_ExtensionRange()
   : ::google::protobuf::Message(),
+    _unknown_fields_(),
     _cached_size_(0),
     start_(0),
     end_(0) {
@@ -1170,6 +1187,7 @@
 
 DescriptorProto_ExtensionRange::DescriptorProto_ExtensionRange(const DescriptorProto_ExtensionRange& from)
   : ::google::protobuf::Message(),
+    _unknown_fields_(),
     _cached_size_(0),
     start_(0),
     end_(0) {
@@ -1377,8 +1395,14 @@
 
 DescriptorProto::DescriptorProto()
   : ::google::protobuf::Message(),
+    _unknown_fields_(),
     _cached_size_(0),
     name_(const_cast< ::std::string*>(&_default_name_)),
+    field_(),
+    extension_(),
+    nested_type_(),
+    enum_type_(),
+    extension_range_(),
     options_(NULL) {
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
 }
@@ -1388,8 +1412,14 @@
 
 DescriptorProto::DescriptorProto(const DescriptorProto& from)
   : ::google::protobuf::Message(),
+    _unknown_fields_(),
     _cached_size_(0),
     name_(const_cast< ::std::string*>(&_default_name_)),
+    field_(),
+    extension_(),
+    nested_type_(),
+    enum_type_(),
+    extension_range_(),
     options_(NULL) {
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
   MergeFrom(from);
@@ -1841,6 +1871,7 @@
 
 FieldDescriptorProto::FieldDescriptorProto()
   : ::google::protobuf::Message(),
+    _unknown_fields_(),
     _cached_size_(0),
     name_(const_cast< ::std::string*>(&_default_name_)),
     number_(0),
@@ -1858,6 +1889,7 @@
 
 FieldDescriptorProto::FieldDescriptorProto(const FieldDescriptorProto& from)
   : ::google::protobuf::Message(),
+    _unknown_fields_(),
     _cached_size_(0),
     name_(const_cast< ::std::string*>(&_default_name_)),
     number_(0),
@@ -2280,8 +2312,10 @@
 
 EnumDescriptorProto::EnumDescriptorProto()
   : ::google::protobuf::Message(),
+    _unknown_fields_(),
     _cached_size_(0),
     name_(const_cast< ::std::string*>(&_default_name_)),
+    value_(),
     options_(NULL) {
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
 }
@@ -2291,8 +2325,10 @@
 
 EnumDescriptorProto::EnumDescriptorProto(const EnumDescriptorProto& from)
   : ::google::protobuf::Message(),
+    _unknown_fields_(),
     _cached_size_(0),
     name_(const_cast< ::std::string*>(&_default_name_)),
+    value_(),
     options_(NULL) {
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
   MergeFrom(from);
@@ -2536,6 +2572,7 @@
 
 EnumValueDescriptorProto::EnumValueDescriptorProto()
   : ::google::protobuf::Message(),
+    _unknown_fields_(),
     _cached_size_(0),
     name_(const_cast< ::std::string*>(&_default_name_)),
     number_(0),
@@ -2548,6 +2585,7 @@
 
 EnumValueDescriptorProto::EnumValueDescriptorProto(const EnumValueDescriptorProto& from)
   : ::google::protobuf::Message(),
+    _unknown_fields_(),
     _cached_size_(0),
     name_(const_cast< ::std::string*>(&_default_name_)),
     number_(0),
@@ -2792,8 +2830,10 @@
 
 ServiceDescriptorProto::ServiceDescriptorProto()
   : ::google::protobuf::Message(),
+    _unknown_fields_(),
     _cached_size_(0),
     name_(const_cast< ::std::string*>(&_default_name_)),
+    method_(),
     options_(NULL) {
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
 }
@@ -2803,8 +2843,10 @@
 
 ServiceDescriptorProto::ServiceDescriptorProto(const ServiceDescriptorProto& from)
   : ::google::protobuf::Message(),
+    _unknown_fields_(),
     _cached_size_(0),
     name_(const_cast< ::std::string*>(&_default_name_)),
+    method_(),
     options_(NULL) {
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
   MergeFrom(from);
@@ -3049,6 +3091,7 @@
 
 MethodDescriptorProto::MethodDescriptorProto()
   : ::google::protobuf::Message(),
+    _unknown_fields_(),
     _cached_size_(0),
     name_(const_cast< ::std::string*>(&_default_name_)),
     input_type_(const_cast< ::std::string*>(&_default_input_type_)),
@@ -3062,6 +3105,7 @@
 
 MethodDescriptorProto::MethodDescriptorProto(const MethodDescriptorProto& from)
   : ::google::protobuf::Message(),
+    _unknown_fields_(),
     _cached_size_(0),
     name_(const_cast< ::std::string*>(&_default_name_)),
     input_type_(const_cast< ::std::string*>(&_default_input_type_)),
@@ -3371,11 +3415,13 @@
     _extensions_(&FileOptions_descriptor_,
                  ::google::protobuf::DescriptorPool::generated_pool(),
                  ::google::protobuf::MessageFactory::generated_factory()),
+    _unknown_fields_(),
     _cached_size_(0),
     java_package_(const_cast< ::std::string*>(&_default_java_package_)),
     java_outer_classname_(const_cast< ::std::string*>(&_default_java_outer_classname_)),
     java_multiple_files_(false),
-    optimize_for_(2) {
+    optimize_for_(2),
+    uninterpreted_option_() {
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
 }
 
@@ -3386,11 +3432,13 @@
     _extensions_(&FileOptions_descriptor_,
                  ::google::protobuf::DescriptorPool::generated_pool(),
                  ::google::protobuf::MessageFactory::generated_factory()),
+    _unknown_fields_(),
     _cached_size_(0),
     java_package_(const_cast< ::std::string*>(&_default_java_package_)),
     java_outer_classname_(const_cast< ::std::string*>(&_default_java_outer_classname_)),
     java_multiple_files_(false),
-    optimize_for_(2) {
+    optimize_for_(2),
+    uninterpreted_option_() {
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
   MergeFrom(from);
 }
@@ -3711,8 +3759,10 @@
     _extensions_(&MessageOptions_descriptor_,
                  ::google::protobuf::DescriptorPool::generated_pool(),
                  ::google::protobuf::MessageFactory::generated_factory()),
+    _unknown_fields_(),
     _cached_size_(0),
-    message_set_wire_format_(false) {
+    message_set_wire_format_(false),
+    uninterpreted_option_() {
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
 }
 
@@ -3723,8 +3773,10 @@
     _extensions_(&MessageOptions_descriptor_,
                  ::google::protobuf::DescriptorPool::generated_pool(),
                  ::google::protobuf::MessageFactory::generated_factory()),
+    _unknown_fields_(),
     _cached_size_(0),
-    message_set_wire_format_(false) {
+    message_set_wire_format_(false),
+    uninterpreted_option_() {
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
   MergeFrom(from);
 }
@@ -3963,10 +4015,12 @@
     _extensions_(&FieldOptions_descriptor_,
                  ::google::protobuf::DescriptorPool::generated_pool(),
                  ::google::protobuf::MessageFactory::generated_factory()),
+    _unknown_fields_(),
     _cached_size_(0),
     ctype_(1),
     packed_(false),
-    experimental_map_key_(const_cast< ::std::string*>(&_default_experimental_map_key_)) {
+    experimental_map_key_(const_cast< ::std::string*>(&_default_experimental_map_key_)),
+    uninterpreted_option_() {
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
 }
 
@@ -3977,10 +4031,12 @@
     _extensions_(&FieldOptions_descriptor_,
                  ::google::protobuf::DescriptorPool::generated_pool(),
                  ::google::protobuf::MessageFactory::generated_factory()),
+    _unknown_fields_(),
     _cached_size_(0),
     ctype_(1),
     packed_(false),
-    experimental_map_key_(const_cast< ::std::string*>(&_default_experimental_map_key_)) {
+    experimental_map_key_(const_cast< ::std::string*>(&_default_experimental_map_key_)),
+    uninterpreted_option_() {
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
   MergeFrom(from);
 }
@@ -4265,7 +4321,9 @@
     _extensions_(&EnumOptions_descriptor_,
                  ::google::protobuf::DescriptorPool::generated_pool(),
                  ::google::protobuf::MessageFactory::generated_factory()),
-    _cached_size_(0) {
+    _unknown_fields_(),
+    _cached_size_(0),
+    uninterpreted_option_() {
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
 }
 
@@ -4276,7 +4334,9 @@
     _extensions_(&EnumOptions_descriptor_,
                  ::google::protobuf::DescriptorPool::generated_pool(),
                  ::google::protobuf::MessageFactory::generated_factory()),
-    _cached_size_(0) {
+    _unknown_fields_(),
+    _cached_size_(0),
+    uninterpreted_option_() {
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
   MergeFrom(from);
 }
@@ -4458,7 +4518,9 @@
     _extensions_(&EnumValueOptions_descriptor_,
                  ::google::protobuf::DescriptorPool::generated_pool(),
                  ::google::protobuf::MessageFactory::generated_factory()),
-    _cached_size_(0) {
+    _unknown_fields_(),
+    _cached_size_(0),
+    uninterpreted_option_() {
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
 }
 
@@ -4469,7 +4531,9 @@
     _extensions_(&EnumValueOptions_descriptor_,
                  ::google::protobuf::DescriptorPool::generated_pool(),
                  ::google::protobuf::MessageFactory::generated_factory()),
-    _cached_size_(0) {
+    _unknown_fields_(),
+    _cached_size_(0),
+    uninterpreted_option_() {
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
   MergeFrom(from);
 }
@@ -4651,7 +4715,9 @@
     _extensions_(&ServiceOptions_descriptor_,
                  ::google::protobuf::DescriptorPool::generated_pool(),
                  ::google::protobuf::MessageFactory::generated_factory()),
-    _cached_size_(0) {
+    _unknown_fields_(),
+    _cached_size_(0),
+    uninterpreted_option_() {
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
 }
 
@@ -4662,7 +4728,9 @@
     _extensions_(&ServiceOptions_descriptor_,
                  ::google::protobuf::DescriptorPool::generated_pool(),
                  ::google::protobuf::MessageFactory::generated_factory()),
-    _cached_size_(0) {
+    _unknown_fields_(),
+    _cached_size_(0),
+    uninterpreted_option_() {
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
   MergeFrom(from);
 }
@@ -4844,7 +4912,9 @@
     _extensions_(&MethodOptions_descriptor_,
                  ::google::protobuf::DescriptorPool::generated_pool(),
                  ::google::protobuf::MessageFactory::generated_factory()),
-    _cached_size_(0) {
+    _unknown_fields_(),
+    _cached_size_(0),
+    uninterpreted_option_() {
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
 }
 
@@ -4855,7 +4925,9 @@
     _extensions_(&MethodOptions_descriptor_,
                  ::google::protobuf::DescriptorPool::generated_pool(),
                  ::google::protobuf::MessageFactory::generated_factory()),
-    _cached_size_(0) {
+    _unknown_fields_(),
+    _cached_size_(0),
+    uninterpreted_option_() {
   ::memset(_has_bits_, 0, sizeof(_has_bits_));
   MergeFrom(from);
 }
@@ -5035,6 +5107,7 @@
 
 UninterpretedOption_NamePart::UninterpretedOption_NamePart()
   : ::google::protobuf::Message(),
+    _unknown_fields_(),
     _cached_size_(0),
     name_part_(const_cast< ::std::string*>(&_default_name_part_)),
     is_extension_(false) {
@@ -5045,6 +5118,7 @@
 
 UninterpretedOption_NamePart::UninterpretedOption_NamePart(const UninterpretedOption_NamePart& from)
   : ::google::protobuf::Message(),
+    _unknown_fields_(),
     _cached_size_(0),
     name_part_(const_cast< ::std::string*>(&_default_name_part_)),
     is_extension_(false) {
@@ -5254,7 +5328,9 @@
 const ::std::string UninterpretedOption::_default_string_value_;
 UninterpretedOption::UninterpretedOption()
   : ::google::protobuf::Message(),
+    _unknown_fields_(),
     _cached_size_(0),
+    name_(),
     identifier_value_(const_cast< ::std::string*>(&_default_identifier_value_)),
     positive_int_value_(GOOGLE_ULONGLONG(0)),
     negative_int_value_(GOOGLE_LONGLONG(0)),
@@ -5267,7 +5343,9 @@
 
 UninterpretedOption::UninterpretedOption(const UninterpretedOption& from)
   : ::google::protobuf::Message(),
+    _unknown_fields_(),
     _cached_size_(0),
+    name_(),
     identifier_value_(const_cast< ::std::string*>(&_default_identifier_value_)),
     positive_int_value_(GOOGLE_ULONGLONG(0)),
     negative_int_value_(GOOGLE_LONGLONG(0)),
