Эх сурвалжийг харах

Remove and forbid raw_svector_ostream::flush() calls.
After r244870 flush() will only compare two null pointers and return,
doing nothing but wasting run time. The call is not required any more
as the stream and its SmallString are always in sync.

Thanks to David Blaikie for reviewing.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244928 91177308-0d34-0410-b5e6-96231b3b80d8

Yaron Keren 10 жил өмнө
parent
commit
f49d6b8491

+ 0 - 1
lib/ARCMigrate/ARCMT.cpp

@@ -600,7 +600,6 @@ bool MigrationProcess::applyTransform(TransformFn trans,
     SmallString<512> newText;
     SmallString<512> newText;
     llvm::raw_svector_ostream vecOS(newText);
     llvm::raw_svector_ostream vecOS(newText);
     buf.write(vecOS);
     buf.write(vecOS);
-    vecOS.flush();
     std::unique_ptr<llvm::MemoryBuffer> memBuf(
     std::unique_ptr<llvm::MemoryBuffer> memBuf(
         llvm::MemoryBuffer::getMemBufferCopy(
         llvm::MemoryBuffer::getMemBufferCopy(
             StringRef(newText.data(), newText.size()), newFname));
             StringRef(newText.data(), newText.size()), newFname));

+ 0 - 2
lib/ARCMigrate/ObjCMT.cpp

@@ -1982,7 +1982,6 @@ void ObjCMigrateASTConsumer::HandleTranslationUnit(ASTContext &Ctx) {
     SmallString<512> newText;
     SmallString<512> newText;
     llvm::raw_svector_ostream vecOS(newText);
     llvm::raw_svector_ostream vecOS(newText);
     buf.write(vecOS);
     buf.write(vecOS);
-    vecOS.flush();
     std::unique_ptr<llvm::MemoryBuffer> memBuf(
     std::unique_ptr<llvm::MemoryBuffer> memBuf(
         llvm::MemoryBuffer::getMemBufferCopy(
         llvm::MemoryBuffer::getMemBufferCopy(
             StringRef(newText.data(), newText.size()), file->getName()));
             StringRef(newText.data(), newText.size()), file->getName()));
@@ -2215,7 +2214,6 @@ static std::string applyEditsToTemp(const FileEntry *FE,
   SmallString<512> NewText;
   SmallString<512> NewText;
   llvm::raw_svector_ostream OS(NewText);
   llvm::raw_svector_ostream OS(NewText);
   Buf->write(OS);
   Buf->write(OS);
-  OS.flush();
 
 
   SmallString<64> TempPath;
   SmallString<64> TempPath;
   int FD;
   int FD;

+ 0 - 2
lib/AST/ASTDiagnostic.cpp

@@ -445,8 +445,6 @@ void clang::FormatASTNodeDiagnosticArgument(
 
 
   }
   }
 
 
-  OS.flush();
-
   if (NeedQuotes) {
   if (NeedQuotes) {
     Output.insert(Output.begin()+OldEnd, '\'');
     Output.insert(Output.begin()+OldEnd, '\'');
     Output.push_back('\'');
     Output.push_back('\'');

+ 0 - 3
lib/AST/Expr.cpp

@@ -498,7 +498,6 @@ std::string PredefinedExpr::ComputeName(IdentType IT, const Decl *CurrentDecl) {
         else
         else
           MC->mangleName(ND, Out);
           MC->mangleName(ND, Out);
 
 
-        Out.flush();
         if (!Buffer.empty() && Buffer.front() == '\01')
         if (!Buffer.empty() && Buffer.front() == '\01')
           return Buffer.substr(1);
           return Buffer.substr(1);
         return Buffer.str();
         return Buffer.str();
@@ -660,7 +659,6 @@ std::string PredefinedExpr::ComputeName(IdentType IT, const Decl *CurrentDecl) {
 
 
     Out << Proto;
     Out << Proto;
 
 
-    Out.flush();
     return Name.str().str();
     return Name.str().str();
   }
   }
   if (const CapturedDecl *CD = dyn_cast<CapturedDecl>(CurrentDecl)) {
   if (const CapturedDecl *CD = dyn_cast<CapturedDecl>(CurrentDecl)) {
@@ -692,7 +690,6 @@ std::string PredefinedExpr::ComputeName(IdentType IT, const Decl *CurrentDecl) {
     MD->getSelector().print(Out);
     MD->getSelector().print(Out);
     Out <<  ']';
     Out <<  ']';
 
 
-    Out.flush();
     return Name.str().str();
     return Name.str().str();
   }
   }
   if (isa<TranslationUnitDecl>(CurrentDecl) && IT == PrettyFunction) {
   if (isa<TranslationUnitDecl>(CurrentDecl) && IT == PrettyFunction) {

+ 0 - 1
lib/AST/ItaniumMangle.cpp

@@ -2405,7 +2405,6 @@ void CXXNameMangler::mangleType(const ObjCObjectType *T) {
       StringRef name = I->getName();
       StringRef name = I->getName();
       QualOS << name.size() << name;
       QualOS << name.size() << name;
     }
     }
-    QualOS.flush();
     Out << 'U' << QualStr.size() << QualStr;
     Out << 'U' << QualStr.size() << QualStr;
   }
   }
 
 

+ 0 - 3
lib/AST/Mangle.cpp

@@ -206,7 +206,6 @@ void MangleContext::mangleCtorBlock(const CXXConstructorDecl *CD,
   SmallString<64> Buffer;
   SmallString<64> Buffer;
   llvm::raw_svector_ostream Out(Buffer);
   llvm::raw_svector_ostream Out(Buffer);
   mangleCXXCtor(CD, CT, Out);
   mangleCXXCtor(CD, CT, Out);
-  Out.flush();
   mangleFunctionBlock(*this, Buffer, BD, ResStream);
   mangleFunctionBlock(*this, Buffer, BD, ResStream);
 }
 }
 
 
@@ -216,7 +215,6 @@ void MangleContext::mangleDtorBlock(const CXXDestructorDecl *DD,
   SmallString<64> Buffer;
   SmallString<64> Buffer;
   llvm::raw_svector_ostream Out(Buffer);
   llvm::raw_svector_ostream Out(Buffer);
   mangleCXXDtor(DD, DT, Out);
   mangleCXXDtor(DD, DT, Out);
-  Out.flush();
   mangleFunctionBlock(*this, Buffer, BD, ResStream);
   mangleFunctionBlock(*this, Buffer, BD, ResStream);
 }
 }
 
 
@@ -253,7 +251,6 @@ void MangleContext::mangleBlock(const DeclContext *DC, const BlockDecl *BD,
       }
       }
     }
     }
   }
   }
-  Stream.flush();
   mangleFunctionBlock(*this, Buffer, BD, Out);
   mangleFunctionBlock(*this, Buffer, BD, Out);
 }
 }
 
 

+ 0 - 1
lib/AST/MicrosoftMangle.cpp

@@ -721,7 +721,6 @@ void MicrosoftCXXNameMangler::mangleUnqualifiedName(const NamedDecl *ND,
     llvm::raw_svector_ostream Stream(TemplateMangling);
     llvm::raw_svector_ostream Stream(TemplateMangling);
     MicrosoftCXXNameMangler Extra(Context, Stream);
     MicrosoftCXXNameMangler Extra(Context, Stream);
     Extra.mangleTemplateInstantiationName(TD, *TemplateArgs);
     Extra.mangleTemplateInstantiationName(TD, *TemplateArgs);
-    Stream.flush();
 
 
     mangleSourceName(TemplateMangling);
     mangleSourceName(TemplateMangling);
     return;
     return;

+ 0 - 1
lib/CodeGen/CGDebugInfo.cpp

@@ -613,7 +613,6 @@ static SmallString<256> getUniqueTagTypeName(const TagType *Ty,
   // a unique string for a type?
   // a unique string for a type?
   llvm::raw_svector_ostream Out(FullName);
   llvm::raw_svector_ostream Out(FullName);
   CGM.getCXXABI().getMangleContext().mangleCXXRTTIName(QualType(Ty, 0), Out);
   CGM.getCXXABI().getMangleContext().mangleCXXRTTIName(QualType(Ty, 0), Out);
-  Out.flush();
   return FullName;
   return FullName;
 }
 }
 
 

+ 0 - 1
lib/CodeGen/CGVTT.cpp

@@ -108,7 +108,6 @@ llvm::GlobalVariable *CodeGenVTables::GetAddrOfVTT(const CXXRecordDecl *RD) {
   llvm::raw_svector_ostream Out(OutName);
   llvm::raw_svector_ostream Out(OutName);
   cast<ItaniumMangleContext>(CGM.getCXXABI().getMangleContext())
   cast<ItaniumMangleContext>(CGM.getCXXABI().getMangleContext())
       .mangleCXXVTT(RD, Out);
       .mangleCXXVTT(RD, Out);
-  Out.flush();
   StringRef Name = OutName.str();
   StringRef Name = OutName.str();
 
 
   // This will also defer the definition of the VTT.
   // This will also defer the definition of the VTT.

+ 0 - 2
lib/CodeGen/CGVTables.cpp

@@ -44,7 +44,6 @@ llvm::Constant *CodeGenModule::GetAddrOfThunk(GlobalDecl GD,
                                                       Thunk.This, Out);
                                                       Thunk.This, Out);
   else
   else
     getCXXABI().getMangleContext().mangleThunk(MD, Thunk, Out);
     getCXXABI().getMangleContext().mangleThunk(MD, Thunk, Out);
-  Out.flush();
 
 
   llvm::Type *Ty = getTypes().GetFunctionTypeForVTable(GD);
   llvm::Type *Ty = getTypes().GetFunctionTypeForVTable(GD);
   return GetOrCreateLLVMFunction(Name, Ty, GD, /*ForVTable=*/true,
   return GetOrCreateLLVMFunction(Name, Ty, GD, /*ForVTable=*/true,
@@ -644,7 +643,6 @@ CodeGenVTables::GenerateConstructionVTable(const CXXRecordDecl *RD,
   cast<ItaniumMangleContext>(CGM.getCXXABI().getMangleContext())
   cast<ItaniumMangleContext>(CGM.getCXXABI().getMangleContext())
       .mangleCXXCtorVTable(RD, Base.getBaseOffset().getQuantity(),
       .mangleCXXCtorVTable(RD, Base.getBaseOffset().getQuantity(),
                            Base.getBase(), Out);
                            Base.getBase(), Out);
-  Out.flush();
   StringRef Name = OutName.str();
   StringRef Name = OutName.str();
 
 
   llvm::ArrayType *ArrayType = 
   llvm::ArrayType *ArrayType = 

+ 0 - 2
lib/CodeGen/CodeGenModule.cpp

@@ -2953,7 +2953,6 @@ CodeGenModule::GetAddrOfConstantStringFromLiteral(const StringLiteral *S,
       getCXXABI().getMangleContext().shouldMangleStringLiteral(S)) {
       getCXXABI().getMangleContext().shouldMangleStringLiteral(S)) {
     llvm::raw_svector_ostream Out(MangledNameBuffer);
     llvm::raw_svector_ostream Out(MangledNameBuffer);
     getCXXABI().getMangleContext().mangleStringLiteral(S, Out);
     getCXXABI().getMangleContext().mangleStringLiteral(S, Out);
-    Out.flush();
 
 
     LT = llvm::GlobalValue::LinkOnceODRLinkage;
     LT = llvm::GlobalValue::LinkOnceODRLinkage;
     GlobalVariableName = MangledNameBuffer;
     GlobalVariableName = MangledNameBuffer;
@@ -3041,7 +3040,6 @@ llvm::Constant *CodeGenModule::GetAddrOfGlobalTemporary(
   llvm::raw_svector_ostream Out(Name);
   llvm::raw_svector_ostream Out(Name);
   getCXXABI().getMangleContext().mangleReferenceTemporary(
   getCXXABI().getMangleContext().mangleReferenceTemporary(
       VD, E->getManglingNumber(), Out);
       VD, E->getManglingNumber(), Out);
-  Out.flush();
 
 
   APValue *Value = nullptr;
   APValue *Value = nullptr;
   if (E->getStorageDuration() == SD_Static) {
   if (E->getStorageDuration() == SD_Static) {

+ 0 - 2
lib/CodeGen/CodeGenTBAA.cpp

@@ -155,7 +155,6 @@ CodeGenTBAA::getTBAAInfo(QualType QTy) {
     SmallString<256> OutName;
     SmallString<256> OutName;
     llvm::raw_svector_ostream Out(OutName);
     llvm::raw_svector_ostream Out(OutName);
     MContext.mangleTypeName(QualType(ETy, 0), Out);
     MContext.mangleTypeName(QualType(ETy, 0), Out);
-    Out.flush();
     return MetadataCache[Ty] = createTBAAScalarType(OutName, getChar());
     return MetadataCache[Ty] = createTBAAScalarType(OutName, getChar());
   }
   }
 
 
@@ -271,7 +270,6 @@ CodeGenTBAA::getTBAAStructTypeInfo(QualType QTy) {
       // Don't use the mangler for C code.
       // Don't use the mangler for C code.
       llvm::raw_svector_ostream Out(OutName);
       llvm::raw_svector_ostream Out(OutName);
       MContext.mangleTypeName(QualType(Ty, 0), Out);
       MContext.mangleTypeName(QualType(Ty, 0), Out);
-      Out.flush();
     } else {
     } else {
       OutName = RD->getName();
       OutName = RD->getName();
     }
     }

+ 0 - 7
lib/CodeGen/ItaniumCXXABI.cpp

@@ -1439,7 +1439,6 @@ llvm::GlobalVariable *ItaniumCXXABI::getAddrOfVTable(const CXXRecordDecl *RD,
   SmallString<256> Name;
   SmallString<256> Name;
   llvm::raw_svector_ostream Out(Name);
   llvm::raw_svector_ostream Out(Name);
   getMangleContext().mangleCXXVTable(RD, Out);
   getMangleContext().mangleCXXVTable(RD, Out);
-  Out.flush();
 
 
   ItaniumVTableContext &VTContext = CGM.getItaniumVTableContext();
   ItaniumVTableContext &VTContext = CGM.getItaniumVTableContext();
   llvm::ArrayType *ArrayType = llvm::ArrayType::get(
   llvm::ArrayType *ArrayType = llvm::ArrayType::get(
@@ -1814,7 +1813,6 @@ void ItaniumCXXABI::EmitGuardedInit(CodeGenFunction &CGF,
     {
     {
       llvm::raw_svector_ostream out(guardName);
       llvm::raw_svector_ostream out(guardName);
       getMangleContext().mangleStaticGuardVariable(&D, out);
       getMangleContext().mangleStaticGuardVariable(&D, out);
-      out.flush();
     }
     }
 
 
     // Create the guard variable with a zero-initializer.
     // Create the guard variable with a zero-initializer.
@@ -2038,7 +2036,6 @@ ItaniumCXXABI::getOrCreateThreadLocalWrapper(const VarDecl *VD,
   {
   {
     llvm::raw_svector_ostream Out(WrapperName);
     llvm::raw_svector_ostream Out(WrapperName);
     getMangleContext().mangleItaniumThreadLocalWrapper(VD, Out);
     getMangleContext().mangleItaniumThreadLocalWrapper(VD, Out);
-    Out.flush();
   }
   }
 
 
   if (llvm::Value *V = CGM.getModule().getNamedValue(WrapperName))
   if (llvm::Value *V = CGM.getModule().getNamedValue(WrapperName))
@@ -2094,7 +2091,6 @@ void ItaniumCXXABI::EmitThreadLocalInitFuncs(
     {
     {
       llvm::raw_svector_ostream Out(InitFnName);
       llvm::raw_svector_ostream Out(InitFnName);
       getMangleContext().mangleItaniumThreadLocalInit(VD, Out);
       getMangleContext().mangleItaniumThreadLocalInit(VD, Out);
-      Out.flush();
     }
     }
 
 
     // If we have a definition for the variable, emit the initialization
     // If we have a definition for the variable, emit the initialization
@@ -2290,7 +2286,6 @@ llvm::GlobalVariable *ItaniumRTTIBuilder::GetAddrOfTypeName(
   SmallString<256> Name;
   SmallString<256> Name;
   llvm::raw_svector_ostream Out(Name);
   llvm::raw_svector_ostream Out(Name);
   CGM.getCXXABI().getMangleContext().mangleCXXRTTIName(Ty, Out);
   CGM.getCXXABI().getMangleContext().mangleCXXRTTIName(Ty, Out);
-  Out.flush();
 
 
   // We know that the mangled name of the type starts at index 4 of the
   // We know that the mangled name of the type starts at index 4 of the
   // mangled name of the typename, so we can just index into it in order to
   // mangled name of the typename, so we can just index into it in order to
@@ -2312,7 +2307,6 @@ ItaniumRTTIBuilder::GetAddrOfExternalRTTIDescriptor(QualType Ty) {
   SmallString<256> Name;
   SmallString<256> Name;
   llvm::raw_svector_ostream Out(Name);
   llvm::raw_svector_ostream Out(Name);
   CGM.getCXXABI().getMangleContext().mangleCXXRTTI(Ty, Out);
   CGM.getCXXABI().getMangleContext().mangleCXXRTTI(Ty, Out);
-  Out.flush();
 
 
   // Look for an existing global.
   // Look for an existing global.
   llvm::GlobalVariable *GV = CGM.getModule().getNamedGlobal(Name);
   llvm::GlobalVariable *GV = CGM.getModule().getNamedGlobal(Name);
@@ -2711,7 +2705,6 @@ llvm::Constant *ItaniumRTTIBuilder::BuildTypeInfo(QualType Ty, bool Force) {
   SmallString<256> Name;
   SmallString<256> Name;
   llvm::raw_svector_ostream Out(Name);
   llvm::raw_svector_ostream Out(Name);
   CGM.getCXXABI().getMangleContext().mangleCXXRTTI(Ty, Out);
   CGM.getCXXABI().getMangleContext().mangleCXXRTTI(Ty, Out);
-  Out.flush();
 
 
   llvm::GlobalVariable *OldGV = CGM.getModule().getNamedGlobal(Name);
   llvm::GlobalVariable *OldGV = CGM.getModule().getNamedGlobal(Name);
   if (OldGV && !OldGV->isDeclaration()) {
   if (OldGV && !OldGV->isDeclaration()) {

+ 0 - 5
lib/CodeGen/MicrosoftCXXABI.cpp

@@ -257,7 +257,6 @@ public:
     SmallString<256> OutName;
     SmallString<256> OutName;
     llvm::raw_svector_ostream Out(OutName);
     llvm::raw_svector_ostream Out(OutName);
     getMangleContext().mangleCXXVirtualDisplacementMap(SrcRD, DstRD, Out);
     getMangleContext().mangleCXXVirtualDisplacementMap(SrcRD, DstRD, Out);
-    Out.flush();
     StringRef MangledName = OutName.str();
     StringRef MangledName = OutName.str();
 
 
     if (auto *VDispMap = CGM.getModule().getNamedGlobal(MangledName))
     if (auto *VDispMap = CGM.getModule().getNamedGlobal(MangledName))
@@ -1854,7 +1853,6 @@ llvm::Function *MicrosoftCXXABI::EmitVirtualMemPtrThunk(
   SmallString<256> ThunkName;
   SmallString<256> ThunkName;
   llvm::raw_svector_ostream Out(ThunkName);
   llvm::raw_svector_ostream Out(ThunkName);
   getMangleContext().mangleVirtualMemPtrThunk(MD, Out);
   getMangleContext().mangleVirtualMemPtrThunk(MD, Out);
-  Out.flush();
 
 
   // If the thunk has been generated previously, just return it.
   // If the thunk has been generated previously, just return it.
   if (llvm::GlobalValue *GV = CGM.getModule().getNamedValue(ThunkName))
   if (llvm::GlobalValue *GV = CGM.getModule().getNamedValue(ThunkName))
@@ -1930,7 +1928,6 @@ MicrosoftCXXABI::getAddrOfVBTable(const VPtrInfo &VBT, const CXXRecordDecl *RD,
   SmallString<256> OutName;
   SmallString<256> OutName;
   llvm::raw_svector_ostream Out(OutName);
   llvm::raw_svector_ostream Out(OutName);
   getMangleContext().mangleCXXVBTable(RD, VBT.MangledPath, Out);
   getMangleContext().mangleCXXVBTable(RD, VBT.MangledPath, Out);
-  Out.flush();
   StringRef Name = OutName.str();
   StringRef Name = OutName.str();
 
 
   llvm::ArrayType *VBTableType =
   llvm::ArrayType *VBTableType =
@@ -2342,7 +2339,6 @@ void MicrosoftCXXABI::EmitGuardedInit(CodeGenFunction &CGF, const VarDecl &D,
                                                                Out);
                                                                Out);
       else
       else
         getMangleContext().mangleStaticGuardVariable(&D, Out);
         getMangleContext().mangleStaticGuardVariable(&D, Out);
-      Out.flush();
     }
     }
 
 
     // Create the guard variable with a zero-initializer. Just absorb linkage,
     // Create the guard variable with a zero-initializer. Just absorb linkage,
@@ -3747,7 +3743,6 @@ MicrosoftCXXABI::getAddrOfCXXCtorClosure(const CXXConstructorDecl *CD,
   SmallString<256> ThunkName;
   SmallString<256> ThunkName;
   llvm::raw_svector_ostream Out(ThunkName);
   llvm::raw_svector_ostream Out(ThunkName);
   getMangleContext().mangleCXXCtor(CD, CT, Out);
   getMangleContext().mangleCXXCtor(CD, CT, Out);
-  Out.flush();
 
 
   // If the thunk has been generated previously, just return it.
   // If the thunk has been generated previously, just return it.
   if (llvm::GlobalValue *GV = CGM.getModule().getNamedValue(ThunkName))
   if (llvm::GlobalValue *GV = CGM.getModule().getNamedValue(ThunkName))

+ 0 - 1
lib/CodeGen/ObjectFilePCHContainerOperations.cpp

@@ -139,7 +139,6 @@ public:
       clang::EmitBackendOutput(Diags, CodeGenOpts, TargetOpts, LangOpts,
       clang::EmitBackendOutput(Diags, CodeGenOpts, TargetOpts, LangOpts,
                                Ctx.getTargetInfo().getDataLayoutString(),
                                Ctx.getTargetInfo().getDataLayoutString(),
                                M.get(), BackendAction::Backend_EmitLL, &OS);
                                M.get(), BackendAction::Backend_EmitLL, &OS);
-      OS.flush();
       llvm::dbgs() << Buffer;
       llvm::dbgs() << Buffer;
     });
     });
 
 

+ 0 - 3
lib/Index/CommentToXML.cpp

@@ -481,7 +481,6 @@ void CommentASTToHTMLConverter::visitFullComment(const FullComment *C) {
     Result << "</div>";
     Result << "</div>";
   }
   }
 
 
-  Result.flush();
 }
 }
 
 
 void CommentASTToHTMLConverter::visitNonStandaloneParagraphComment(
 void CommentASTToHTMLConverter::visitNonStandaloneParagraphComment(
@@ -1078,8 +1077,6 @@ void CommentASTToXMLConverter::visitFullComment(const FullComment *C) {
   }
   }
 
 
   Result << RootEndTag;
   Result << RootEndTag;
-
-  Result.flush();
 }
 }
 
 
 void CommentASTToXMLConverter::appendToResultWithXMLEscaping(StringRef S) {
 void CommentASTToXMLConverter::appendToResultWithXMLEscaping(StringRef S) {

+ 0 - 3
lib/Index/USRGeneration.cpp

@@ -156,10 +156,8 @@ public:
 //===----------------------------------------------------------------------===//
 //===----------------------------------------------------------------------===//
 
 
 bool USRGenerator::EmitDeclName(const NamedDecl *D) {
 bool USRGenerator::EmitDeclName(const NamedDecl *D) {
-  Out.flush();
   const unsigned startSize = Buf.size();
   const unsigned startSize = Buf.size();
   D->printName(Out);
   D->printName(Out);
-  Out.flush();
   const unsigned endSize = Buf.size();
   const unsigned endSize = Buf.size();
   return startSize == endSize;
   return startSize == endSize;
 }
 }
@@ -462,7 +460,6 @@ void USRGenerator::VisitTagDecl(const TagDecl *D) {
   }
   }
   
   
   Out << '@';
   Out << '@';
-  Out.flush();
   assert(Buf.size() > 0);
   assert(Buf.size() > 0);
   const unsigned off = Buf.size() - 1;
   const unsigned off = Buf.size() - 1;
 
 

+ 0 - 1
lib/Sema/SemaDecl.cpp

@@ -11461,7 +11461,6 @@ static FixItHint createFriendTagNNSFixIt(Sema &SemaRef, NamedDecl *ND, Scope *S,
   std::reverse(Namespaces.begin(), Namespaces.end());
   std::reverse(Namespaces.begin(), Namespaces.end());
   for (auto *II : Namespaces)
   for (auto *II : Namespaces)
     OS << II->getName() << "::";
     OS << II->getName() << "::";
-  OS.flush();
   return FixItHint::CreateInsertion(NameLoc, Insertion);
   return FixItHint::CreateInsertion(NameLoc, Insertion);
 }
 }
 
 

+ 0 - 1
lib/Sema/SemaExceptionSpec.cpp

@@ -318,7 +318,6 @@ bool Sema::CheckEquivalentExceptionSpec(FunctionDecl *Old, FunctionDecl *New) {
   default:
   default:
     llvm_unreachable("This spec type is compatible with none.");
     llvm_unreachable("This spec type is compatible with none.");
   }
   }
-  OS.flush();
 
 
   SourceLocation FixItLoc;
   SourceLocation FixItLoc;
   if (TypeSourceInfo *TSInfo = New->getTypeSourceInfo()) {
   if (TypeSourceInfo *TSInfo = New->getTypeSourceInfo()) {

+ 0 - 1
lib/StaticAnalyzer/Checkers/DereferenceChecker.cpp

@@ -159,7 +159,6 @@ void DereferenceChecker::reportBug(ProgramStateRef State, const Stmt *S,
     break;
     break;
   }
   }
 
 
-  os.flush();
   auto report = llvm::make_unique<BugReport>(
   auto report = llvm::make_unique<BugReport>(
       *BT_null, buf.empty() ? BT_null->getDescription() : StringRef(buf), N);
       *BT_null, buf.empty() ? BT_null->getDescription() : StringRef(buf), N);
 
 

+ 0 - 1
lib/StaticAnalyzer/Checkers/LLVMConventionsChecker.cpp

@@ -276,7 +276,6 @@ void ASTFieldVisitor::ReportError(QualType T) {
     }
     }
   }
   }
   os << " (type " << FieldChain.back()->getType().getAsString() << ")";
   os << " (type " << FieldChain.back()->getType().getAsString() << ")";
-  os.flush();
 
 
   // Note that this will fire for every translation unit that uses this
   // Note that this will fire for every translation unit that uses this
   // class.  This is suboptimal, but at least scan-build will merge
   // class.  This is suboptimal, but at least scan-build will merge

+ 0 - 2
tools/libclang/CIndex.cpp

@@ -7364,8 +7364,6 @@ Logger &cxindex::Logger::operator<<(const llvm::format_object_base &Fmt) {
 static llvm::ManagedStatic<llvm::sys::Mutex> LoggingMutex;
 static llvm::ManagedStatic<llvm::sys::Mutex> LoggingMutex;
 
 
 cxindex::Logger::~Logger() {
 cxindex::Logger::~Logger() {
-  LogOS.flush();
-
   llvm::sys::ScopedLock L(*LoggingMutex);
   llvm::sys::ScopedLock L(*LoggingMutex);
 
 
   static llvm::TimeRecord sBeginTR = llvm::TimeRecord::getCurrentTime();
   static llvm::TimeRecord sBeginTR = llvm::TimeRecord::getCurrentTime();