summaryrefslogtreecommitdiffstats
path: root/clang/lib
Commit message (Collapse)AuthorAgeFilesLines
* Instantiation support for 'this'Anders Carlsson2009-05-151-0/+12
| | | | llvm-svn: 71886
* No need to null check the expr, Sema::SemaRef.InstantiateExpr handles all that.Anders Carlsson2009-05-151-7/+4
| | | | llvm-svn: 71885
* Make sure that the type associated with a class template is dependent.Douglas Gregor2009-05-152-3/+14
| | | | llvm-svn: 71878
* Template instantiation for "if" statements. Also:Douglas Gregor2009-05-154-12/+38
| | | | | | | | - 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. llvm-svn: 71875
* A C++ member function always has either weak linkage (if it's inline or ↵Anders Carlsson2009-05-151-0/+8
| | | | | | defined inline) or strong linkage (other cases). llvm-svn: 71873
* Move statement instantiation into its own file. No functionality changeDouglas Gregor2009-05-153-132/+153
| | | | llvm-svn: 71872
* When word-wrapping, be more defensive about a ridiculously small number of ↵Douglas Gregor2009-05-151-2/+4
| | | | | | columns. Fixes <rdar://problem/6892178> llvm-svn: 71870
* Call ActOnStartOfFunctionDecl/ActOnFinishFunctionBody whenDouglas Gregor2009-05-154-15/+25
| | | | | | instantiating the definition of a function from a template. llvm-svn: 71869
* Name mangling for class template specializations and template arguments.Anders Carlsson2009-05-151-2/+64
| | | | llvm-svn: 71861
* Fix processing of -Ufoo to not inject "#undef foo 1" into the predefinesChris Lattner2009-05-151-1/+11
| | | | | | | | | | | | | | | | 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 llvm-svn: 71860
* Fix crash when deriving the enclosing summary of a method whose first ↵Ted Kremenek2009-05-151-12/+16
| | | | | | selector slot has a null IdentifierInfo*. This happens when analyzing Growl. llvm-svn: 71857
* Remove extra whitespace character in string literal. Purely cosmetic.Ted Kremenek2009-05-151-1/+1
| | | | llvm-svn: 71847
* Use dyn_cast instead of cast to allow our assumptions to be safely wrong.Ted Kremenek2009-05-151-4/+12
| | | | llvm-svn: 71843
* Cleanup internal checks bug reporting, allowing intermediate diagnostics to ↵Ted Kremenek2009-05-151-71/+134
| | | | | | be generated for bad argument warnings, bad branches, etc. llvm-svn: 71838
* BugReporter (extensive diagnostics): Do not include the range of target '}'Ted Kremenek2009-05-151-4/+6
| | | | llvm-svn: 71832
* PathDiagnosticLocation::asRange(): for a PathDiagnosticLocation, the range ↵Ted Kremenek2009-05-151-0/+9
| | | | | | | | of a DeclStmt is only the decl, not the decl + initializer. llvm-svn: 71831
* BugReporter (extensive diagnostics): Add control-flow piece to '}' inTed Kremenek2009-05-151-16/+36
| | | | | | | loop body when generating 'Looping back to the head of the loop' diagnostics. llvm-svn: 71829
* Instantiate return statements.Anders Carlsson2009-05-152-1/+15
| | | | llvm-svn: 71825
* Fixup debug information for the location information for __blockMike Stump2009-05-151-2/+4
| | | | | | | | | | | | | | | | | | | | 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 llvm-svn: 71824
* Add NullStmt::Clone and use itAnders Carlsson2009-05-152-1/+5
| | | | llvm-svn: 71823
* Instantiate goto and label statements. (Very useful, I know)Anders Carlsson2009-05-151-0/+18
| | | | llvm-svn: 71822
* Implement template instantiation for DeclStmtDouglas Gregor2009-05-153-2/+34
| | | | llvm-svn: 71818
* Don't warn if result/argument type of an implemented Fariborz Jahanian2009-05-143-2/+15
| | | | | | | method is a qualified id which conforms to the matching type of its method declaration. llvm-svn: 71817
* Template instantiation for the NULL statement. Lame, I knowDouglas Gregor2009-05-141-0/+5
| | | | llvm-svn: 71816
* Introduce basic support for instantiating the definitions of memberDouglas Gregor2009-05-145-15/+121
| | | | | | | functions of class templates. Only compound statements and expression statements are currently implemented. llvm-svn: 71814
* Check that the function being overridden is virtual.Anders Carlsson2009-05-144-6/+8
| | | | llvm-svn: 71802
* Improvements to the FunctionDecl getters/setters.Anders Carlsson2009-05-144-7/+7
| | | | llvm-svn: 71800
* Introduce a stack of instantiation scopes that are used to store the mapping ↵Douglas Gregor2009-05-144-1/+87
| | | | | | from variable declarations that occur within templates to their instantiated counterparts llvm-svn: 71799
* Fix <rdar://problem/6859457> [NSData dataWithBytesNoCopy] does not return a ↵Ted Kremenek2009-05-141-0/+9
| | | | | | retained object. llvm-svn: 71797
* Link FunctionDecls instantiated from the member functions of a classDouglas Gregor2009-05-143-6/+24
| | | | | | | | 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. llvm-svn: 71792
* updated comments.Fariborz Jahanian2009-05-141-3/+2
| | | | llvm-svn: 71790
* Adds recognition of sentinel attribute on block declarations.Fariborz Jahanian2009-05-142-3/+37
| | | | llvm-svn: 71788
* Better diagnostics for covariance when checking overriding return types.Anders Carlsson2009-05-141-6/+65
| | | | llvm-svn: 71786
* When there are any member new operators, global versions aren't looked up at ↵Sebastian Redl2009-05-141-2/+0
| | | | | | all. llvm-svn: 71780
* Diagnose missing sentinel argument on a funciton callFariborz Jahanian2009-05-141-17/+39
| | | | | | with sentinel attribute. llvm-svn: 71778
* Skip the asm prefix when storing the name in block info.Daniel Dunbar2009-05-141-2/+6
| | | | | | | | | | | - 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. llvm-svn: 71774
* In C++, warn when something previously declared as a "struct" is laterDouglas Gregor2009-05-143-34/+57
| | | | | | | declared as a "class", or vice-versa. This warning is under the control of -Wmismatched-tags, which is off by default. llvm-svn: 71773
* Enhance debug information for block literals. Radar 6867696Mike Stump2009-05-142-2/+135
| | | | llvm-svn: 71763
* We need to specify the "linkage name" to the subprogram now that weDaniel Dunbar2009-05-141-1/+5
| | | | | | | emit the correct "display name". I suspect we need more work here, see FIXME for example. llvm-svn: 71761
* Add return type checking for overriding virtual functions. We currently ↵Anders Carlsson2009-05-143-4/+59
| | | | | | don't check covariance but that's next. llvm-svn: 71759
* Implement explicit instantiations of member classes of class templates, e.g.,Douglas Gregor2009-05-148-17/+126
| | | | | | | | | | | | | | | | | | | | | | | | | 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. llvm-svn: 71756
* Look for and diagnose missing sentinel argument on messageFariborz Jahanian2009-05-132-2/+45
| | | | | | dispatch arguments which have sentinel attribute. llvm-svn: 71737
* Make sure not to include the LLVM asm prefix in function names forDaniel Dunbar2009-05-131-0/+4
| | | | | | debug info. llvm-svn: 71736
* Use an iterator type for found_decls_begin/found_decls_end.Anders Carlsson2009-05-132-4/+5
| | | | llvm-svn: 71721
* Add a new, more advanced CheckDerivedToBaseConversion that takes custom ↵Anders Carlsson2009-05-133-9/+33
| | | | | | diagnostic IDs. llvm-svn: 71720
* Add some basic type checking for attributes ns_returns_retained andTed Kremenek2009-05-131-39/+39
| | | | | | | | | | | | | | 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. llvm-svn: 71718
* Explicit instantiations of templates now instantiate the definitionsDouglas Gregor2009-05-134-3/+83
| | | | | | | | of class members (recursively). Only member classes are actually instantiated; the instantiation logic for member functions and variables are just stubs. llvm-svn: 71713
* Disable access control by default. It can be enabled with the ↵Anders Carlsson2009-05-133-0/+6
| | | | | | -faccess-control option. When we have better support for it, we can enable it by default again. llvm-svn: 71706
* Enhance diagnostics value tracking logic for null dereferences and ↵Ted Kremenek2009-05-131-72/+225
| | | | | | uninitialized values. llvm-svn: 71700
* Driver: Emit an unsupported error on -iframework.Daniel Dunbar2009-05-131-1/+2
| | | | llvm-svn: 71698
OpenPOWER on IntegriCloud