Revert 'Fix a typo 'iff' => 'if''. iff is an abreviation of if and only if. See: http://en.wikipedia.org/wiki/If_and_only_if Commit 164766

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164769 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGBuiltin.cpp b/lib/CodeGen/CGBuiltin.cpp
index 4a3b3e9..7a0abd7 100644
--- a/lib/CodeGen/CGBuiltin.cpp
+++ b/lib/CodeGen/CGBuiltin.cpp
@@ -597,7 +597,7 @@
   }
 
   case Builtin::BI__builtin___memcpy_chk: {
-    // fold __builtin_memcpy_chk(x, y, cst1, cst2) to memcpy if cst1<=cst2.
+    // fold __builtin_memcpy_chk(x, y, cst1, cst2) to memcpy iff cst1<=cst2.
     llvm::APSInt Size, DstSize;
     if (!E->getArg(2)->EvaluateAsInt(Size, CGM.getContext()) ||
         !E->getArg(3)->EvaluateAsInt(DstSize, CGM.getContext()))
@@ -624,7 +624,7 @@
   }
 
   case Builtin::BI__builtin___memmove_chk: {
-    // fold __builtin_memmove_chk(x, y, cst1, cst2) to memmove if cst1<=cst2.
+    // fold __builtin_memmove_chk(x, y, cst1, cst2) to memmove iff cst1<=cst2.
     llvm::APSInt Size, DstSize;
     if (!E->getArg(2)->EvaluateAsInt(Size, CGM.getContext()) ||
         !E->getArg(3)->EvaluateAsInt(DstSize, CGM.getContext()))
@@ -663,7 +663,7 @@
     return RValue::get(Dest.first);
   }
   case Builtin::BI__builtin___memset_chk: {
-    // fold __builtin_memset_chk(x, y, cst1, cst2) to memset if cst1<=cst2.
+    // fold __builtin_memset_chk(x, y, cst1, cst2) to memset iff cst1<=cst2.
     llvm::APSInt Size, DstSize;
     if (!E->getArg(2)->EvaluateAsInt(Size, CGM.getContext()) ||
         !E->getArg(3)->EvaluateAsInt(DstSize, CGM.getContext()))
diff --git a/lib/CodeGen/CGDecl.cpp b/lib/CodeGen/CGDecl.cpp
index 88a252a..b9489e3 100644
--- a/lib/CodeGen/CGDecl.cpp
+++ b/lib/CodeGen/CGDecl.cpp
@@ -1179,7 +1179,7 @@
   // If we haven't chosen a more specific destroyer, use the default.
   if (!destroyer) destroyer = getDestroyer(dtorKind);
 
-  // Use an EH cleanup in array destructors if the destructor itself
+  // Use an EH cleanup in array destructors iff the destructor itself
   // is being pushed as an EH cleanup.
   bool useEHCleanup = (cleanupKind & EHCleanup);
   EHStack.pushCleanup<DestroyObject>(cleanupKind, addr, type, destroyer,
diff --git a/lib/CodeGen/CGObjCMac.cpp b/lib/CodeGen/CGObjCMac.cpp
index e9aa3b7..08e706c 100644
--- a/lib/CodeGen/CGObjCMac.cpp
+++ b/lib/CodeGen/CGObjCMac.cpp
@@ -1028,8 +1028,8 @@
   /// EmitMethodDescList - Emit a method description list for a list of
   /// method declarations.
   ///  - TypeName: The name for the type containing the methods.
-  ///  - IsProtocol: True if these methods are for a protocol.
-  ///  - ClassMethds: True if these are class methods.
+  ///  - IsProtocol: True iff these methods are for a protocol.
+  ///  - ClassMethds: True iff these are class methods.
   ///  - Required: When true, only "required" methods are
   ///    listed. Similarly, when false only "optional" methods are
   ///    listed. For classes this should always be true.
diff --git a/lib/CodeGen/CGRTTI.cpp b/lib/CodeGen/CGRTTI.cpp
index ee1a770..e46423b 100644
--- a/lib/CodeGen/CGRTTI.cpp
+++ b/lib/CodeGen/CGRTTI.cpp
@@ -347,7 +347,7 @@
 
 // CanUseSingleInheritance - Return whether the given record decl has a "single, 
 // public, non-virtual base at offset zero (i.e. the derived class is dynamic 
-// if the base is)", according to Itanium C++ ABI, 2.95p6b.
+// iff the base is)", according to Itanium C++ ABI, 2.95p6b.
 static bool CanUseSingleInheritance(const CXXRecordDecl *RD) {
   // Check the number of bases.
   if (RD->getNumBases() != 1)
@@ -364,7 +364,7 @@
   if (Base->getAccessSpecifier() != AS_public)
     return false;
   
-  // Check that the class is dynamic if the base is.
+  // Check that the class is dynamic iff the base is.
   const CXXRecordDecl *BaseDecl = 
     cast<CXXRecordDecl>(Base->getType()->getAs<RecordType>()->getDecl());
   if (!BaseDecl->isEmpty() && 
diff --git a/lib/CodeGen/CGVTables.h b/lib/CodeGen/CGVTables.h
index f5b59c8..828330e 100644
--- a/lib/CodeGen/CGVTables.h
+++ b/lib/CodeGen/CGVTables.h
@@ -58,7 +58,7 @@
 
   /// MaybeEmitThunkAvailableExternally - Try to emit the given thunk with
   /// available_externally linkage to allow for inlining of thunks.
-  /// This will be done if optimizations are enabled and the member function
+  /// This will be done iff optimizations are enabled and the member function
   /// doesn't contain any incomplete types.
   void MaybeEmitThunkAvailableExternally(GlobalDecl GD, const ThunkInfo &Thunk);
 
diff --git a/lib/CodeGen/CodeGenFunction.h b/lib/CodeGen/CodeGenFunction.h
index a31a64e..fc930ec 100644
--- a/lib/CodeGen/CodeGenFunction.h
+++ b/lib/CodeGen/CodeGenFunction.h
@@ -583,7 +583,7 @@
   JumpDest ReturnBlock;
 
   /// ReturnValue - The temporary alloca to hold the return value. This is null
-  /// if the function has no return value.
+  /// iff the function has no return value.
   llvm::Value *ReturnValue;
 
   /// AllocaInsertPoint - This is an instruction in the entry block before which
@@ -1655,7 +1655,7 @@
 
   /// EmitAggregateCopy - Emit an aggrate copy.
   ///
-  /// \param isVolatile - True if either the source or the destination is
+  /// \param isVolatile - True iff either the source or the destination is
   /// volatile.
   void EmitAggregateCopy(llvm::Value *DestPtr, llvm::Value *SrcPtr,
                          QualType EltTy, bool isVolatile=false,
diff --git a/lib/CodeGen/CodeGenModule.h b/lib/CodeGen/CodeGenModule.h
index 0e15e7b..6e81693 100644
--- a/lib/CodeGen/CodeGenModule.h
+++ b/lib/CodeGen/CodeGenModule.h
@@ -372,7 +372,7 @@
     return *ObjCRuntime;
   }
 
-  /// hasObjCRuntime() - Return true if an Objective-C runtime has
+  /// hasObjCRuntime() - Return true iff an Objective-C runtime has
   /// been configured.
   bool hasObjCRuntime() { return !!ObjCRuntime; }
 
@@ -788,15 +788,15 @@
   /// which only apply to a function definintion.
   void SetLLVMFunctionAttributesForDefinition(const Decl *D, llvm::Function *F);
 
-  /// ReturnTypeUsesSRet - Return true if the given type uses 'sret' when used
+  /// ReturnTypeUsesSRet - Return true iff the given type uses 'sret' when used
   /// as a return type.
   bool ReturnTypeUsesSRet(const CGFunctionInfo &FI);
 
-  /// ReturnTypeUsesFPRet - Return true if the given type uses 'fpret' when
+  /// ReturnTypeUsesFPRet - Return true iff the given type uses 'fpret' when
   /// used as a return type.
   bool ReturnTypeUsesFPRet(QualType ResultType);
 
-  /// ReturnTypeUsesFP2Ret - Return true if the given type uses 'fp2ret' when
+  /// ReturnTypeUsesFP2Ret - Return true iff the given type uses 'fp2ret' when
   /// used as a return type.
   bool ReturnTypeUsesFP2Ret(QualType ResultType);
 
diff --git a/lib/CodeGen/CodeGenTBAA.cpp b/lib/CodeGen/CodeGenTBAA.cpp
index 3d5725d..bab60af 100644
--- a/lib/CodeGen/CodeGenTBAA.cpp
+++ b/lib/CodeGen/CodeGenTBAA.cpp
@@ -135,7 +135,7 @@
   // Enum types are distinct types. In C++ they have "underlying types",
   // however they aren't related for TBAA.
   if (const EnumType *ETy = dyn_cast<EnumType>(Ty)) {
-    // In C mode, two anonymous enums are compatible if their members
+    // In C mode, two anonymous enums are compatible iff their members
     // are the same -- see C99 6.2.7p1. For now, be conservative. We could
     // theoretically implement this by combining information about all the
     // members into a single identifying MDNode.
diff --git a/lib/CodeGen/TargetInfo.cpp b/lib/CodeGen/TargetInfo.cpp
index 15ccfd5..419ce02 100644
--- a/lib/CodeGen/TargetInfo.cpp
+++ b/lib/CodeGen/TargetInfo.cpp
@@ -109,7 +109,7 @@
 
 static bool isEmptyRecord(ASTContext &Context, QualType T, bool AllowArrays);
 
-/// isEmptyField - Return true if a the field is "empty", that is it
+/// isEmptyField - Return true iff a the field is "empty", that is it
 /// is an unnamed bit-field or an (array of) empty record(s).
 static bool isEmptyField(ASTContext &Context, const FieldDecl *FD,
                          bool AllowArrays) {
@@ -141,7 +141,7 @@
   return isEmptyRecord(Context, FT, AllowArrays);
 }
 
-/// isEmptyRecord - Return true if a structure contains only empty
+/// isEmptyRecord - Return true iff a structure contains only empty
 /// fields. Note that a structure with a flexible array member is not
 /// considered empty.
 static bool isEmptyRecord(ASTContext &Context, QualType T, bool AllowArrays) {
@@ -1070,7 +1070,7 @@
   /// be passed in Memory then at least the classification of \arg Lo
   /// will be Memory.
   ///
-  /// The \arg Lo class will be NoClass if the argument is ignored.
+  /// The \arg Lo class will be NoClass iff the argument is ignored.
   ///
   /// If the \arg Lo class is ComplexX87, then the \arg Hi class will
   /// also be ComplexX87.
diff --git a/lib/Driver/Option.cpp b/lib/Driver/Option.cpp
index 6a3418f..3be141e 100644
--- a/lib/Driver/Option.cpp
+++ b/lib/Driver/Option.cpp
@@ -120,7 +120,7 @@
     return A;
   }
   case SeparateClass:
-    // Matches if this is an exact match.
+    // Matches iff this is an exact match.
     // FIXME: Avoid strlen.
     if (getName().size() != strlen(Args.getArgString(Index)))
       return 0;
@@ -132,7 +132,7 @@
     return new Arg(getUnaliasedOption(),
                    Index - 2, Args.getArgString(Index - 1));
   case MultiArgClass: {
-    // Matches if this is an exact match.
+    // Matches iff this is an exact match.
     // FIXME: Avoid strlen.
     if (getName().size() != strlen(Args.getArgString(Index)))
       return 0;
diff --git a/lib/Frontend/TextDiagnostic.cpp b/lib/Frontend/TextDiagnostic.cpp
index d872e42..a8a5613 100644
--- a/lib/Frontend/TextDiagnostic.cpp
+++ b/lib/Frontend/TextDiagnostic.cpp
@@ -88,7 +88,7 @@
 /// \param SourceLine The line of source
 /// \param i Pointer to byte index,
 /// \param TabStop used to expand tabs
-/// \return pair(printable text, 'true' if original text was printable)
+/// \return pair(printable text, 'true' iff original text was printable)
 ///
 static std::pair<SmallString<16>, bool>
 printableTextForNextCharacter(StringRef SourceLine, size_t *i,
diff --git a/lib/Sema/AnalysisBasedWarnings.cpp b/lib/Sema/AnalysisBasedWarnings.cpp
index 2b7d4be..a3aee9a 100644
--- a/lib/Sema/AnalysisBasedWarnings.cpp
+++ b/lib/Sema/AnalysisBasedWarnings.cpp
@@ -87,10 +87,10 @@
 /// CheckFallThrough - Check that we don't fall off the end of a
 /// Statement that should return a value.
 ///
-/// \returns AlwaysFallThrough if we always fall off the end of the statement,
-/// MaybeFallThrough if we might or might not fall off the end,
-/// NeverFallThroughOrReturn if we never fall off the end of the statement or
-/// return.  We assume NeverFallThrough if we never fall off the end of the
+/// \returns AlwaysFallThrough iff we always fall off the end of the statement,
+/// MaybeFallThrough iff we might or might not fall off the end,
+/// NeverFallThroughOrReturn iff we never fall off the end of the statement or
+/// return.  We assume NeverFallThrough iff we never fall off the end of the
 /// statement but we may return.  We assume that functions not marked noreturn
 /// will return.
 static ControlFlowKind CheckFallThrough(AnalysisDeclContext &AC) {
diff --git a/lib/Sema/SemaAccess.cpp b/lib/Sema/SemaAccess.cpp
index ddb5e4e..58b1a51 100644
--- a/lib/Sema/SemaAccess.cpp
+++ b/lib/Sema/SemaAccess.cpp
@@ -918,7 +918,7 @@
 ///     let AccessToBase = Merge(Access(B_i, B_{i+1}), ACAB(i+1)) in
 ///     if Accessible(B_i, AccessToBase) then public else AccessToBase
 ///
-/// B is an accessible base of N at R if ACAB(1) = public.
+/// B is an accessible base of N at R iff ACAB(1) = public.
 ///
 /// \param FinalAccess the access of the "final step", or AS_public if
 ///   there is no final step.
diff --git a/lib/Sema/SemaChecking.cpp b/lib/Sema/SemaChecking.cpp
index 0fa8748..7951a71 100644
--- a/lib/Sema/SemaChecking.cpp
+++ b/lib/Sema/SemaChecking.cpp
@@ -5366,7 +5366,7 @@
 /// Consider whether capturing the given variable can possibly lead to
 /// a retain cycle.
 static bool considerVariable(VarDecl *var, Expr *ref, RetainCycleOwner &owner) {
-  // In ARC, it's captured strongly if the variable has __strong
+  // In ARC, it's captured strongly iff the variable has __strong
   // lifetime.  In MRR, it's captured strongly if the variable is
   // __block and has an appropriate type.
   if (var->getType().getObjCLifetime() != Qualifiers::OCL_Strong)
diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp
index 17db68e..01aaf8b 100644
--- a/lib/Sema/SemaDecl.cpp
+++ b/lib/Sema/SemaDecl.cpp
@@ -4799,7 +4799,7 @@
 /// or performing typo correction if there are no previous declarations with
 /// the same name.
 ///
-/// Returns a NamedDecl if typo correction was performed and substituting in
+/// Returns a NamedDecl iff typo correction was performed and substituting in
 /// the new declaration name does not cause new errors.
 static NamedDecl* DiagnoseInvalidRedeclaration(
     Sema &SemaRef, LookupResult &Previous, FunctionDecl *NewFD,
@@ -8237,7 +8237,7 @@
 /// \brief Determine if tag kind is a class-key compatible with
 /// class for redeclaration (class, struct, or __interface).
 ///
-/// \returns true if the tag kind is compatible.
+/// \returns true iff the tag kind is compatible.
 static bool isClassCompatTagKind(TagTypeKind Tag)
 {
   return Tag == TTK_Struct || Tag == TTK_Class || Tag == TTK_Interface;
diff --git a/lib/StaticAnalyzer/Checkers/MacOSKeychainAPIChecker.cpp b/lib/StaticAnalyzer/Checkers/MacOSKeychainAPIChecker.cpp
index b4a2210..21db9e6 100644
--- a/lib/StaticAnalyzer/Checkers/MacOSKeychainAPIChecker.cpp
+++ b/lib/StaticAnalyzer/Checkers/MacOSKeychainAPIChecker.cpp
@@ -240,8 +240,8 @@
 // 1) noErr / [0]
 // 2) someErr / [1, inf]
 // 3) unknown
-// If noError, returns true if (1).
-// If !noError, returns true if (2).
+// If noError, returns true iff (1).
+// If !noError, returns true iff (2).
 bool MacOSKeychainAPIChecker::definitelyReturnedError(SymbolRef RetSym,
                                                       ProgramStateRef State,
                                                       SValBuilder &Builder,