summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDecl.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Fix the signature of the getcontext builtin. Patch by Dimitry Andric.Rafael Espindola2011-11-131-0/+8
| | | | llvm-svn: 144505
* There's no good reason to track temporaries in ExprWithCleanups,John McCall2011-11-101-5/+3
| | | | | | | but it is sometimes useful to track blocks. Do so. Also optimize the storage of these expressions. llvm-svn: 144263
* constexpr: static data members declared constexpr are required to have anRichard Smith2011-11-071-26/+17
| | | | | | | | initializer; all other constexpr variables are merely required to be initialized. In particular, a user-provided constexpr default constructor can be used for such initialization. llvm-svn: 144028
* When we notice that a member function is defined with "= delete" or "=Douglas Gregor2011-11-071-5/+21
| | | | | | | | | | | | default", make a note of which is used when creating the initial declaration. Previously, we would wait until later to handle default/delete as a definition, but this is too late: when adding the declaration, we already treated the declaration as "user-provided" when in fact it was merely "user-declared". Fixes PR10861 and PR10442, along with a bunch of FIXMEs. llvm-svn: 144011
* objc: fixed enum type is supported in objc mode.Fariborz Jahanian2011-11-041-0/+1
| | | | | | | Fixes a bug where enumerator type is not this fixed type. // rdar://10381507 llvm-svn: 143724
* When we run into a constructor or destructor that is defined in theDouglas Gregor2011-11-011-3/+13
| | | | | | | | wrong class, make sure to drop it immediately; we don't want that constructor to be available within the DeclContext. Fixes <rdar://problem/9677163>. llvm-svn: 143506
* Rename Expr::Evaluate to Expr::EvaluateAsRValue to make it clear that it willRichard Smith2011-10-291-1/+1
| | | | | | | | implicitly perform an lvalue-to-rvalue conversion if used on an lvalue expression. Also improve the documentation of Expr::Evaluate* to indicate which of them will accept expressions with side-effects. llvm-svn: 143263
* Make the loading of information attached to an IdentifierInfo from anDouglas Gregor2011-10-271-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | AST file more lazy, so that we don't eagerly load that information for all known identifiers each time a new AST file is loaded. The eager reloading made some sense in the context of precompiled headers, since very few identifiers were defined before PCH load time. With modules, however, a huge amount of code can get parsed before we see an @import, so laziness becomes important here. The approach taken to make this information lazy is fairly simple: when we load a new AST file, we mark all of the existing identifiers as being out-of-date. Whenever we want to access information that may come from an AST (e.g., whether the identifier has a macro definition, or what top-level declarations have that name), we check the out-of-date bit and, if it's set, ask the AST reader to update the IdentifierInfo from the AST files. The update is a merge, and we now take care to merge declarations before/after imports with declarations from multiple imports. The results of this optimization are fairly dramatic. On a small application that brings in 14 non-trivial modules, this takes modules from being > 3x slower than a "perfect" PCH file down to 30% slower for a full rebuild. A partial rebuild (where the PCH file or modules can be re-used) is down to 7% slower. Making the PCH file just a little imperfect (e.g., adding two smallish modules used by a bunch of .m files that aren't in the PCH file) tips the scales in favor of the modules approach, with 24% faster partial rebuilds. This is just a first step; the lazy scheme could possibly be improved by adding versioning, so we don't search into modules we already searched. Moreover, we'll need similar lazy schemes for all of the other lookup data structures, such as DeclContexts. llvm-svn: 143100
* Make use of the parameter in Sema::ActOnObjCTemporaryExitContainerContext.Argyrios Kyrtzidis2011-10-271-1/+2
| | | | llvm-svn: 143088
* Fix crash on an @interface nested inside @implementation, rdar://10336158Argyrios Kyrtzidis2011-10-271-3/+3
| | | | llvm-svn: 143085
* Compute the promoted integer type of fixed-width enums correctly. Found by ↵Eli Friedman2011-10-261-1/+5
| | | | | | inspection. llvm-svn: 143021
* Attach class template attributes to the templated CXXRecordDecl,Peter Collingbourne2011-10-231-1/+4
| | | | | | | | | instead of silently discarding them. As a side effect, this improves diagnostics for constexpr class templates slightly. llvm-svn: 142755
* objective-c: Diagnose redeclaration of privateFariborz Jahanian2011-10-211-0/+22
| | | | | | ivars in class extensions. // rdar://10309454 llvm-svn: 142664
* When performing name lookup for the previous declaration of a field,Douglas Gregor2011-10-211-8/+17
| | | | | | | | be sure to consider all of the possible lookup results. We were assert()'ing (but behaving correctly) for unresolved values. Fixes PR11134 / <rdar://problem/10290422>. llvm-svn: 142652
* Permit auto SCS on parameter declarations, C++03 [dcl.stc]p2Peter Collingbourne2011-10-211-0/+5
| | | | llvm-svn: 142649
* Add -Wc++98-compat diagnostics for jumps which bypass initialization of non-PODRichard Smith2011-10-201-5/+5
| | | | | | | | but trivially constructible and destructible variables in C++11 mode. Also incidentally improve the precision of the wording for jump diagnostics in C++98 mode. llvm-svn: 142619
* When fixing up the storage class for an anonymous union, don't markDouglas Gregor2011-10-201-2/+0
| | | | | | the anonymous union as valid: our fixes have Fix-Its. llvm-svn: 142616
* There's no point in marking a declaration invalid just because itDouglas Gregor2011-10-201-3/+2
| | | | | | | | shadows a template parameter. Complain about the shadowing (or not, under -fms-extensions), but don't invalidate the declaration. Merely forget about the template parameter declaration. llvm-svn: 142596
* FixIt insert 'static' for anonymous unions at global or namespace scope.David Blaikie2011-10-201-1/+2
| | | | llvm-svn: 142566
* Add a fixit to remove storage specifiers on anonymous enums.David Blaikie2011-10-201-1/+2
| | | | llvm-svn: 142565
* 80 cols (one I created in my last commit, plus a bunch of others that were ↵David Blaikie2011-10-191-24/+39
| | | | | | already there) llvm-svn: 142552
* Don't provide errors for anonymous unions when they're actually anonymous ↵David Blaikie2011-10-191-26/+28
| | | | | | classes. llvm-svn: 142551
* -Wc++98-compat: warn on nontrivial types used in unions and anonymous structs.Richard Smith2011-10-191-7/+10
| | | | llvm-svn: 142541
* Improve the warning for cv-qualifiers on free functions, from Ahmed Charles!Douglas Gregor2011-10-191-0/+1
| | | | llvm-svn: 142478
* Provide half floating point support as a storage only type.Anton Korobeynikov2011-10-141-2/+3
| | | | | | Lack of half FP was a regression compared to llvm-gcc. llvm-svn: 142016
* Under ARC, merge the bit corresponding to the ns_returns_retainedDouglas Gregor2011-10-141-0/+12
| | | | | | | attribute from the first declaration to later declarations. Fixes <rdar://problem/10142572>. llvm-svn: 141957
* When declaring an out-of-line template, attempt to rebuild any typesDouglas Gregor2011-10-141-0/+10
| | | | | | | within the template parameter list that may have changed now that we know the current instantiation. Fixes <rdar://problem/10194295>. llvm-svn: 141954
* Add returns_twice to functions that are known to return twice. This implementsRafael Espindola2011-10-121-0/+3
| | | | | | the same behavior of gcc by keeping the attribute out of the function type. llvm-svn: 141803
* [Microsoft] If -fms-compatibility, then downgrade missing typename error to ↵Francois Pichet2011-10-111-3/+4
| | | | | | warning at function prototype scope. llvm-svn: 141630
* Add typo correction for type names.Kaelyn Uhrain2011-10-111-1/+47
| | | | | | | | The main motivation was to do typo correction in C++ "new" statements, though picking it up in other places where type names are expected was pretty much a freebie. llvm-svn: 141621
* Clean up DiagnoseInvalidRedeclaration a bitKaelyn Uhrain2011-10-111-26/+31
| | | | llvm-svn: 141612
* Move a couple chunks of ActOnFunctionDeclarator to separate functionsKaelyn Uhrain2011-10-111-186/+202
| | | | llvm-svn: 141611
* Move some bool flags out of function parameter lists.Kaelyn Uhrain2011-10-111-74/+86
| | | | llvm-svn: 141610
* Only accept a typo correction if it doesn't trigger additional errorsKaelyn Uhrain2011-10-111-30/+101
| | | | llvm-svn: 141609
* Constant expression evaluation refactoring:Richard Smith2011-10-101-5/+1
| | | | | | | | | | | - Remodel Expr::EvaluateAsInt to behave like the other EvaluateAs* functions, and add Expr::EvaluateKnownConstInt to capture the current fold-or-assert behaviour. - Factor out evaluation of bitfield bit widths. - Fix a few places which would evaluate an expression twice: once to determine whether it is a constant expression, then again to get the value. llvm-svn: 141561
* Give nicer note when a member redeclaration has or lacks 'const'Kaelyn Uhrain2011-10-101-1/+11
| | | | llvm-svn: 141555
* Push "out-of-line" declarations into scope when their lexical/semanticDouglas Gregor2011-10-091-1/+3
| | | | | | | redeclaration contexts are the same, as occurs within linkage specifications. Fixes PR9162. llvm-svn: 141521
* A friend template specialization is also dependent if any of itsDouglas Gregor2011-10-091-1/+5
| | | | | | template arguments are dependent. Fixes PR10913. llvm-svn: 141515
* Diagnose attempts to declare a non-static data member with aDouglas Gregor2011-10-091-1/+1
| | | | | | non-identifier name. Fixes PR10839. llvm-svn: 141513
* Rename TagDecl::isDefinition -> isCompleteDefinitionJohn McCall2011-10-071-2/+2
| | | | | | | for better self-documenting code, since the semantics are subtly different from getDefinition(). llvm-svn: 141355
* Implicitly assume that a ObjC category to an unavailable interface is also ↵Argyrios Kyrtzidis2011-10-061-0/+9
| | | | | | | | unavailable; only give an 'unavailable' error on the @implementation of the category. rdar://10234078 llvm-svn: 141335
* When using an unavailable/deprecated interface Foo inside Foo's ↵Argyrios Kyrtzidis2011-10-061-2/+13
| | | | | | | | interface/implementation don't emit unavailable errors. llvm-svn: 141334
* Support for C1x _Atomic specifier (see testcase). This is primarily being ↵Eli Friedman2011-10-061-1/+2
| | | | | | | | committed at the moment to help support C++0x <atomic>, but it should be a solid base for implementing the full specification of C1x _Atomic. Thanks to Jeffrey Yasskin for the thorough review! llvm-svn: 141330
* PR11067: A definition of a constexpr static variable doesn't need an ↵Richard Smith2011-10-061-9/+6
| | | | | | initializer if the in-class declaration had one. Such a declaration must be initialized by a constant expression. llvm-svn: 141279
* OpenCL: add a non-standard extension, cl_clang_storage_class_specifiers,Peter Collingbourne2011-10-061-4/+4
| | | | | | | | | which enables support for C99 storage-class specifiers. This extension is intended to be used by implementations to implement OpenCL C built-in functions. llvm-svn: 141271
* objc arc: Suppress certain arc diagnostics on unavailableFariborz Jahanian2011-10-031-2/+4
| | | | | | functions. // rdar://10186536 llvm-svn: 141037
* Allow getting all source locations of selector identifiers in a ObjCMethodDecl.Argyrios Kyrtzidis2011-10-031-1/+2
| | | | | | | | | | | | | Instead of always storing all source locations for the selector identifiers we check whether all the identifiers are in a "standard" position; "standard" position is -Immediately before the arguments: -(id)first:(int)x second:(int)y; -With a space between the arguments: -(id)first: (int)x second: (int)y; -For nullary selectors, immediately before ';': -(void)release; In such cases we infer the locations instead of storing them. llvm-svn: 140989
* constexpr: semantic checking for constexpr functions and constructors. Based inRichard Smith2011-10-011-5/+9
| | | | | | | | | | | | | part on patches by Peter Collingbourne. We diverge from the C++11 standard in a few areas, mostly related to checking constexpr function declarations, and not just definitions. See WG21 paper N3308=11-0078 for details. Function invocation substitution is not available in this patch; constexpr functions cannot yet be used from within constant expressions. llvm-svn: 140926
* Mark a TagDecl when it is free standing (e.g. "struct foo;")Argyrios Kyrtzidis2011-09-301-0/+3
| | | | llvm-svn: 140894
* Add explicit attributes to mark functions as having had theirJohn McCall2011-09-301-0/+4
| | | | | | | | | | | CoreFoundation object-transfer properties audited, and add a #pragma to cause them to be automatically applied to functions in a particular span of code. This has to be implemented largely in the preprocessor because of the requirement that the region be entirely contained in a single file; that's hard to impose from the parser without registering for a ton of callbacks. llvm-svn: 140846
OpenPOWER on IntegriCloud