aboutsummaryrefslogtreecommitdiff
path: root/lib/Rewrite
AgeCommit message (Collapse)Author
2011-12-15Move ObjCInterfaceDecl's "EndLoc" into DefinitionData, since it onlyDouglas Gregor
applies to an actual definition. Plus, clarify the purpose of this field and give the accessor a different name, since getLocEnd() is supposed to be the same as getSourceRange().getEnd(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146694 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-15Keep track of all declarations of an Objective-C class (both forwardDouglas Gregor
declarations and definitions) as ObjCInterfaceDecls within the same redeclaration chain. This new representation matches what we do for C/C++ variables/functions/classes/templates/etc., and makes it possible to answer the query "where are all of the declarations of this class?" git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146679 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-15Replace all comparisons between ObjCInterfaceDecl pointers with callsDouglas Gregor
to declaresSameEntity(), as a baby step toward tracking forward declarations of Objective-C classes precisely. Part of <rdar://problem/10583531>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146618 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-08More refactoring of objective-C rewriter.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146160 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-05More refactoring of objc rewriter.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145867 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-05More objc rewriter refactoring.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145841 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-05Some early refactoring of objective-c rewriter.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145824 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-18Change ASTConsumer::HandleTopLevelDecl to return true for the parser to continueArgyrios Kyrtzidis
parsing or false to abort parsing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144943 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-09objc rewriter: use a more specific name for local variable usedFariborz Jahanian
in fast enumeration rewrite. // rdar://10415026 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144191 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-06Change the AST representation of operations on Objective-CJohn McCall
property references to use a new PseudoObjectExpr expression which pairs a syntactic form of the expression with a set of semantic expressions implementing it. This should significantly reduce the complexity required elsewhere in the compiler to deal with these kinds of expressions (e.g. IR generation's special l-value kind, the static analyzer's Message abstraction), at the lower cost of specifically dealing with the odd AST structure of these expressions. It should also greatly simplify efforts to implement similar language features in the future, most notably Managed C++'s properties and indexed properties. Most of the effort here is in dealing with the various clients of the AST. I've gone ahead and simplified the ObjC rewriter's use of properties; other clients, like IR-gen and the static analyzer, have all the old complexity *and* all the new complexity, at least temporarily. Many thanks to Ted for writing and advising on the necessary changes to the static analyzer. I've xfailed a small diagnostics regression in the static analyzer at Ted's request. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143867 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-25Restore r142914 and r142915, now with missing file and apparentJohn McCall
GCC compiler workaround. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142931 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-25Revert r142914 and r142915, due to possibly missing file.NAKAMURA Takumi
r142914: "Introduce a placeholder type for "pseudo object"" r142915: "Pull the pseudo-object stuff into its own file." git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142921 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-25Introduce a placeholder type for "pseudo object"John McCall
expressions: expressions which refer to a logical rather than a physical l-value, where the logical object is actually accessed via custom getter/setter code. A subsequent patch will generalize the AST for these so that arbitrary "implementing" sub-expressions can be provided. Right now the only client is ObjC properties, but this should be generalizable to similar language features, e.g. Managed C++'s __property methods. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142914 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-11objc rewriter: Restore objc_msgSend_stret/objc_msgSendSuper_stret declarationFariborz Jahanian
to their fragile-abi representation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141735 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-07objc rewriter. Fix declaration of objc_msgSend_stret/objc_msgSendSuper_stret.Fariborz Jahanian
Fix an assert crash when casting a CF type to 'id'. // rdar://10250911 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141369 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-07Rename TagDecl::isDefinition -> isCompleteDefinitionJohn McCall
for better self-documenting code, since the semantics are subtly different from getDefinition(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141355 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-04Improve location fidelity of objc decls.Argyrios Kyrtzidis
-Add the location of the class name to all objc container decls, not just ObjCInterfaceDecl. -Make objc decls consistent with the rest of the NamedDecls and have getLocation() point to the class name, not the location of '@'. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141061 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-03ArrayRef'ize ObjCMessageExprArgyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140986 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-29Introduce a pure virtual clone() method to DiagnosticConsumer, so thatDouglas Gregor
we have the ability to create a new, distict diagnostic consumer when we go off and build a module. This avoids the currently horribleness where the same diagnostic consumer sees diagnostics for multiple translation units (and multiple SourceManagers!) causing all sorts of havok. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140743 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-27When 'bool' is not a built-in type but is defined as a macro, printDouglas Gregor
'bool' rather than '_Bool' within types, to make things a bit more readable. Fixes <rdar://problem/10063263>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140650 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-26Rename DiagnosticInfo to Diagnostic as per issue 5397David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140493 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-25Rename IgnoringDiagClient to IgnoringDiagConsumer as per issue 5397David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140480 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-25Rename DiagnosticClient to DiagnosticConsumer as per issue 5397David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140479 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-25Rename Diagnostic to DiagnosticsEngine as per issue 5397David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140478 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-23Switch assert(0/false) llvm_unreachable.David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140367 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-19Rename SourceLocation::getFileLocWithOffset -> getLocWithOffset.Argyrios Kyrtzidis
It already works (and is useful with) macro locs as well. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140057 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-17Rename LangOptions::Microsoft to LangOptions::MicrosoftExt to make it clear ↵Francois Pichet
that this flag must be used only for Microsoft extensions and not emulation; to avoid confusion with the new LangOptions::MicrosoftMode flag. Many of the code now under LangOptions::MicrosoftExt will eventually be moved under the LangOptions::MicrosoftMode flag. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139987 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-10objc rewriter - more fixes to support compiling the rewrittenFariborz Jahanian
test case having instancetype. Fix in rewriter is unrelated to using of instancetype. Test case uses other feature not yet supported in the rewriter. There is more work to do, but this is an ongoing task and not urgent at this time. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139473 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-09objc rewriter - Add rewriter test for new instancetypeFariborz Jahanian
along with minor rewriter fix to handle that. This test is still incomplete due to rewriter issues unrelated to instancetype. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139403 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-09Give conversions of block pointers to ObjC pointers a different cast kindJohn McCall
than conversions of C pointers to ObjC pointers. In order to ensure that we've caught every case, add asserts to CastExpr that strictly determine which cast kind is used for which kind of bit cast. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139352 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-29Fix a rewriter bug caused by recent changes in objc's Fariborz Jahanian
group decls. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138772 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-27objective-c: Treat top-level objective-c declarationsFariborz Jahanian
, such as list of forward @class decls, in a DeclGroup node. Deal with its consequence throught clang. This is in preparation for more Sema work ahead. // rdar://8843851. Feel free to reverse if it breaks something important and I am unavailable. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138709 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-04objc rewriter: Fixes a rewriting of implicit casting of an integralFariborz Jahanian
argument to bool. // rdar://9899834 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136946 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-02objective-c rewrite: Fixes rewriting of objective-c collectionFariborz Jahanian
statement inside a block. // rdar://9878420 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136717 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-30objc rewriter - my last patch was not quite right.Fariborz Jahanian
Fixed again. // rdar://9846759 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136550 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-30objc rewriter - set the flag passed to ↵Fariborz Jahanian
_Block_object_assign/_Block_object_dispose correctly for copying a captured block object. // rdar://9846759 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136549 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-27Add support for C++0x unicode string and character literals, from Craig Topper!Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136210 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-25Rename getInstantiationLineNumber to getExpansionLineNumber in bothChandler Carruth
SourceManager and FullSourceLoc. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135969 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-25Rename SourceManager::getInstantiationRange to getExpansionRange.Chandler Carruth
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135915 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-25Mechanically rename SourceManager::getInstantiationLoc andChandler Carruth
FullSourceLoc::getInstantiationLoc to ...::getExpansionLoc. This is part of the API and documentation update from 'instantiation' as the term for macros to 'expansion'. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135914 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-23remove unneeded llvm:: namespace qualifiers on some core types now that ↵Chris Lattner
LLVM.h imports them into the clang namespace. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135852 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-15Switch a comment in Rewrite from 'instantiation' to 'expansion'.Chandler Carruth
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135226 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-21Make more use of llvm::StringRef in various APIs. In particular, don'tJay Foad
use the deprecated forms of llvm::StringMap::GetOrCreateValue(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133515 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-15Automatic Reference Counting.John McCall
Language-design credit goes to a lot of people, but I particularly want to single out Blaine Garst and Patrick Beard for their contributions. Compiler implementation credit goes to Argyrios, Doug, Fariborz, and myself, in no particular order. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133103 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-11Implement support for C++11 in-class initialization of non-static data members.Richard Smith
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132878 91177308-0d34-0410-b5e6-96231b3b80d8
2011-04-30Replace a literal 8 with Context->getCharWidth() inKen Dyck
SynthesizeByrefCopyDestroyHelper(). No change in functionality intended. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130608 91177308-0d34-0410-b5e6-96231b3b80d8
2011-04-20Use S.str() to force a flush.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129856 91177308-0d34-0410-b5e6-96231b3b80d8
2011-04-20Be sure to flush raw_string_ostream objects in the Objective-CDouglas Gregor
rewriter, from Eric Niebler! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129849 91177308-0d34-0410-b5e6-96231b3b80d8
2011-04-16Introduce Rewriter::IncreaseIndentation() which increase indentations for ↵Argyrios Kyrtzidis
the lines between the given source range. To determine what the indentation should be, a SourceLocation 'parentIndent' parameter is used that should be at a source location with an indentation one degree lower than the given range. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129628 91177308-0d34-0410-b5e6-96231b3b80d8
2011-04-15Support for C++11 (non-template) alias declarations.Richard Smith
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129567 91177308-0d34-0410-b5e6-96231b3b80d8