r175895 - Streamify FormatASTNodeDiagnosticArgument.

Anna Zaks ganna at apple.com
Fri Feb 22 16:05:25 PST 2013


This is failing on a public bot as well:
http://bb.pgr.jp/builders/cmake-clang-x64-msc16-R

Anna.
On Feb 22, 2013, at 10:49 AM, Anna Zaks <ganna at apple.com> wrote:

> Benjamin,
> 
> Your commits (175895, 175894, 175896) are breaking our internal MSVC build with errors like these:
> 
> 279>CheckerRegistration.cpp
> 279>.\llvm\tools\clang\include\clang/AST/Decl.h(176) : error C2027: use of undefined type 'llvm::raw_ostream'
> 279>        .\llvm\tools\clang\include\clang/Basic/LLVM.h(47) : see declaration of 'llvm::raw_ostream'
> 279>.\llvm\tools\clang\include\clang/AST/Decl.h(176) : error C2027: use of undefined type 'llvm::raw_ostream'
> 279>        .\llvm\tools\clang\include\clang/Basic/LLVM.h(47) : see declaration of 'llvm::raw_ostream'
> 279>.\llvm\include\llvm/Support/raw_ostream.h(309) : error C2504: 'llvm::raw_ostream' : base class undefined
> 279>.\llvm\include\llvm/Support/raw_ostream.h(441) : error C2504: 'llvm::raw_ostream' : base class undefined
> 279>.\llvm\include\llvm/Support/raw_ostream.h(457) : error C3861: 'flush': identifier not found
> 279>.\llvm\include\llvm/Support/raw_ostream.h(465) : error C2504: 'llvm::raw_ostream' : base class undefined
> 279>.\llvm\include\llvm/Support/raw_ostream.h(493) : error C2504: 'llvm::raw_ostream' : base class undefined
> 275>Performing Pre-Link Event...
> ..
> 281>VariableNaming.cpp
> 279>.\llvm\include\llvm/Support/raw_ostream.h(309) : error C2504: 'llvm::raw_ostream' : base class undefined
> 279>.\llvm\include\llvm/Support/raw_ostream.h(441) : error C2504: 'llvm::raw_ostream' : base class undefined
> 279>.\llvm\include\llvm/Support/raw_ostream.h(457) : error C3861: 'flush': identifier not found
> 279>.\llvm\include\llvm/Support/raw_ostream.h(465) : error C2504: 'llvm::raw_ostream' : base class undefined
> 279>.\llvm\include\llvm/Support/raw_ostream.h(493) : error C2504: 'llvm::raw_ostream' : base class undefined
> 283>RemoveCStrCalls.cpp
> 279>..\..\..\..\..\..\tools\clang\lib\StaticAnalyzer\Frontend\AnalysisConsumer.cpp(96) : error C2678: binary '<<' : no operator found which takes a left-hand operand of type 'llvm::raw_svector_ostream' (or there is no acceptable conversion)
> 279>        .\llvm\include\llvm/ADT/APInt.h(1576): could be 'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::APInt &)' [found using argument-dependent lookup]
> 279>        .\llvm\include\llvm/ADT/APSInt.h(305): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::APSInt &)' [found using argument-dependent lookup]
> 279>        .\llvm\include\llvm/ADT/Twine.h(516): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::Twine &)' [found using argument-dependent lookup]
> 279>        .\llvm\tools\clang\include\clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h(668): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const clang::ento::SymExpr *)' [found using argument-dependent lookup]
> 279>        .\llvm\tools\clang\include\clang/StaticAnalyzer/Core/PathSensitive/SVals.h(539): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,clang::ento::SVal)' [found using argument-dependent lookup]
> 279>        .\llvm\tools\clang\include\clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h(1290): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const clang::ento::MemRegion *)' [found using argument-dependent lookup]
> 279>        .\llvm\tools\clang\include\clang/Basic/Diagnostic.h(988): or       'const clang::DiagnosticBuilder &clang::operator <<(const clang::DiagnosticBuilder &,llvm::StringRef)'
> 279>        .\llvm\tools\clang\include\clang/Basic/Diagnostic.h(994): or       'const clang::DiagnosticBuilder &clang::operator <<(const clang::DiagnosticBuilder &,const char *)'
> 279>        .\llvm\tools\clang\include\clang/Basic/Diagnostic.h(1001): or       'const clang::DiagnosticBuilder &clang::operator <<(const clang::DiagnosticBuilder &,int)'
> 279>        .\llvm\tools\clang\include\clang/Basic/Diagnostic.h(1006): or       'const clang::DiagnosticBuilder &clang::operator <<(const clang::DiagnosticBuilder &,bool)'
> 279>        .\llvm\tools\clang\include\clang/Basic/Diagnostic.h(1011): or       'const clang::DiagnosticBuilder &clang::operator <<(const clang::DiagnosticBuilder &,unsigned int)'
> 279>        .\llvm\tools\clang\include\clang/Basic/Diagnostic.h(1017): or       'const clang::DiagnosticBuilder &clang::operator <<(const clang::DiagnosticBuilder &,const clang::IdentifierInfo *)'
> 279>        .\llvm\tools\clang\include\clang/Basic/Diagnostic.h(1038): or       'const clang::DiagnosticBuilder &clang::operator <<(const clang::DiagnosticBuilder &,const clang::SourceRange &)'
> 279>        .\llvm\tools\clang\include\clang/Basic/Diagnostic.h(1044): or       'const clang::DiagnosticBuilder &clang::operator <<(const clang::DiagnosticBuilder &,const clang::CharSourceRange &)'
> 279>        .\llvm\tools\clang\include\clang/Basic/Diagnostic.h(1050): or       'const clang::DiagnosticBuilder &clang::operator <<(const clang::DiagnosticBuilder &,const clang::FixItHint &)'
> 279>        .\llvm\tools\clang\include\clang/Basic/PartialDiagnostic.h(390): or       'const clang::DiagnosticBuilder &clang::operator <<(const clang::DiagnosticBuilder &,const clang::PartialDiagnostic &)'
> 279>        .\llvm\tools\clang\include\clang/AST/DeclarationName.h(537): or       'const clang::DiagnosticBuilder &clang::operator <<(const clang::DiagnosticBuilder &,clang::DeclarationName)'
> 279>        .\llvm\tools\clang\include\clang/AST/DeclarationName.h(546): or       'const clang::PartialDiagnostic &clang::operator <<(const clang::PartialDiagnostic &,clang::DeclarationName)'
> 279>        .\llvm\tools\clang\include\clang/AST/DeclarationName.h(553): or       'llvm::raw_ostream &clang::operator <<(llvm::raw_ostream &,clang::DeclarationNameInfo)'
> 279>        .\llvm\tools\clang\include\clang/AST/NestedNameSpecifier.h(472): or       'const clang::DiagnosticBuilder &clang::operator <<(const clang::DiagnosticBuilder &,clang::NestedNameSpecifier *)'
> 279>        .\llvm\tools\clang\include\clang/AST/TemplateName.h(333): or       'const clang::DiagnosticBuilder &clang::operator <<(const clang::DiagnosticBuilder &,clang::TemplateName)'
> 279>        .\llvm\tools\clang\include\clang/AST/Type.h(5058): or       'const clang::DiagnosticBuilder &clang::operator <<(const clang::DiagnosticBuilder &,clang::QualType)'
> 279>        .\llvm\tools\clang\include\clang/AST/Type.h(5067): or       'const clang::PartialDiagnostic &clang::operator <<(const clang::PartialDiagnostic &,clang::QualType)'
> 279>        .\llvm\tools\clang\include\clang/AST/Decl.h(336): or       'llvm::raw_ostream &clang::operator <<(llvm::raw_ostream &,const clang::NamedDecl &)'
> 279>        .\llvm\tools\clang\include\clang/AST/Decl.h(3304): or       'const clang::DiagnosticBuilder &clang::operator <<(const clang::DiagnosticBuilder &,const clang::NamedDecl *)'
> 279>        .\llvm\tools\clang\include\clang/AST/Decl.h(3310): or       'const clang::PartialDiagnostic &clang::operator <<(const clang::PartialDiagnostic &,const clang::NamedDecl *)'
> 279>        .\llvm\tools\clang\include\clang/AST/TemplateBase.h(625): or       'const clang::DiagnosticBuilder &clang::operator <<(const clang::DiagnosticBuilder &,const clang::TemplateArgument &)'
> 279>        .\llvm\tools\clang\include\clang/AST/DeclCXX.h(2989): or       'const clang::DiagnosticBuilder &clang::operator <<(const clang::DiagnosticBuilder &,clang::AccessSpecifier)'
> 279>        .\llvm\tools\clang\include\clang/AST/DeclCXX.h(2992): or       'const clang::PartialDiagnostic &clang::operator <<(const clang::PartialDiagnostic &,clang::AccessSpecifier)'
> 279>        .\llvm\tools\clang\include\clang/AST/DeclObjC.h(1763): or       'llvm::raw_ostream &clang::operator <<(llvm::raw_ostream &,const clang::ObjCCategoryImplDecl &)'
> 279>        .\llvm\tools\clang\include\clang/AST/DeclObjC.h(1917): or       'llvm::raw_ostream &clang::operator <<(llvm::raw_ostream &,const clang::ObjCImplementationDecl &)'
> 279>        .\llvm\tools\clang\include\clang/Basic/VersionTuple.h(135): or       'llvm::raw_ostream &clang::operator <<(llvm::raw_ostream &,const clang::VersionTuple &)'
> 279>        .\llvm\tools\clang\include\clang/Basic/ObjCRuntime.h(307): or       'llvm::raw_ostream &clang::operator <<(llvm::raw_ostream &,const clang::ObjCRuntime &)'
> 279>        .\llvm\tools\clang\include\clang/AST/CanonicalType.h(205): or       'const clang::DiagnosticBuilder &clang::operator <<(const clang::DiagnosticBuilder &,clang::CanQualType)'
> 279>        while trying to match the argument list '(llvm::raw_svector_ostream, const char [3])'
> ..
> On Feb 22, 2013, at 7:46 AM, Benjamin Kramer <benny.kra at googlemail.com> wrote:
> 
>> Author: d0k
>> Date: Fri Feb 22 09:46:08 2013
>> New Revision: 175895
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=175895&view=rev
>> Log:
>> Streamify FormatASTNodeDiagnosticArgument.
>> 
>> Modified:
>>    cfe/trunk/lib/AST/ASTDiagnostic.cpp
>> 
>> Modified: cfe/trunk/lib/AST/ASTDiagnostic.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ASTDiagnostic.cpp?rev=175895&r1=175894&r2=175895&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/AST/ASTDiagnostic.cpp (original)
>> +++ cfe/trunk/lib/AST/ASTDiagnostic.cpp Fri Feb 22 09:46:08 2013
>> @@ -247,7 +247,8 @@ void clang::FormatASTNodeDiagnosticArgum
>>     ArrayRef<intptr_t> QualTypeVals) {
>>   ASTContext &Context = *static_cast<ASTContext*>(Cookie);
>> 
>> -  std::string S;
>> +  size_t OldEnd = Output.size();
>> +  llvm::raw_svector_ostream OS(Output);
>>   bool NeedQuotes = true;
>> 
>>   switch (Kind) {
>> @@ -259,6 +260,7 @@ void clang::FormatASTNodeDiagnosticArgum
>>       QualType ToType =
>>           QualType::getFromOpaquePtr(reinterpret_cast<void*>(TDT.ToType));
>> 
>> +      std::string S;
>>       if (FormatTemplateTypeDiff(Context, FromType, ToType, TDT.PrintTree,
>>                                  TDT.PrintFromType, TDT.ElideType,
>>                                  TDT.ShowColors, S)) {
>> @@ -266,13 +268,14 @@ void clang::FormatASTNodeDiagnosticArgum
>>         TDT.TemplateDiffUsed = true;
>>         break;
>>       }
>> +      OS << S;
>> 
>>       // Don't fall-back during tree printing.  The caller will handle
>>       // this case.
>>       if (TDT.PrintTree)
>>         return;
>> 
>> -      // Attempting to do a templete diff on non-templates.  Set the variables
>> +      // Attempting to do a template diff on non-templates.  Set the variables
>>       // and continue with regular type printing of the appropriate type.
>>       Val = TDT.PrintFromType ? TDT.FromType : TDT.ToType;
>>       ModLen = 0;
>> @@ -284,23 +287,23 @@ void clang::FormatASTNodeDiagnosticArgum
>>              "Invalid modifier for QualType argument");
>> 
>>       QualType Ty(QualType::getFromOpaquePtr(reinterpret_cast<void*>(Val)));
>> -      S = ConvertTypeToDiagnosticString(Context, Ty, PrevArgs, NumPrevArgs,
>> -                                        QualTypeVals);
>> +      OS << ConvertTypeToDiagnosticString(Context, Ty, PrevArgs, NumPrevArgs,
>> +                                          QualTypeVals);
>>       NeedQuotes = false;
>>       break;
>>     }
>>     case DiagnosticsEngine::ak_declarationname: {
>> -      DeclarationName N = DeclarationName::getFromOpaqueInteger(Val);
>> -      S = N.getAsString();
>> -      
>>       if (ModLen == 9 && !memcmp(Modifier, "objcclass", 9) && ArgLen == 0)
>> -        S = '+' + S;
>> +        OS << '+';
>>       else if (ModLen == 12 && !memcmp(Modifier, "objcinstance", 12)
>>                 && ArgLen==0)
>> -        S = '-' + S;
>> +        OS << '-';
>>       else
>>         assert(ModLen == 0 && ArgLen == 0 &&
>>                "Invalid modifier for DeclarationName argument");
>> +
>> +      DeclarationName N = DeclarationName::getFromOpaqueInteger(Val);
>> +      N.printName(OS);
>>       break;
>>     }
>>     case DiagnosticsEngine::ak_nameddecl: {
>> @@ -313,14 +316,12 @@ void clang::FormatASTNodeDiagnosticArgum
>>         Qualified = false;
>>       }
>>       const NamedDecl *ND = reinterpret_cast<const NamedDecl*>(Val);
>> -      llvm::raw_string_ostream OS(S);
>>       ND->getNameForDiagnostic(OS, Context.getPrintingPolicy(), Qualified);
>>       break;
>>     }
>>     case DiagnosticsEngine::ak_nestednamespec: {
>> -      llvm::raw_string_ostream OS(S);
>> -      reinterpret_cast<NestedNameSpecifier*>(Val)->print(OS,
>> -                                                        Context.getPrintingPolicy());
>> +      NestedNameSpecifier *NNS = reinterpret_cast<NestedNameSpecifier*>(Val);
>> +      NNS->print(OS, Context.getPrintingPolicy());
>>       NeedQuotes = false;
>>       break;
>>     }
>> @@ -331,42 +332,39 @@ void clang::FormatASTNodeDiagnosticArgum
>>       if (DC->isTranslationUnit()) {
>>         // FIXME: Get these strings from some localized place
>>         if (Context.getLangOpts().CPlusPlus)
>> -          S = "the global namespace";
>> +          OS << "the global namespace";
>>         else
>> -          S = "the global scope";
>> +          OS << "the global scope";
>>       } else if (TypeDecl *Type = dyn_cast<TypeDecl>(DC)) {
>> -        S = ConvertTypeToDiagnosticString(Context, 
>> -                                          Context.getTypeDeclType(Type),
>> -                                          PrevArgs, NumPrevArgs, QualTypeVals);
>> +        OS << ConvertTypeToDiagnosticString(Context,
>> +                                            Context.getTypeDeclType(Type),
>> +                                            PrevArgs, NumPrevArgs,
>> +                                            QualTypeVals);
>>       } else {
>>         // FIXME: Get these strings from some localized place
>>         NamedDecl *ND = cast<NamedDecl>(DC);
>>         if (isa<NamespaceDecl>(ND))
>> -          S += "namespace ";
>> +          OS << "namespace ";
>>         else if (isa<ObjCMethodDecl>(ND))
>> -          S += "method ";
>> +          OS << "method ";
>>         else if (isa<FunctionDecl>(ND))
>> -          S += "function ";
>> -        
>> -        S += "'";
>> -        {
>> -          llvm::raw_string_ostream OS(S);
>> -          ND->getNameForDiagnostic(OS, Context.getPrintingPolicy(), true);
>> -        }
>> -        S += "'";
>> +          OS << "function ";
>> +
>> +        OS << '\'';
>> +        ND->getNameForDiagnostic(OS, Context.getPrintingPolicy(), true);
>> +        OS << '\'';
>>       }
>>       NeedQuotes = false;
>>       break;
>>     }
>>   }
>> -  
>> -  if (NeedQuotes)
>> -    Output.push_back('\'');
>> -  
>> -  Output.append(S.begin(), S.end());
>> -  
>> -  if (NeedQuotes)
>> +
>> +  OS.flush();
>> +
>> +  if (NeedQuotes) {
>> +    Output.insert(Output.begin()+OldEnd, '\'');
>>     Output.push_back('\'');
>> +  }
>> }
>> 
>> /// TemplateDiff - A class that constructs a pretty string for a pair of
>> 
>> 
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130222/0800e1b1/attachment.html>


More information about the cfe-commits mailing list