]>
granicus.if.org Git - clang/log
Douglas Gregor [Sat, 16 May 2009 00:20:29 +0000 (00:20 +0000)]
Template instantiation for IndirectGotoStmt. Now my life is complete.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71917
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Fri, 15 May 2009 23:57:33 +0000 (23:57 +0000)]
Template instantiation for switch statements
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71916
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Fri, 15 May 2009 23:19:35 +0000 (23:19 +0000)]
Removed superfluous code.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71909
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Fri, 15 May 2009 23:15:03 +0000 (23:15 +0000)]
Early support for __format__attribute on blocks.
Work in progress...
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71908
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Fri, 15 May 2009 23:10:19 +0000 (23:10 +0000)]
Basic support for member exprs where the base expr type is dependent.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71907
91177308 -0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Fri, 15 May 2009 22:33:15 +0000 (22:33 +0000)]
Classes with "+load" methods need to go in the non-lazy class list (or
else the method will not be found by the runtime at class load time).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71904
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Fri, 15 May 2009 22:32:39 +0000 (22:32 +0000)]
Template instantiation for break and continue statements.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71903
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Fri, 15 May 2009 22:19:30 +0000 (22:19 +0000)]
Introduce the EXPR macro into StmtNodes.def, so that we can
distinguish between expression and statement nodes. No functionality
change.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71902
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Fri, 15 May 2009 22:12:32 +0000 (22:12 +0000)]
Template instantiation for "for" loops
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71901
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Fri, 15 May 2009 21:56:27 +0000 (21:56 +0000)]
Update checker build.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71900
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Fri, 15 May 2009 21:56:04 +0000 (21:56 +0000)]
Template instantiation for do-while statements.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71899
91177308 -0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Fri, 15 May 2009 21:48:48 +0000 (21:48 +0000)]
Factor code for adding module-level class lists into separate method.
- No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71898
91177308 -0d34-0410-b5e6-
96231b3b80d8
Mike Stump [Fri, 15 May 2009 21:47:08 +0000 (21:47 +0000)]
Fixup parsing for (throw,throw) and __extension__ throw 1.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71897
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Fri, 15 May 2009 21:45:53 +0000 (21:45 +0000)]
Template instantiation for WhileStmt and CXXConditionDeclExpr.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71896
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Fri, 15 May 2009 21:18:27 +0000 (21:18 +0000)]
Make sure that we use the canonical type for the names of instantiated
constructors and destructors. This is a requirement of
DeclarationNameTable::getCXXSpecialName that we weren't assert()'ing,
so it should have been caught much earlier :(
Big thanks to Anders for the test case.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71895
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Fri, 15 May 2009 21:18:04 +0000 (21:18 +0000)]
improved on diagnosing misplacement of sentinel attributes.
No change in functionality.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71894
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Fri, 15 May 2009 21:14:16 +0000 (21:14 +0000)]
Add hack to scan-build to fix PR 4215
(http://llvm.org/bugs/show_bug.cgi?id=4215): When xcodebuild is invoked with
-sdk iphonesimulator3.0, use gcc-4.2 instead of the system default gcc.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71891
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Fri, 15 May 2009 20:49:33 +0000 (20:49 +0000)]
added -fblocks to the test.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71890
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Fri, 15 May 2009 20:47:12 +0000 (20:47 +0000)]
Allow instantiation of NULL expressions and statements
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71889
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Fri, 15 May 2009 20:33:25 +0000 (20:33 +0000)]
This patch finishes off the sentinel attribute handling for
blocks and function pointers.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71888
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Fri, 15 May 2009 20:29:28 +0000 (20:29 +0000)]
I take it back, InstantiateExpr does not check for null.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71887
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Fri, 15 May 2009 20:26:03 +0000 (20:26 +0000)]
Instantiation support for 'this'
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71886
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Fri, 15 May 2009 20:10:48 +0000 (20:10 +0000)]
No need to null check the expr, Sema::SemaRef.InstantiateExpr handles all that.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71885
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Fri, 15 May 2009 20:08:59 +0000 (20:08 +0000)]
Add SemaTemplateInstantiateStmt.cpp to Xcode project.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71884
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Fri, 15 May 2009 19:11:46 +0000 (19:11 +0000)]
Make sure that the type associated with a class template is dependent.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71878
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Fri, 15 May 2009 18:53:42 +0000 (18:53 +0000)]
Template instantiation for "if" statements. Also:
- Skip semantic analysis of the "if" condition if it is type-dependent.
- Added the location of the "else" keyword into IfStmt, so that we can
provide it for type-checking after template instantiation.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71875
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Fri, 15 May 2009 18:40:51 +0000 (18:40 +0000)]
Update checker build.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71874
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Fri, 15 May 2009 18:35:39 +0000 (18:35 +0000)]
A C++ member function always has either weak linkage (if it's inline or defined inline) or strong linkage (other cases).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71873
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Fri, 15 May 2009 18:22:25 +0000 (18:22 +0000)]
Move statement instantiation into its own file. No functionality change
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71872
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Fri, 15 May 2009 18:05:24 +0000 (18:05 +0000)]
When word-wrapping, be more defensive about a ridiculously small number of columns. Fixes <rdar://problem/
6892178 >
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71870
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Fri, 15 May 2009 17:59:04 +0000 (17:59 +0000)]
Call ActOnStartOfFunctionDecl/ActOnFinishFunctionBody when
instantiating the definition of a function from a template.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71869
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Fri, 15 May 2009 16:09:15 +0000 (16:09 +0000)]
Name mangling for class template specializations and template arguments.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71861
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 15 May 2009 16:08:43 +0000 (16:08 +0000)]
Fix processing of -Ufoo to not inject "#undef foo 1" into the predefines
buffer. This caused exciting nonsense like this:
$ clang t.c -fsyntax-only -UMACRO
In file included from <built-in>:104:
<command line>:1:14: warning: extra tokens at end of #undef directive [-Wextra-tokens]
#undef MACRO 1
^
//
1 diagnostic generated.
rdar://
6891800
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71860
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Fri, 15 May 2009 15:49:00 +0000 (15:49 +0000)]
Fix crash when deriving the enclosing summary of a method whose first selector slot has a null IdentifierInfo*. This happens when analyzing Growl.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71857
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Fri, 15 May 2009 06:02:08 +0000 (06:02 +0000)]
Remove extra whitespace character in string literal. Purely cosmetic.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71847
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Fri, 15 May 2009 05:59:34 +0000 (05:59 +0000)]
Update checker build.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71846
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Fri, 15 May 2009 05:34:49 +0000 (05:34 +0000)]
Use dyn_cast instead of cast to allow our assumptions to be safely wrong.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71843
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Fri, 15 May 2009 05:25:09 +0000 (05:25 +0000)]
Cleanup internal checks bug reporting, allowing intermediate diagnostics to be generated for bad argument warnings, bad branches, etc.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71838
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Fri, 15 May 2009 04:20:31 +0000 (04:20 +0000)]
Re-enable passing analyzer options from scan-build to ccc-analyzer.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71836
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Fri, 15 May 2009 04:07:18 +0000 (04:07 +0000)]
Don't strip quotes in compiler line for -D arguments.
Fixes PR 4205.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71835
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Fri, 15 May 2009 02:46:13 +0000 (02:46 +0000)]
BugReporter (extensive diagnostics): Do not include the range of target '}'
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71832
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Fri, 15 May 2009 02:05:25 +0000 (02:05 +0000)]
PathDiagnosticLocation::asRange(): for a PathDiagnosticLocation, the range of a DeclStmt is only the decl, not
the decl + initializer.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71831
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Fri, 15 May 2009 01:50:15 +0000 (01:50 +0000)]
BugReporter (extensive diagnostics): Add control-flow piece to '}' in
loop body when generating 'Looping back to the head of the loop'
diagnostics.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71829
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Fri, 15 May 2009 00:48:27 +0000 (00:48 +0000)]
Instantiate return statements.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71825
91177308 -0d34-0410-b5e6-
96231b3b80d8
Mike Stump [Fri, 15 May 2009 00:29:54 +0000 (00:29 +0000)]
Fixup debug information for the location information for __block
variables. For this to work, the backend needs to handle more complex
forms for locations.
A typical utterance would be:
%forwarding = getelementptr %0* %use_by_ref, i32 0, i32 1 ; <i8**> [#uses=1]
%0 = load i8** %forwarding ; <i8*> [#uses=1]
%1 = bitcast i8* %0 to %0* ; <%0*> [#uses=1]
%x = getelementptr %0* %1, i32 0, i32 4 ; <i32*> [#uses=1]
%2 = bitcast i32* %x to { }* ; <{ }*> [#uses=1]
call void @llvm.dbg.declare({ }* %2, { }* bitcast (%llvm.dbg.variable.type* @llvm.dbg.variable to { }*))
Presently when selection finds something it doesn't understand, it
just avoids generating any information, which is safe, just
incomplete. Radar
6867696
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71824
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Fri, 15 May 2009 00:21:21 +0000 (00:21 +0000)]
Add NullStmt::Clone and use it
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71823
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Fri, 15 May 2009 00:15:26 +0000 (00:15 +0000)]
Instantiate goto and label statements. (Very useful, I know)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71822
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Fri, 15 May 2009 00:10:12 +0000 (00:10 +0000)]
Add SemaTemplateInstantiateExpr.cpp to Xcode project.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71820
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Fri, 15 May 2009 00:01:03 +0000 (00:01 +0000)]
Implement template instantiation for DeclStmt
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71818
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Thu, 14 May 2009 23:52:54 +0000 (23:52 +0000)]
Don't warn if result/argument type of an implemented
method is a qualified id which conforms to the matching type
of its method declaration.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71817
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Thu, 14 May 2009 23:40:54 +0000 (23:40 +0000)]
Template instantiation for the NULL statement. Lame, I know
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71816
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Thu, 14 May 2009 23:26:13 +0000 (23:26 +0000)]
Introduce basic support for instantiating the definitions of member
functions of class templates. Only compound statements and expression
statements are currently implemented.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71814
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Thu, 14 May 2009 22:15:41 +0000 (22:15 +0000)]
Check that the function being overridden is virtual.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71802
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Thu, 14 May 2009 21:46:00 +0000 (21:46 +0000)]
Improvements to the FunctionDecl getters/setters.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71800
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Thu, 14 May 2009 21:44:34 +0000 (21:44 +0000)]
Introduce a stack of instantiation scopes that are used to store the mapping from variable declarations that occur within templates to their instantiated counterparts
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71799
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Thu, 14 May 2009 21:29:16 +0000 (21:29 +0000)]
Fix <rdar://problem/
6859457 > [NSData dataWithBytesNoCopy] does not return a retained object.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71797
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Thu, 14 May 2009 21:20:16 +0000 (21:20 +0000)]
Fix the same speling error in the test case (Duh).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71793
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Thu, 14 May 2009 21:06:31 +0000 (21:06 +0000)]
Link FunctionDecls instantiated from the member functions of a class
template to the FunctionDecls from which they were instantiated. This
is a necessary first step to support instantiation of the definitions
of such functions, but by itself does essentially nothing.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71792
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Thu, 14 May 2009 21:03:44 +0000 (21:03 +0000)]
Fix a speling error.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71791
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Thu, 14 May 2009 20:57:28 +0000 (20:57 +0000)]
updated comments.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71790
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Thu, 14 May 2009 20:53:39 +0000 (20:53 +0000)]
Adds recognition of sentinel attribute on block declarations.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71788
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Thu, 14 May 2009 19:52:19 +0000 (19:52 +0000)]
Better diagnostics for covariance when checking overriding return types.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71786
91177308 -0d34-0410-b5e6-
96231b3b80d8
Sebastian Redl [Thu, 14 May 2009 18:11:41 +0000 (18:11 +0000)]
When there are any member new operators, global versions aren't looked up at all.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71780
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Thu, 14 May 2009 18:00:00 +0000 (18:00 +0000)]
Diagnose missing sentinel argument on a funciton call
with sentinel attribute.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71778
91177308 -0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Thu, 14 May 2009 17:00:11 +0000 (17:00 +0000)]
Avoid generating temp in source directory
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71776
91177308 -0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Thu, 14 May 2009 16:42:16 +0000 (16:42 +0000)]
Skip the asm prefix when storing the name in block info.
- Otherwise we emit internal names with embedded '\01' characters,
which confuses some tools.
- Ideally all the code which wants to get a "display name" for the
given function should follow one code path, but this should be a
monotonic improvement for now.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71774
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Thu, 14 May 2009 16:41:31 +0000 (16:41 +0000)]
In C++, warn when something previously declared as a "struct" is later
declared as a "class", or vice-versa. This warning is under the
control of -Wmismatched-tags, which is off by default.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71773
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Thu, 14 May 2009 15:47:53 +0000 (15:47 +0000)]
Add forward declaration of Token. Thanks to Martin Doucha for pointing this out
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71772
91177308 -0d34-0410-b5e6-
96231b3b80d8
Mike Stump [Thu, 14 May 2009 02:03:51 +0000 (02:03 +0000)]
Enhance debug information for block literals. Radar
6867696
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71763
91177308 -0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Thu, 14 May 2009 01:45:24 +0000 (01:45 +0000)]
We need to specify the "linkage name" to the subprogram now that we
emit the correct "display name". I suspect we need more work here, see
FIXME for example.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71761
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Thu, 14 May 2009 01:09:04 +0000 (01:09 +0000)]
Add return type checking for overriding virtual functions. We currently don't check covariance but that's next.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71759
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Thu, 14 May 2009 00:28:11 +0000 (00:28 +0000)]
Implement explicit instantiations of member classes of class templates, e.g.,
template<typename T>
struct X {
struct Inner;
};
template struct X<int>::Inner;
This change is larger than it looks because it also fixes some
a problem with nested-name-specifiers and tags. We weren't requiring
the DeclContext associated with the scope specifier of a tag to be
complete. Therefore, when looking for something like "struct
X<int>::Inner", we weren't instantiating X<int>.
This, naturally, uncovered a problem with member pointers, where we
were requiring the left-hand side of a member pointer access
expression (e.g., x->*) to be a complete type. However, this is wrong:
the semantics of this expression does not require a complete type (EDG
agrees).
Stuart vouched for me. Blame him.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71756
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Wed, 13 May 2009 23:20:50 +0000 (23:20 +0000)]
Look for and diagnose missing sentinel argument on message
dispatch arguments which have sentinel attribute.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71737
91177308 -0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 13 May 2009 23:08:57 +0000 (23:08 +0000)]
Make sure not to include the LLVM asm prefix in function names for
debug info.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71736
91177308 -0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 13 May 2009 21:40:49 +0000 (21:40 +0000)]
Note that clang follows the MSVC definition for #pragma pack.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71725
91177308 -0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 13 May 2009 21:34:08 +0000 (21:34 +0000)]
Add a test case to showcase a difference in #pragma pack handling
compared to gcc. This is worrisome, but I believe we are doing the
"correct" thing, and if I recall correctly I previously verified this
versus MSVC.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71723
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Wed, 13 May 2009 21:22:06 +0000 (21:22 +0000)]
Use an iterator type for found_decls_begin/found_decls_end.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71721
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Wed, 13 May 2009 21:11:42 +0000 (21:11 +0000)]
Add a new, more advanced CheckDerivedToBaseConversion that takes custom diagnostic IDs.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71720
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 13 May 2009 21:07:32 +0000 (21:07 +0000)]
Add some basic type checking for attributes ns_returns_retained and
cf_returns_retained. Currently this attribute can now be applied to any
Objective-C method or C function that returns a pointer or Objective-C object
type.
Modify the tablegen definition of diagnostic 'warn_attribute_wrong_decl_type' to
expect that the diagnostics infrastructure will add quotes around the attribute
name when appropriate. Alonq with this change, I modified the places where this
warning is issued to passed the attribute's IdentifierInfo* instead of having a
hard-coded C constant string.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71718
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 13 May 2009 20:49:00 +0000 (20:49 +0000)]
Update checker build.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71716
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Wed, 13 May 2009 20:28:22 +0000 (20:28 +0000)]
Explicit instantiations of templates now instantiate the definitions
of class members (recursively). Only member classes are actually
instantiated; the instantiation logic for member functions and
variables are just stubs.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71713
91177308 -0d34-0410-b5e6-
96231b3b80d8
Anders Carlsson [Wed, 13 May 2009 19:49:53 +0000 (19:49 +0000)]
Disable access control by default. It can be enabled with the -faccess-control option. When we have better support for it, we can enable it by default again.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71706
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 13 May 2009 19:23:41 +0000 (19:23 +0000)]
Add PostStmt::getStmtAs(). This unbreaks the build.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71701
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 13 May 2009 19:16:35 +0000 (19:16 +0000)]
Enhance diagnostics value tracking logic for null dereferences and uninitialized values.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71700
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 13 May 2009 19:14:06 +0000 (19:14 +0000)]
Add ExplodedNode utility methods 'getLocationAs()' and 'getFirstPred()'
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71699
91177308 -0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 13 May 2009 19:05:04 +0000 (19:05 +0000)]
Driver: Emit an unsupported error on -iframework.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71698
91177308 -0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Wed, 13 May 2009 18:54:26 +0000 (18:54 +0000)]
ABI handling: Fix invalid assertion, it is possible for a valid
coercion to be specified which truncates padding bits. It would be
nice to still have the assert, but we don't have any API call for the
unpadding size of a type yet.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71695
91177308 -0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Wed, 13 May 2009 18:28:20 +0000 (18:28 +0000)]
Improve the semantic checking for explicit instantiations of
templates. In particular:
- An explicit instantiation can follow an implicit instantiation (we
were improperly diagnosing this as an error, previously).
- In C++0x, an explicit instantiation that follows an explicit
specialization of the same template specialization is ignored. In
C++98, we just emit an extension warning.
- In C++0x, an explicit instantiation must be in a namespace
enclosing the original template. C++98 has no such requirement.
Also, fixed a longstanding FIXME regarding the integral type that is
used for the size of a constant array type when it is being instantiated.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71689
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 13 May 2009 18:16:01 +0000 (18:16 +0000)]
Fix crasher reported in PR 4209 caused by an invalid summary
generation when EvalObjCMessageExpr() did not resolve the
ObjCInterfaceDecl* for a receiver when the receiver's symbolic value
wasn't being explicitly tracked.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71685
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Wed, 13 May 2009 18:09:35 +0000 (18:09 +0000)]
Some early declarations to support sentinel attribute on
message dispatches (and function calls later). No change in
functionality.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71683
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 13 May 2009 17:08:18 +0000 (17:08 +0000)]
remove the obsolete -fprint-source-range-info option
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71675
91177308 -0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Wed, 13 May 2009 16:19:02 +0000 (16:19 +0000)]
Removed 4-letter :) word in comment.
Used simple array for Selector build.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71674
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 13 May 2009 16:06:05 +0000 (16:06 +0000)]
Fix <rdar://problem/
6880975 > [format string] Assertion failed: (Arg < NumArgs && "Arg access out of range!").
For format string checking, only check the type of the format
specifier for non-vararg functions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71672
91177308 -0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Wed, 13 May 2009 07:12:33 +0000 (07:12 +0000)]
Fix crasher in CFRefCount.cpp reported by Nikita Zhuk due to recently added autorelease tracking.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71647
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 13 May 2009 06:10:29 +0000 (06:10 +0000)]
Fix rdar://
6880630 - # in _Pragma does not start a preprocessor directive.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71643
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 13 May 2009 06:07:25 +0000 (06:07 +0000)]
convert test to use -verify
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71642
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 13 May 2009 06:07:04 +0000 (06:07 +0000)]
rename test
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71641
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 13 May 2009 05:13:44 +0000 (05:13 +0000)]
Fix rdar://
6880951 by rejecting vectors of vectors.
It seems dubious to me that isIntegerType() returns true for
vectors of integers, but not complex integers. This should
probably be rethought, I'll file a bugzilla.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71640
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 13 May 2009 05:02:08 +0000 (05:02 +0000)]
reject use of the GNU _Decimal32 extension with a diagnostic, not an abort.
rdar://
6880104
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71639
91177308 -0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 13 May 2009 04:52:12 +0000 (04:52 +0000)]
eli correctly points out that this code is dead, just rip it out for
now until someone does it right
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71638
91177308 -0d34-0410-b5e6-
96231b3b80d8