Anna Zaks [Wed, 14 Mar 2012 21:24:14 +0000 (21:24 +0000)]
[analyzer] A fixup to r152734. Always initialize the flag.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152742
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Wed, 14 Mar 2012 20:50:57 +0000 (20:50 +0000)]
No longer defining LP64 in 64-bit builds on platforms which are not LP64.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152740
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Wed, 14 Mar 2012 20:41:00 +0000 (20:41 +0000)]
When emitting a diagnostic about two-phase name lookup, don't do useless
qualified name lookups into transparent contexts.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152739
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Beaumont-Gay [Wed, 14 Mar 2012 20:21:25 +0000 (20:21 +0000)]
Fix dereference of end iterator. Spotted by ASan.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152738
91177308-0d34-0410-b5e6-
96231b3b80d8
Anna Zaks [Wed, 14 Mar 2012 18:58:28 +0000 (18:58 +0000)]
[analyzer] Diagnostics: Supply Caller information even if the bug occurs
in the callee.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152734
91177308-0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Wed, 14 Mar 2012 18:09:23 +0000 (18:09 +0000)]
objective-c modern translator.
Add the _class_ro_t.reserved field for 64bit targets.
// rdar://
11040024
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152731
91177308-0d34-0410-b5e6-
96231b3b80d8
Erik Verbruggen [Wed, 14 Mar 2012 18:01:43 +0000 (18:01 +0000)]
[Analyser] Remove unnecessary recursive visits for ExprWithCleanups and
MaterializeTemporaryExpr.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152730
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Wed, 14 Mar 2012 17:29:44 +0000 (17:29 +0000)]
Remove clang-wpa example, which has been unmaintained for quite a while.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152729
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Wed, 14 Mar 2012 16:55:17 +0000 (16:55 +0000)]
Minor cleanup in attribute-related diagnostics, from Alexander Kornienko!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152725
91177308-0d34-0410-b5e6-
96231b3b80d8
Sebastian Redl [Wed, 14 Mar 2012 15:54:00 +0000 (15:54 +0000)]
Parse brace initializers as default arguments. PR12236.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152721
91177308-0d34-0410-b5e6-
96231b3b80d8
Erik Verbruggen [Wed, 14 Mar 2012 15:38:55 +0000 (15:38 +0000)]
[Analyser] Removes more recursive visitations in ExprEngine that are no
longer needed as the CFG is fully linearized.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152720
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 14 Mar 2012 09:49:36 +0000 (09:49 +0000)]
[Basic] Change DiagnosticBuilder to use a separate status variable to track whether the builder is active.
- This may seem superflous, but actually this allows the optimizer to more
easily eliminate the isActive() checks needed by the SemaDiagnosticBuilder
and DiagnosticBuilder dtors. And by more easily, I mean the current LLVM is
actually able to do one and not the other. :)
This is good for another 20k code size reduction.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152709
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 14 Mar 2012 09:49:32 +0000 (09:49 +0000)]
[Sema] Fix SemaDiagnosticBuilder to be inline.
- As with DiagnosticBuilder, it is very important that SemaDiagnosticBuilder be
completely inline to ensure that the compiler can rip it apart and sink it to
registers.
This is good for another 30k reduction in code size.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152708
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Beaumont-Gay [Wed, 14 Mar 2012 01:23:41 +0000 (01:23 +0000)]
Remove trailing whitespace (especially after a \ which should be trailing)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152695
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Wed, 14 Mar 2012 01:17:52 +0000 (01:17 +0000)]
-arch is a darwin-only feature, use -target instead to make the linux buildbots happy again.
Also check the error message.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152694
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Wed, 14 Mar 2012 00:25:46 +0000 (00:25 +0000)]
Add support to mangle templated member function names with template
args.
Fixes rdar://
11042577
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152691
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Tue, 13 Mar 2012 23:48:50 +0000 (23:48 +0000)]
Typo.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152686
91177308-0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Tue, 13 Mar 2012 23:48:09 +0000 (23:48 +0000)]
objective-c modern rewriter. Do not add _class_ro_t.reserved
field. // rdar://
11040024
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152685
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Tue, 13 Mar 2012 23:45:51 +0000 (23:45 +0000)]
[driver] Clang should report an error for -faltivec on non-ppc.
rdar://
10963572
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152684
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 13 Mar 2012 23:40:48 +0000 (23:40 +0000)]
When adding member functions to a class add any specializations of
function templates as well.
A future commit will mangle the added name with the template args
like classes are mangled.
Fixes rdar://
10986010
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152683
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Tue, 13 Mar 2012 23:33:06 +0000 (23:33 +0000)]
Add a test case for PR8385.
"struct{template struct{" would fail an assertion.
This assertion failure seems to have gone away somewhere along the line so
here's a test to make sure we don't regress. We still accept some very weird
explicit template 'instantiations' ("template int;", anyone) but at least we're
not asserting/crashing here.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152681
91177308-0d34-0410-b5e6-
96231b3b80d8
Anna Zaks [Tue, 13 Mar 2012 22:15:58 +0000 (22:15 +0000)]
[analyser] Refactor shouldInline logic into a helper.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152677
91177308-0d34-0410-b5e6-
96231b3b80d8
Anna Zaks [Tue, 13 Mar 2012 22:15:55 +0000 (22:15 +0000)]
[analyzer] Call enter/exit diagnostic should refer to caller/callee,
respectively.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152676
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Tue, 13 Mar 2012 21:02:14 +0000 (21:02 +0000)]
[Basic] Fix up DiagnosticBuilder::{FlushCounts,Emit} to be inline.
- This is much more important than it appears at first glance...
The intended design of DiagnosticBuilder was that it never escape and that all
its members would get lowered to registers by the compiler. By fixing Emit here,
the compiler can completely eliminate the DiagnosticBuilder object and never
need to push those registers back into it.
Unfortunately, Sema has broken DiagnosticBuilder in other ways (by introducing
SemaDiagnosticBuilder), so we don't get the fill impact of this, but it is still
good for 30k reduction in code size. I'll work on fixing the
SemaDiagnosticBuilder problems next.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152669
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Tue, 13 Mar 2012 20:58:32 +0000 (20:58 +0000)]
Allow vectors to be constructed from constexpr function arguments in
constant expressions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152665
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Tue, 13 Mar 2012 20:31:40 +0000 (20:31 +0000)]
Update test case to use not tool.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152664
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Tue, 13 Mar 2012 20:09:56 +0000 (20:09 +0000)]
[driver] Parse diagnostic args in the driver.
Previously, only diagnostics thrown by the cc1 process were
actually honoring the diagnostic options given on the command line,
like -Werror.
Reuse the existing code in Frontend currently used for cc1,
adjusting it to not interpret -Wl, linker flags as warnings.
Also fix a faulty test exposed by this change.
It wasn't actually testing anything, and was giving this warning:
clang-3: warning: argument unused during compilation: '-verify'
Which -Werror didn't turn into an error because it was output
by the driver, not the cc1 process, and diagnostic options
weren't parsed by the driver. And you couldn't see the warning
when running the test suite.
Fixes PR12181.
Patch by Dylan Noblesmith <nobled@dreamwidth.org>.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152660
91177308-0d34-0410-b5e6-
96231b3b80d8
Anna Zaks [Tue, 13 Mar 2012 19:32:19 +0000 (19:32 +0000)]
[analyzer] Change the order in which we analyze the functions under
inlining to be the reverse of their declaration.
This optimizes running time under inlining up to 20% since we do not
re-analyze the utility functions which are usually defined first in the
translation unit if they have already been analyzed while inlined into
the root functions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152653
91177308-0d34-0410-b5e6-
96231b3b80d8
Anna Zaks [Tue, 13 Mar 2012 19:32:13 +0000 (19:32 +0000)]
[analyzer] Use BFS over call graph when analysing functions.
BFS should give slightly better performance. Ex: Suppose, we have two
roots R1 and R2. A callee function C is reachable through both. However,
C is not inlined when analyzing R1 due to inline stack depth limit. With
DFS, C will be analyzed as top level even though it would be analyzed as
inlined through R2. On the other hand, BFS could avoid analyzing C as
top level.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152652
91177308-0d34-0410-b5e6-
96231b3b80d8
Anna Zaks [Tue, 13 Mar 2012 19:32:08 +0000 (19:32 +0000)]
[analyzer] Refactor CallGraph to use Recursive AST visitor when
collecting function Decls.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152651
91177308-0d34-0410-b5e6-
96231b3b80d8
Anna Zaks [Tue, 13 Mar 2012 19:32:00 +0000 (19:32 +0000)]
[analyzer] Use recursive AST visitor to drive simple visitation order in
AnalysisConsumer.
As a result:
- We now analyze the C++ methods which are defined within the
class body. These were completely skipped before.
- Ensure that AST checkers are called on functions in the
order they are defined in the Translation unit.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152650
91177308-0d34-0410-b5e6-
96231b3b80d8
Anna Zaks [Tue, 13 Mar 2012 19:31:54 +0000 (19:31 +0000)]
[analyzer] Minor: factor out logic for determining if we should skip a
function.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152649
91177308-0d34-0410-b5e6-
96231b3b80d8
Anna Zaks [Tue, 13 Mar 2012 19:31:47 +0000 (19:31 +0000)]
[analyzer] Move the check for parser errors out of the loop over Decls.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152648
91177308-0d34-0410-b5e6-
96231b3b80d8
Roman Divacky [Tue, 13 Mar 2012 19:20:17 +0000 (19:20 +0000)]
Fix the long double to be of width/align 64. Rename va_list_test to
powerpc_types and add testing for the (long) double there.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152647
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Tue, 13 Mar 2012 18:30:54 +0000 (18:30 +0000)]
Spelling.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152644
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Tue, 13 Mar 2012 18:30:50 +0000 (18:30 +0000)]
[Basic] Make DiagnosticBuilder::{Clear,Emit} protected.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152643
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Tue, 13 Mar 2012 18:30:46 +0000 (18:30 +0000)]
[Basic] Eliminate DiagnosticBuilder::Suppress and matching ctor, this stuff is
not used anymore (good thing we are still paying for it!).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152642
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Tue, 13 Mar 2012 18:30:42 +0000 (18:30 +0000)]
[Basic] Make DiagnosticBuilder::{isActive,getLocation,getDiagID} protected.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152641
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Tue, 13 Mar 2012 18:30:38 +0000 (18:30 +0000)]
[Basic] Fix ~Diagnostic() to not call Emit() when there is no diag obj (most
commonly when the diag has been copied).
- This eliminates a completely spurious call to Emit() which was in
Sema::Diag(). Sob.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152640
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Tue, 13 Mar 2012 18:21:17 +0000 (18:21 +0000)]
[Basic] Stop using a SmallVector<> for Diagnostic. This drops Clang binary size
by ~%.3/~100k in my build -- simply by eliminating the horrible code bloat coming
from the .clear() of the SmallVector<FixItHint>, which does a std::~string, etc.
- My understanding is we don't ever emit arbitrary numbers of fixits, so I just
moved us to using a statically sized array like we do for arguments and
ranges.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152639
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Tue, 13 Mar 2012 17:05:43 +0000 (17:05 +0000)]
Remove unused-but-set variable.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152633
91177308-0d34-0410-b5e6-
96231b3b80d8
Roman Divacky [Tue, 13 Mar 2012 16:53:54 +0000 (16:53 +0000)]
Long double is just double on FreeBSD/{PPC,PPC64}.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152632
91177308-0d34-0410-b5e6-
96231b3b80d8
David Chisnall [Tue, 13 Mar 2012 14:14:54 +0000 (14:14 +0000)]
Tweak linkage order for solaris.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152627
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Tue, 13 Mar 2012 08:55:35 +0000 (08:55 +0000)]
Ensure that default arguments are handled correctly in sub scopes. For example:
void f () {
int g (int a, int b=4);
{
int g(int a, int b=5);
}
}
should compile.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152621
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Tue, 13 Mar 2012 07:21:50 +0000 (07:21 +0000)]
Implement [temp.param]p5: the top-level cv-qualifiers on a non-type template
parameter's declaration are ignored when determining the parameter's type.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152619
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Tue, 13 Mar 2012 06:56:52 +0000 (06:56 +0000)]
PR11850 + duplicates: don't assume that a function parameter pack expansion is
at the end of the parameter list.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152618
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Tue, 13 Mar 2012 05:56:40 +0000 (05:56 +0000)]
PR11925: A function can't have a variably-modified return type. Not even in C++.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152615
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Tue, 13 Mar 2012 04:12:34 +0000 (04:12 +0000)]
It never makes sense to do a lookup into a LinkageSpecDecl, so assert that we
don't, and clean up the places that do it.
The change to ASTWriter is surprising, but the deleted code is a no-op as of
r152608.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152609
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Tue, 13 Mar 2012 03:12:56 +0000 (03:12 +0000)]
Fix PR10447: lazily building name lookup tables for DeclContexts was broken.
The deferred lookup table building step couldn't accurately tell which Decls
should be included in the lookup table, and consequently built different tables
in some cases.
Fix this by removing lazy building of DeclContext name lookup tables. In
practice, the laziness was frequently not worthwhile in C++, because we
performed lookup into most DeclContexts. In C, it had a bit more value,
since there is no qualified lookup.
In the place of lazy lookup table building, we simply don't build lookup tables
for function DeclContexts at all. Such name lookup tables are not useful, since
they don't capture the scoping information required to correctly perform name
lookup in a function scope.
The resulting performance delta is within the noise on my testing, but appears
to be a very slight win for C++ and a very slight loss for C. The C performance
can probably be recovered (if it is a measurable problem) by avoiding building
the lookup table for the translation unit.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152608
91177308-0d34-0410-b5e6-
96231b3b80d8
Argyrios Kyrtzidis [Tue, 13 Mar 2012 02:17:06 +0000 (02:17 +0000)]
[libclang] When there's a file error when saving the PCH, make sure to
clear the error from raw_fd_ostream, otherwise we will crash.
rdar://
10976410
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152605
91177308-0d34-0410-b5e6-
96231b3b80d8
John McCall [Tue, 13 Mar 2012 01:10:51 +0000 (01:10 +0000)]
Make the error about assigning to lambda-captured variables
clearer, and mention the existence of mutable lambdas.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152598
91177308-0d34-0410-b5e6-
96231b3b80d8
Argyrios Kyrtzidis [Tue, 13 Mar 2012 01:09:41 +0000 (01:09 +0000)]
[Sema] Prefer to use ObjCInterfaceDecl's protocol_begin()/protocol_end() iterators instead of
ObjCInterfaceDecl::getReferencedProtocols(), because the iterators are safe to use
even if the caller did not check that the interface is a definition.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152597
91177308-0d34-0410-b5e6-
96231b3b80d8
Argyrios Kyrtzidis [Tue, 13 Mar 2012 01:09:36 +0000 (01:09 +0000)]
Fix crash at @implementation with a forward reference as base class.
rdar://
11020003
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152596
91177308-0d34-0410-b5e6-
96231b3b80d8
John McCall [Tue, 13 Mar 2012 00:37:01 +0000 (00:37 +0000)]
Alternate fix to PR12248: put Sema in charge of special-casing
the diagnostic for assigning to a copied block capture. This has
the pleasant side-effect of letting us special-case the diagnostic
for assigning to a copied lambda capture as well, without introducing
a new non-modifiable enumerator for it.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152593
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Tue, 13 Mar 2012 00:02:21 +0000 (00:02 +0000)]
[msvc] Honor %INCLUDE%. It should know essential search paths with vcvarsall.bat.
FYI,
On VS10, %INCLUDE% contains;
(VS10)\VC\INCLUDE
(VS10)\VC\ATLMFC\INCLUDE
(SDK70A)\include
On VS11,
(VS11)\VC\INCLUDE
(VS11)\VC\ATLMFC\INCLUDE
(SDK80)\include\shared
(SDK80)\include\um
(SDK80)\include\winrt
FIXME: It may be enabled also on mingw.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152589
91177308-0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Mon, 12 Mar 2012 23:58:28 +0000 (23:58 +0000)]
modern objective-c translator. @try/@catch translation. wip.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152587
91177308-0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Mon, 12 Mar 2012 23:14:53 +0000 (23:14 +0000)]
Add new analyzer diagnostic mode where plists can have bugs that span multiple files.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152586
91177308-0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Mon, 12 Mar 2012 22:10:57 +0000 (22:10 +0000)]
[analyzer] Include inlining call stack depth in plist output.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152584
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Mon, 12 Mar 2012 22:10:06 +0000 (22:10 +0000)]
Address some of the concerns by Chandler.
* s/AddDirectoryList/addDirectoryList/
* Move the call to ::getenv into the function.
* FileCheck-ize the testcase.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152583
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Mon, 12 Mar 2012 21:24:57 +0000 (21:24 +0000)]
Update FIXME.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152579
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Mon, 12 Mar 2012 21:22:35 +0000 (21:22 +0000)]
Have clang pay attention to the LIBRARY_PATH environment variable.
The LIBRARY_PATH environment variable should be honored by clang. Have the
driver pass the directories to the linker.
<rdar://problem/
9743567> and PR10296.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152578
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Mon, 12 Mar 2012 21:09:16 +0000 (21:09 +0000)]
C++11 [temp.deduct.call]p6 tweak: when given a set of overlaoded
functions that includes an explicit template argument list, perform
an inner deduction against each of the function templates in that list
and, if successful, use the result of that deduction for the outer
template argument deduction. Fixes PR11713.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152575
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Mon, 12 Mar 2012 20:57:19 +0000 (20:57 +0000)]
Make sure we treat variables captured by reference in lambda as modifiable lvalues. Regression from r152491. Fixes PR12248.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152573
91177308-0d34-0410-b5e6-
96231b3b80d8
Argyrios Kyrtzidis [Mon, 12 Mar 2012 18:34:26 +0000 (18:34 +0000)]
[Sema] -Add an invalid objc category to the DeclContext so that it can be
serialized
-Don't add methods of invalid objc containers to the global method pool.
This protects us from trying to serialize a method whose container was not
serialized.
Part of rdar://
11007039.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152566
91177308-0d34-0410-b5e6-
96231b3b80d8
Jordy Rose [Mon, 12 Mar 2012 17:53:02 +0000 (17:53 +0000)]
ObjCBoolLiterals (__objc_yes/__objc_no) behave like C++ booleans (true/false). They are NOT objects.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152564
91177308-0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Mon, 12 Mar 2012 16:46:58 +0000 (16:46 +0000)]
objective-c modern translator: ivar offset symbols
will reside in .objc_ivar$B sections. // rdar://
11023490
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152563
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Mon, 12 Mar 2012 15:39:49 +0000 (15:39 +0000)]
Fix a crash-on-invalid found by -Wlogical-op-parentheses.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152559
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Mon, 12 Mar 2012 09:14:10 +0000 (09:14 +0000)]
Use ZeroLengthBitfieldAlignment for AAPCS, as well as APCS-GNU.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152552
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Mon, 12 Mar 2012 08:56:40 +0000 (08:56 +0000)]
Fix parsing of trailing-return-type. Types are syntactically prohibited from
being defined here: [] () -> struct S {} does not define struct S.
In passing, implement DR1318 (syntactic disambiguation of 'final').
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152551
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Mon, 12 Mar 2012 07:56:15 +0000 (07:56 +0000)]
Fix parsing of type-specifier-seq's. Types are syntactically allowed to be
defined here, but not semantically, so
new struct S {};
is always ill-formed, even if there is a struct S in scope.
We also had a couple of bugs in ParseOptionalTypeSpecifier caused by it being
under-loved (due to it only being used in a few places) so merge it into
ParseDeclarationSpecifiers with a new DeclSpecContext. To avoid regressing, this
required improving ParseDeclarationSpecifiers' diagnostics in some cases. This
also required teaching ParseSpecifierQualifierList about constexpr... which
incidentally fixes an issue where we'd allow the constexpr specifier in other
bad places.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152549
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Sun, 11 Mar 2012 23:14:21 +0000 (23:14 +0000)]
Fix typo in comment, 'langauge' -> 'language'.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152547
91177308-0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Sun, 11 Mar 2012 19:41:56 +0000 (19:41 +0000)]
objective-c modern abi rewriter: provide section pragmas for
statically writter metadata.
// rdar://
11023490
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152546
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Sun, 11 Mar 2012 17:21:03 +0000 (17:21 +0000)]
Document the weak-linking behavior of the availability attribute
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152543
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Sun, 11 Mar 2012 08:04:40 +0000 (08:04 +0000)]
Update library dependencies to add clangEdit on c-index-test and c-arcmt-test.
To link with -static -lclang, linker tries to seek not libclang.so, clang.dll nor libclang.dll.a, but libclang.a. USEDLIBS should have correct dependencies for -static.
(In contrast, USEDLIBS=libclang.so might be enough w/o -static)
FYI, cygwin build (in buildbot) is using -static, due to avoiding weirdness of extremely slower startup lag of clang.exe.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152539
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Sun, 11 Mar 2012 07:00:24 +0000 (07:00 +0000)]
Unify naming of LangOptions variable/get function across the Clang stack (Lex to AST).
The member variable is always "LangOpts" and the member function is always "getLangOpts".
Reviewed by Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152536
91177308-0d34-0410-b5e6-
96231b3b80d8
Stepan Dyatkovskiy [Sun, 11 Mar 2012 06:09:37 +0000 (06:09 +0000)]
llvm::SwitchInst
Renamed methods caseBegin, caseEnd and caseDefault with case_begin, case_end, and case_default.
Added some notes relative to case iterators.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152533
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Sun, 11 Mar 2012 04:53:21 +0000 (04:53 +0000)]
Document the availability attribute
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152531
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Sun, 11 Mar 2012 03:29:50 +0000 (03:29 +0000)]
When template argument deduction is ignoring qualifiers, perform deep
structural comparison of non-dependent types. Otherwise, we end up
rejecting cases where the non-dependent types don't match due to
qualifiers in, e.g., a pointee type. Fixes PR12132.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152529
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Sun, 11 Mar 2012 03:06:00 +0000 (03:06 +0000)]
cxx_status: No compiler changes are required for 'minimal support for garbage
collection'. Keep it in the table to match gcc's table, but mark it N/A.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152528
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Sun, 11 Mar 2012 02:23:56 +0000 (02:23 +0000)]
Add a missing 'template' keyword.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152526
91177308-0d34-0410-b5e6-
96231b3b80d8
Jordy Rose [Sun, 11 Mar 2012 00:08:24 +0000 (00:08 +0000)]
[analyzer] Replace a static helper with existing logic. No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152521
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Sat, 10 Mar 2012 23:52:41 +0000 (23:52 +0000)]
When determining whether an identifier followed by a '<' in a member
access expression is the start of a template-id, ignore function
templates found in the context of the entire postfix-expression. Fixes
PR11856.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152520
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Sat, 10 Mar 2012 23:40:02 +0000 (23:40 +0000)]
Fix crash & accepts-invalid for array of arrays of user defined type.
Test case/other help by Richard Smith.
Code review by John McCall.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152519
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Sat, 10 Mar 2012 22:52:10 +0000 (22:52 +0000)]
Updated the test so that it checks for ms-compatibility in addition to ms-extensions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152516
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Sat, 10 Mar 2012 22:28:45 +0000 (22:28 +0000)]
Adding namespace qualifiers to the visualizers and improving their behavior.
Patch thanks to Nikola Smiljanic
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152514
91177308-0d34-0410-b5e6-
96231b3b80d8
Gregory Szorc [Sat, 10 Mar 2012 22:23:27 +0000 (22:23 +0000)]
[clang.py] Implement Cursor.objc_type_encoding
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152513
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Sat, 10 Mar 2012 22:21:14 +0000 (22:21 +0000)]
No longer defining GNUC mode when compiling for Microsoft compatibility. This allows people's cross-platform compiler-specific macros to work properly.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152512
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Sat, 10 Mar 2012 22:20:11 +0000 (22:20 +0000)]
Clarify even further that the lambda-to-block-pointer conversion is only available in Objective-C++
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152511
91177308-0d34-0410-b5e6-
96231b3b80d8
Gregory Szorc [Sat, 10 Mar 2012 22:19:05 +0000 (22:19 +0000)]
[clang.py] Refactor get_tu and get_cursor test helper functions into util.py
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152510
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Sat, 10 Mar 2012 22:18:57 +0000 (22:18 +0000)]
PR12225: The requirement that literal operators be namespace-scope functions
does not imply that such functions can't be declared at block scope.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152509
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sat, 10 Mar 2012 20:55:36 +0000 (20:55 +0000)]
Use VersionTuple to manage macosx versions in the driver. No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152504
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sat, 10 Mar 2012 20:38:56 +0000 (20:38 +0000)]
Simplify code. No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152503
91177308-0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Sat, 10 Mar 2012 18:25:06 +0000 (18:25 +0000)]
objective-c modern rewriter: add __declspec(dllexport) to forward
declaration of class metadata when they are defined later.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152500
91177308-0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Sat, 10 Mar 2012 17:45:38 +0000 (17:45 +0000)]
objc modern rewriter: Define __OBJC2__ in written file.
// rdar://
11024543
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152496
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sat, 10 Mar 2012 15:08:09 +0000 (15:08 +0000)]
Replace a map of boolean values with a set.
No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152494
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Sat, 10 Mar 2012 13:01:40 +0000 (13:01 +0000)]
The type of a definition should not increase its visibility. Fixes PR12221.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152493
91177308-0d34-0410-b5e6-
96231b3b80d8
John McCall [Sat, 10 Mar 2012 09:33:50 +0000 (09:33 +0000)]
Remove BlockDeclRefExpr and introduce a bit on DeclRefExpr to
track whether the referenced declaration comes from an enclosing
local context. I'm amenable to suggestions about the exact meaning
of this bit.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152491
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Sat, 10 Mar 2012 07:47:07 +0000 (07:47 +0000)]
Slightly tweak this condition. "isTransparentContext()" was checking whether an
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.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152489
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Sat, 10 Mar 2012 07:45:33 +0000 (07:45 +0000)]
Could not find this in C99. Perhaps this rule comes from a DR, but in any case
please annotate it with a note explaining why this wrong-seeming behaviour is
correct.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152488
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Sat, 10 Mar 2012 06:53:13 +0000 (06:53 +0000)]
Only make a call to a copy constructor elidable if in fact we are
doing a copy. Fixes PR12139.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152485
91177308-0d34-0410-b5e6-
96231b3b80d8