- Nov 18, 2008
-
-
Chris Lattner authored
are formed. In particular, a diagnostic with all its strings and ranges is now packaged up and sent to DiagnosticClients as a DiagnosticInfo instead of as a ton of random stuff. This has the benefit of simplifying the interface, making it more extensible, and allowing us to do more checking for things like access past the end of the various arrays passed in. In addition to introducing DiagnosticInfo, this also substantially changes how Diagnostic::Report works. Instead of being passed in all of the info required to issue a diagnostic, Report now takes only the required info (a location and ID) and returns a fresh DiagnosticInfo *by value*. The caller is then free to stuff strings and ranges into the DiagnosticInfo with the << operator. When the dtor runs on the DiagnosticInfo object (which should happen at the end of the statement), the diagnostic is actually emitted with all of the accumulated information. This is a somewhat tricky dance, but it means that the accumulated DiagnosticInfo is allowed to keep pointers to other expression temporaries without those pointers getting invalidated. This is just the minimal change to get this stuff working, but this will allow us to eliminate the zillions of variant "Diag" methods scattered throughout (e.g.) sema. For example, instead of calling: Diag(BuiltinLoc, diag::err_overload_no_match, typeNames, SourceRange(BuiltinLoc, RParenLoc)); We will soon be able to just do: Diag(BuiltinLoc, diag::err_overload_no_match) << typeNames << SourceRange(BuiltinLoc, RParenLoc)); This scales better to support arbitrary types being passed in (not just strings) in a type-safe way. Go operator overloading?! llvm-svn: 59502
-
Ted Kremenek authored
llvm-svn: 59499
-
Chris Lattner authored
Use mutable to make it so. llvm-svn: 59498
-
Chris Lattner authored
delete huge trailing whitespace to fit in 80 cols. llvm-svn: 59497
-
Chris Lattner authored
strings instead of array of strings. This reduces string copying in some not-very-important cases, but paves the way for future improvements. llvm-svn: 59494
-
Chris Lattner authored
llvm-svn: 59491
-
Ted Kremenek authored
- Add static method to test if the current lexer is a non-macro/non-pragma lexer. - Refactor some code in PPLexerChange to use this static method. - No performance change. llvm-svn: 59486
-
Chris Lattner authored
llvm-svn: 59485
-
Chris Lattner authored
llvm-svn: 59484
-
Chris Lattner authored
llvm-svn: 59483
-
Ted Kremenek authored
llvm-svn: 59482
-
Ted Kremenek authored
Performance tests on Cocoa.h (using the regular Lexer) shows no performance difference. llvm-svn: 59479
-
Ted Kremenek authored
This is because the PTHLexer will not support this method. Performance testing on preprocessing Cocoa.h shows that this results in a negligible performance difference (less than 1%). I tried making Lexer::SetCommentRetentionState() an out-of-line function (a precursor to making it a virtual function in PreprocessorLexer) and noticed a 1% decrease in speed (it is called in a hot part of the Preprocessor). llvm-svn: 59477
-
Ted Kremenek authored
alias for the current PreprocessorLexer. No functionality change. Performance testing shows this results in no performance degradation when preprocessing Cocoa.h. llvm-svn: 59474
-
Ted Kremenek authored
PreprocessorLexer, which will either be a 'Lexer' or 'PTHLexer'. - Added stub field 'CurPTHLexer' to keep track of the current PTHLexer. - Modified IncludeStackInfo to track both the current PTHLexer and current PreprocessorLexer. llvm-svn: 59472
-
Sebastian Redl authored
llvm-svn: 59470
-
- Nov 17, 2008
-
-
Douglas Gregor authored
destructors, and conversion functions. The placeholders were used to work around the fact that the parser and some of Sema really wanted declarators to have simple identifiers; now, the code that deals with declarators will use DeclarationNames. llvm-svn: 59469
-
Ted Kremenek authored
where the control reaches the end of a non-void function and also allows the compiler to generate better code. When this assertion is false we can easily add more else cases. llvm-svn: 59468
-
rdar://problem/6333904Steve Naroff authored
Missing special lookup rule in Sema::ActOnInstanceMessage(). llvm-svn: 59467
-
Douglas Gregor authored
C++ constructors, destructors, and conversion functions now have a FETokenInfo field that IdentifierResolver can access, so that these special names are handled just like ordinary identifiers. A few other Sema routines now use DeclarationNames instead of IdentifierInfo*'s. To validate this design, this code also implements parsing and semantic analysis for id-expressions that name conversion functions, e.g., return operator bool(); The new parser action ActOnConversionFunctionExpr takes the result of parsing "operator type-id" and turning it into an expression, using the IdentifierResolver with the DeclarationName of the conversion function. ActOnDeclarator pushes those conversion function names into scope so that the IdentifierResolver can find them, of course. llvm-svn: 59462
-
rdar://6319320Chris Lattner authored
are trying to use the old GCC "casts as lvalue" extension. We don't and will hopefully never support this. llvm-svn: 59460
-
-
-
Douglas Gregor authored
llvm-svn: 59443
-
Douglas Gregor authored
llvm-svn: 59442
-
Douglas Gregor authored
representing the names of declarations in the C family of languages. DeclarationName is used in NamedDecl to store the name of the declaration (naturally), and ObjCMethodDecl is now a NamedDecl. llvm-svn: 59441
-
Eli Friedman authored
moment. llvm-svn: 59435
-
Anders Carlsson authored
llvm-svn: 59433
-
- Nov 16, 2008
-
-
Anders Carlsson authored
llvm-svn: 59430
-
Nuno Lopes authored
llvm-svn: 59429
-
Anders Carlsson authored
llvm-svn: 59428
-
Chris Lattner authored
llvm-svn: 59426
-
Anders Carlsson authored
llvm-svn: 59425
-
Chris Lattner authored
llvm-svn: 59424
-
Nuno Lopes authored
Eli please take a look, as I'm not sure if this gets the extension warning in the right place llvm-svn: 59422
-
Nuno Lopes authored
llvm-svn: 59421
-
Anders Carlsson authored
llvm-svn: 59420
-
Chris Lattner authored
defined in a system header should be treated as system header tokens even if they are instantiated in a different place. llvm-svn: 59418
-
Chris Lattner authored
llvm-svn: 59411
-
Anders Carlsson authored
llvm-svn: 59408
-