aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2008-11-20Update C++ statusDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59735 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20PTHLexer:Ted Kremenek
- Rename 'CurToken' and 'LastToken' to 'CurTokenIdx' and 'LastTokenIdx' respectively. - Add helper methods GetToken(), AdvanceToken(), AtLastToken() to abstract away details of the token stream. This also allows us to easily replace their implementation later. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59733 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20Add support for overloaded operator-> when used in a member accessDouglas Gregor
expression (smart_ptr->mem). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59732 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20Rename IsNonPragmaNonMacroLexer to IsFileLexer.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59731 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20Output 'ANALYZE' messages to standard error. This should address the ↵Ted Kremenek
intermixing of 'ANALYZE' and the other diagnostics the clang driver emits to standard error. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59730 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20Fix strange quote charactersDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59729 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20De-unionize fields in Token class.Daniel Dunbar
- This is fairly gross but although the code is conceptually the same, introducting the union causes gcc 4.2 on x86 (darwin, if that matters) to pessimize LexTokenInternal which is critical to our preprocessor performance. This speeds up -Eonly lexing of Cocoa.h by ~4.7% in my timings and reduces the code size of LexTokenInternal by 8.6%. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59725 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20Rewrote PTHLexer::Lex by digging through the sources of Lexer again. Now we ↵Ted Kremenek
can do basic macro expansion using the PTHLexer. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59724 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20Add ugly "test harness" for PTHLexer that is not enabled by default. TheTed Kremenek
(temporary hack) to test the PTHLexer is that whenever we would create a Lexer object we instead raw lex a memory buffer first and then use the PTHLexer. This logic exists only to driver the PTHLexer and will be removed/changed in the future. Note that the regular path using normal Lexer objects is what is used by default. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59723 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20Added virtual method 'IndirectLex' to PTHLexer. This will likely get ↵Ted Kremenek
removed in the future when we correctly handle #include processing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59722 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20Preprocessor::isCurrentLexer() now takes a PreprocessorLexer* argument to ↵Ted Kremenek
match against CurPPLexer instead of CurLexer. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59721 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20Daniel really really likes = instead of += :)Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59716 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20remove the last old-fashioned Diag method. Transition complete!Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59714 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20remove another old Diag method.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59713 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20remove another old-school Diag method.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59712 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20remove the type_info identifier cache. Compared to the costChris Lattner
of doing the lookup_decl, the hash lookup is cheap. Also, typeid doesn't happen enough in real world code to worry about it. I'd like to eventually get rid of KnownFunctionIDs from Sema also, but today is not that day. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59711 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20compared to the rest of the code in Sema::GetStdNamespace(),Chris Lattner
looking up the "std" identifier is trivial. Just do it, particularly since this is only done if the namespace hasn't already been looked up. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59710 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20remove some other identifiers that are looked up really early and onlyChris Lattner
used in one cold place. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59709 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20instead of looking up super at startup time, Chris Lattner
just check for it when needed. It doesn't incur real cost in any hot paths. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59708 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20Rename IdentifierInfo::isName to ::isStr. Use a nifty trickChris Lattner
from Sebastian to enforce that a literal string is passed in, and use this to avoid having to call strlen on it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59706 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20Make FIXME a hard assertion.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59695 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20Preprocessor::getCurrentFileLexer() now returns a PreprocessorLexer* instead ofTed Kremenek
a Lexer*. This means it will either return the current (normal) file Lexer or a PTHLexer. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59694 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20Just use the SourceLocation of SysHeaderTok when doing a callback to emit #lineTed Kremenek
information. A diff of the -E output for Cocoa.h shows that there is no change in output. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59693 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20Assign the result of getCurrentFileLexer() to a PreprocessorLexer* instead ↵Ted Kremenek
of Lexer* (narrower interface). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59691 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20- Default initialize ParsingPreprocessorDirective, ParsingFilename, andTed Kremenek
LexingRawMode in the ctor of PreprocessorLexer. - PTHLexer: Use "LastToken" instead of "NumToken" git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59690 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20Add (untested) implementation of PTHLexer::isNextPPTokenLParen() and ↵Ted Kremenek
PTHLexer::DiscardToEndOfLine(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59687 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20Use ScheduleDAGSDNodes.h instead of ScheduleDAG.h (stuff moved around).Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59684 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20Split region store specific test cases.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59683 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-20More objc gc stuff. Read/Write barriers for local static/extern,Fariborz Jahanian
diagnostics on use of __weak attribute on fields, Early support for read/write barriers for objc fields. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59682 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-19Beef up the test for function call operators slightlyDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59675 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-19Implement the rest of C++ [over.call.object], which permits the objectDouglas Gregor
being called to be converted to a reference-to-function, pointer-to-function, or reference-to-pointer-to-function. This is done through "surrogate" candidate functions that model the conversions from the object to the function (reference/pointer) and the conversions in the arguments. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59674 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-19Fix comment.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59673 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-19Use PreprocessorLexer::getFileID() instead of Lexer::getFileLoc(). This is ↵Ted Kremenek
an intermediate step to having getCurrentLexer() return a PreprocessorLexer* instead of a Lexer*. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59672 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-19Move more cases of using 'CurLexer' to 'CurPPLexer'.Ted Kremenek
Use PTHLexer::isNextPPTokenLParen() when using the PTHLexer. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59671 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-19Add stub for PTHLexer::isNextPPTokenLParen().Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59670 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-19Add version of 'getFileCharacteristic()' for FileIDs.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59669 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-19When using a PTHLexer, use DiscardToEndOfLine() instead of ReadToEndOfLine().Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59668 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-19- Move static function IsNonPragmaNonMacroLexer into Preprocessor.h.Ted Kremenek
- Add variants of IsNonPragmaNonMacroLexer to accept an IncludeMacroStack entry (simplifies some uses). - Use IsNonPragmaNonMacroLexer in Preprocessor::LookupFile. - Add 'FileID' to PreprocessorLexer, and have Preprocessor query this fileid when looking up the FileEntry for a file Performance testing of -Eonly on Cocoa.h shows no performance regression because of this patch. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59666 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-19Fix <rdar://problem/6291588> assertion failure: SourceManager.h line 489.Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59664 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-19Support for calling overloaded function call operators (operator())Douglas Gregor
with function call syntax, e.g., Functor f; f(x, y); This is the easy part of handling calls to objects of class type (C++ [over.call.object]). The hard part (coping with conversions from f to function pointer or reference types) will come later. Nobody uses that stuff anyway, right? :) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59663 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-19Some tweaks suggested by ArgirisDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59661 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-19Ignore Output directories when searching for tests.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59660 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-19CMake: Added some source files.Oscar Fuentes
Patch contributed by Jay Foad! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59656 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-19More of objective-c's gc code-gen. Treat objective-cFariborz Jahanian
objects as __strong when attribute unspecified. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59654 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-19Make DeclContext::getLexicalParent reuse DeclContext::getParent.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59651 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-19Take care another assert:Argyrios Kyrtzidis
struct A { struct B; }; struct A::B { void m() {} // Assertion failed: getContainingDC(DC) == CurContext && "The next DeclContext should be lexically contained in the current one." }; Introduce DeclContext::getLexicalParent which may be different from DeclContext::getParent when nested-names are involved, e.g: namespace A { struct S; } struct A::S {}; // getParent() == namespace 'A' // getLexicalParent() == translation unit git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59650 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-19fix folding of '*doubleArray'Nuno Lopes
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59647 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-19Make the non-const DeclContext::getParent call the const version, instead of ↵Argyrios Kyrtzidis
the other way around. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59646 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-19Few more changes due to Daniel's feedback.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59645 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-19Support overloading of the subscript operator[], including support forDouglas Gregor
built-in operator candidates. Test overloading of '&' and ','. In C++, a comma expression is an lvalue if its right-hand subexpression is an lvalue. Update Expr::isLvalue accordingly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59643 91177308-0d34-0410-b5e6-96231b3b80d8