Merge remote-tracking branch 'origin/swift-3.1-branch' into stable

* origin/swift-3.1-branch:
  [API Notes] Fix serialization of FactoryAsInit data.
diff --git a/lib/APINotes/APINotesWriter.cpp b/lib/APINotes/APINotesWriter.cpp
index 36c504a..6debe99 100644
--- a/lib/APINotes/APINotesWriter.cpp
+++ b/lib/APINotes/APINotesWriter.cpp
@@ -721,9 +721,9 @@
     }
 
     void emitUnversionedInfo(raw_ostream &out, const ObjCMethodInfo &info) {
-      uint8_t payload = info.FactoryAsInit << 2;
-      payload = (payload | info.DesignatedInit) << 1;
-      payload = (payload | info.Required);
+      uint8_t payload = info.FactoryAsInit;
+      payload = (payload << 1) | info.DesignatedInit;
+      payload = (payload << 1) | info.Required;
       endian::Writer<little> writer(out);
       writer.write<uint8_t>(payload);
 
diff --git a/test/APINotes/Inputs/roundtrip.apinotes b/test/APINotes/Inputs/roundtrip.apinotes
index c0e91f9..13e08a1 100644
--- a/test/APINotes/Inputs/roundtrip.apinotes
+++ b/test/APINotes/Inputs/roundtrip.apinotes
@@ -12,6 +12,13 @@
     SwiftBridge:     ''
     NSErrorDomain:   ''
     Methods:         
+      - Selector:        'cellWithImage:'
+        MethodKind:      Class
+        Availability:    available
+        AvailabilityMsg: ''
+        SwiftPrivate:    false
+        SwiftName:       ''
+        FactoryAsInit:   C
       - Selector:        init
         MethodKind:      Instance
         NullabilityOfRet: U