summaryrefslogtreecommitdiffstats
path: root/clang
Commit message (Collapse)AuthorAgeFilesLines
* objective-c modern rewriter: add __declspec(dllexport) to forwardFariborz Jahanian2012-03-101-2/+9
| | | | | | declaration of class metadata when they are defined later. llvm-svn: 152500
* objc modern rewriter: Define __OBJC2__ in written file.Fariborz Jahanian2012-03-101-0/+4
| | | | | | // rdar://11024543 llvm-svn: 152496
* Replace a map of boolean values with a set.Benjamin Kramer2012-03-101-14/+8
| | | | | | No functionality change. llvm-svn: 152494
* The type of a definition should not increase its visibility. Fixes PR12221.Rafael Espindola2012-03-102-2/+10
| | | | llvm-svn: 152493
* Remove BlockDeclRefExpr and introduce a bit on DeclRefExpr toJohn McCall2012-03-1049-565/+280
| | | | | | | | track whether the referenced declaration comes from an enclosing local context. I'm amenable to suggestions about the exact meaning of this bit. llvm-svn: 152491
* Slightly tweak this condition. "isTransparentContext()" was checking whether anNick Lewycky2012-03-102-2/+6
| | | | | | | | enum is scoped or not, which is not relevant here. Instead, phrase the loop in the same terms that the standard uses, instead of this awkward set of conditions that is *nearly* equal. llvm-svn: 152489
* Could not find this in C99. Perhaps this rule comes from a DR, but in any caseNick Lewycky2012-03-101-0/+1
| | | | | | | please annotate it with a note explaining why this wrong-seeming behaviour is correct. llvm-svn: 152488
* Only make a call to a copy constructor elidable if in fact we areDouglas Gregor2012-03-102-1/+42
| | | | | | doing a copy. Fixes PR12139. llvm-svn: 152485
* [Sema] A tag decl that is marked as invalid and is used in a decl-spec,Argyrios Kyrtzidis2012-03-103-5/+11
| | | | | | | | should not impede creating a proper TypeLoc info for the decl-spec. This improves our semantic error recovery. llvm-svn: 152481
* Remove the part of test/Sema/pragma-pack-2.c that has irregular "#pragma pack"s.Argyrios Kyrtzidis2012-03-101-46/+0
| | | | | | | | | | | Before r151307 this part worked without compiler errors but now it only verifies that our handling of irregular pragmas is broken compared to gcc, it has no practical usefulness; it creates invalid structs that cannot be used for 'offsetof' testing. If we later decide to handle irregular pragmas without compiler errors we can put back this part. llvm-svn: 152480
* Unify the BlockDeclRefExpr and DeclRefExpr paths so thatJohn McCall2012-03-106-52/+285
| | | | | | | | we correctly emit loads of BlockDeclRefExprs even when they don't qualify as ODR-uses. I think I'm adequately convinced that BlockDeclRefExpr can die. llvm-svn: 152479
* Fix the dumping of BlockExprs.John McCall2012-03-101-1/+4
| | | | llvm-svn: 152478
* test/Rewriter/rewrite-modern-ivars-2.mm: Add "-triple i386-apple-darwin9".NAKAMURA Takumi2012-03-101-2/+2
| | | | llvm-svn: 152476
* Fix a use of the C99 PRI format macros not to conflict with C++11 UDLs.Benjamin Kramer2012-03-101-1/+2
| | | | llvm-svn: 152475
* Make sure the accessors for overridden methods don't return inherited ↵Eli Friedman2012-03-102-4/+18
| | | | | | constructors. Fixes PR12219. llvm-svn: 152470
* objc modern rewriter: don't export @package ivar symbols.Fariborz Jahanian2012-03-101-1/+2
| | | | llvm-svn: 152469
* [analyzer] fix regression in analyzer of NOT actually aborting on Stmts it ↵Ted Kremenek2012-03-109-28/+140
| | | | | | | | | | | doesn't understand. We registered as aborted, but didn't treat such cases as sinks in the ExplodedGraph. Along the way, add basic support for CXXCatchStmt, expanding the set of code we actually analyze (hopefully correctly). Fixes: <rdar://problem/10892489> llvm-svn: 152468
* IRgen/ABI/x86_64: Avoid passing small structs using byval sometimes.Daniel Dunbar2012-03-103-13/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - We do this when it is easy to determine that the backend will pass them on the stack properly by itself. Currently LLVM codegen is really bad in some cases with byval, for example, on the test case here (which is derived from Sema code, which likes to pass SourceLocations around):: struct s47 { unsigned a; }; void f47(int,int,int,int,int,int,struct s47); void test47(int a, struct s47 b) { f47(a, a, a, a, a, a, b); } we used to emit code like this:: ... movl %esi, -8(%rbp) movl -8(%rbp), %ecx movl %ecx, (%rsp) ... to handle moving the struct onto the stack, which is just appalling. Now we generate:: movl %esi, (%rsp) which seems better, no? llvm-svn: 152462
* Minor change to my last rewrite patch.Fariborz Jahanian2012-03-101-1/+6
| | | | llvm-svn: 152461
* objc modern rewriter: Mark class and ivar definitions with __declspec(dllexport)Fariborz Jahanian2012-03-101-2/+2
| | | | | | // rdar://11023563 llvm-svn: 152459
* Qualifiers on a canonical array type go on the outermost type, not theDouglas Gregor2012-03-102-6/+5
| | | | | | innermost type. Fixes PR12142. llvm-svn: 152456
* Assign APValues by swapping from a temporary. Removes a bunch of unnecessaryRichard Smith2012-03-103-48/+64
| | | | | | | | copy-construction, which Daniel Dunbar reports as giving a 0.75% speedup on 403.gcc/combine.c. The performance differences on my constexpr torture tests are below the noise floor. llvm-svn: 152455
* objective-c modern rewriter. More fixes related to rewritingFariborz Jahanian2012-03-092-18/+117
| | | | | | ivars in the modern rewriter. llvm-svn: 152451
* Teach RetainCountChecker about mixing method families with explicit ↵Ted Kremenek2012-03-092-0/+50
| | | | | | annotations. Fixes <rdar://problem/10824732>. llvm-svn: 152448
* Document the conversion from a lambda closure type to a block pointerDouglas Gregor2012-03-091-0/+57
| | | | | | in Objective-C++. llvm-svn: 152446
* Improve diagnostics for UCNs referring to control characters and members of theRichard Smith2012-03-097-28/+158
| | | | | | | | | | basic source character set in C++98. Add -Wc++98-compat diagnostics for same in literals in C++11. Extend such support to cover string literals as well as character literals, and mark N2170 as done. This seems too minor to warrant a release note to me. Let me know if you disagree. llvm-svn: 152444
* [Sema] Fix a diag change to include a range that appeared intended, but neverDaniel Dunbar2012-03-091-1/+2
| | | | | | actually happened. llvm-svn: 152442
* Update comment after r152140. Clarify a bit too.Nico Weber2012-03-091-1/+2
| | | | llvm-svn: 152441
* [analyzer] Add support for NoRedundancy inlining mode.Anna Zaks2012-03-098-44/+66
| | | | | | | | | | | We do not reanalyze a function, which has already been analyzed as an inlined callee. As per PRELIMINARY testing, this gives over 50% run time reduction on some benchmarks without decreasing of the number of bugs found. Turning the mode on by default. llvm-svn: 152440
* CallGraph: Add getNode() method, constify.Anna Zaks2012-03-092-3/+10
| | | | llvm-svn: 152439
* Allow serializing an invalid ParmVarDecl and don't set access to public forArgyrios Kyrtzidis2012-03-093-9/+11
| | | | | | | | invalid ParmVarDecls. Part of rdar://11007039. llvm-svn: 152437
* Revert r152430 "[AST] Mark ASTContext::getTypeInfo and some friends asDaniel Dunbar2012-03-091-6/+4
| | | | | | | LLVM_READONLY.", getTypeInfo() is totally not READONLY, which I should have probably noticed given that I made it so mere hours ago. Oops. llvm-svn: 152434
* Add a helper to get a CXXConstructExpr from a CXXNewExpr.Matt Beaumont-Gay2012-03-091-0/+5
| | | | llvm-svn: 152433
* Improve our semantic error recovery.Argyrios Kyrtzidis2012-03-094-15/+47
| | | | | | | | | | | | | | | | | When an error made a record member invalid, the record would stay as "isBeingDefined" and not "completeDefinition". Even easily recoverable errors ended up propagating records in such "beingDefined" state, for example: struct A { ~A() const; // expected-error {{'const' qualifier is not allowed on a destructor}} }; struct B : A {}; // A & B would stay as "not complete definition" and "being defined". This weird state was impending lookups in the records and hitting assertion in the ASTWriter. Part of rdar://11007039 llvm-svn: 152432
* [AST] Mark Expr::Ignore*() functions as LLVM_READONLY.Daniel Dunbar2012-03-091-15/+17
| | | | llvm-svn: 152431
* [AST] Mark ASTContext::getTypeInfo and some friends as LLVM_READONLY.Daniel Dunbar2012-03-091-4/+6
| | | | llvm-svn: 152430
* [AST] Mark Expr::getExprLoc() as LLVM_READONLY.Daniel Dunbar2012-03-092-10/+14
| | | | llvm-svn: 152429
* [Sema] Remove dead getSourceRange() call, caught by Clang after markingDaniel Dunbar2012-03-091-2/+1
| | | | | | LLVM_READONLY. llvm-svn: 152428
* [AST/etc] Mark {getSourceRange(),getStartLoc(),getEndLoc()} as LLVM_READONLY.Daniel Dunbar2012-03-0921-211/+237
| | | | | | | | | | | | | | | | - The theory here is that we have these functions sprinkled in all over the place. This should allow the optimizer to at least realize it can still do load CSE across these calls. - I blindly marked all instances as such, even though the optimizer can infer this attribute in some instances (some of the inline ones) as that was easier and also, when given the choice between thinking and not thinking, I prefer the latter. You might think this is mere frivolity, but actually this is good for a .7 - 1.1% speedup on 403.gcc/combine.c, JSC/Interpreter.cpp, OGF/NSBezierPath-OAExtensions.m. llvm-svn: 152426
* Add user-defined literals to release notes.Richard Smith2012-03-091-0/+1
| | | | llvm-svn: 152424
* lldb support: under debugger support flag, when sending messageFariborz Jahanian2012-03-093-0/+27
| | | | | | | to forward class, and assigning to an 'id' type var, message sends default to 'id'. // rdar"//10988847 llvm-svn: 152420
* [AST/Sema/libclang] Replace getSourceRange().getBegin() with getLocStart().Daniel Dunbar2012-03-0911-162/+162
| | | | | | | | | - getSourceRange().getBegin() is about as awesome a pattern as .copy().size(). I already killed the hot paths so this doesn't seem to impact performance on my tests-of-the-day, but it is a much more sensible (and shorter) pattern. llvm-svn: 152419
* [AST/Sema] Add ↵Daniel Dunbar2012-03-093-0/+11
| | | | | | {CXXBaseSpecifier,Declarator,DeclSpec,TypeLoc,UnqualifiedId}::getLoc{Start,End}. llvm-svn: 152418
* [AST] Define a few more key getLocStart() implementations.Daniel Dunbar2012-03-093-0/+23
| | | | | | | - This cuts the # of getSourceRange calls by 60% on OGF/NSBezierPath-OAExtensions.m. llvm-svn: 152412
* [AST] Reimplement Stmt::getLoc{Start,End} to dispatch to subclass overloads.Daniel Dunbar2012-03-093-3/+71
| | | | | | | | - getSourceRange() can be very expensive, we should try to avoid it if at all possible. In conjunction with the previous commit I measured a ~2% speedup on 403.gcc/combine.c and a 3% speedup on OmniGroupFrameworks/NSBezierPath-OAExtensions.m. llvm-svn: 152411
* [AST] Add {DeclRefExpr,MemberExpr,ImplicitCastExpr}::{getLocStart,getLocEnd} ↵Daniel Dunbar2012-03-092-14/+36
| | | | | | | | methods. - There are probably a lot more of these worth adding, but these are a start at hitting some of the exprs for which getSourceRange().getBegin() is a poor substitute for getLocStart(). llvm-svn: 152410
* [AST] Add DeclaratioName::getLoc{Start,End} for consistency.Daniel Dunbar2012-03-091-0/+7
| | | | llvm-svn: 152409
* [Basic] Rename LangOptions::NoInline to NoInlineDefine, to make things a bitDaniel Dunbar2012-03-093-3/+3
| | | | | | more obvious. llvm-svn: 152408
* Harden test for 32 bit platforms, where size_t is unsigned int (not unsigned ↵Benjamin Kramer2012-03-091-5/+5
| | | | | | long). llvm-svn: 152404
* -Wformat-non-iso: warn about positional arguments (pr12017)Hans Wennborg2012-03-0910-41/+68
| | | | | | | | | This renames the -Wformat-non-standard flag to -Wformat-non-iso, rewords the current warnings a bit (pointing out that a format string is not supported by ISO C rather than being "non standard"), and adds a warning about positional arguments. llvm-svn: 152403
OpenPOWER on IntegriCloud