summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaStmt.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Whitespace.Chad Rosier2012-06-201-16/+14
| | | | llvm-svn: 158837
* [ms-style asm] Change the fatal error to an extension warning. Apparently, thisChad Rosier2012-06-201-0/+3
| | | | | | | error was asserting on anything that included Windows.h. MS-style inline asm is still dropped, but at least now we're not completely silent about it. llvm-svn: 158833
* Etch out the code path for MS-style inline assembly.Chad Rosier2012-06-111-0/+9
| | | | llvm-svn: 158325
* Remove a commented out variable declaration. This was originally a debuggingRichard Trieu2012-06-081-1/+0
| | | | | | variable which wasn't removed when the original patch was committed. llvm-svn: 158225
* Revert Decl's iterators back to pointer value_type rather than reference ↵David Blaikie2012-06-061-1/+1
| | | | | | | | | | | | | | value_type In addition, I've made the pointer and reference typedef 'void' rather than T* just so they can't get misused. I would've omitted them entirely but std::distance likes them to be there even if it doesn't use them. This rolls back r155808 and r155869. Review by Doug Gregor incorporating feedback from Chandler Carruth. llvm-svn: 158104
* Remove unused private member variables found by clang's new ↵Benjamin Kramer2012-06-061-6/+3
| | | | | | -Wunused-private-field. llvm-svn: 158086
* Add a warning to diagnose statements in C++ like "*(volatile int*)x;". ↵Eli Friedman2012-05-241-2/+8
| | | | | | Conceptually, this is part of -Wunused-value, but I added a separate flag -Wunused-volatile-lvalue so it doesn't get turned off by accident with -Wno-unused-value. I also made a few minor improvements to existing unused value warnings in the process. <rdar://problem/11516811>. llvm-svn: 157362
* Use a llvm::SmallString rather than std::string for duplicate-case errorsDouglas Gregor2012-05-161-4/+6
| | | | llvm-svn: 156922
* Produce more useful 'duplicate case' diagnostics. Fixes PR9243, from Terry Long!Douglas Gregor2012-05-161-2/+23
| | | | llvm-svn: 156904
* PR12826: Converting an lvalue to an xvalue is a no-op conversion, not an ↵Richard Smith2012-05-151-4/+2
| | | | | | lvalue-to-rvalue conversion. llvm-svn: 156803
* Bind cleanups after doing l2r conversion on the operand of aJohn McCall2012-05-081-4/+2
| | | | | | | | @throw expression; l2r conversion can introduce new cleanups in certain cases, like when the expression is an ObjC property reference of retainable type in ARC. llvm-svn: 156425
* Move Sema::VerifyIntegerConstantExpression() andDouglas Gregor2012-05-041-9/+49
| | | | | | | | Sema::ConvertToIntegralOrEnumerationType() from PartialDiagnostics to abstract "diagnoser" classes. Not much of a win here, but we're -several PartialDiagnostics. llvm-svn: 156217
* Move Sema::RequireCompleteType() and Sema::RequireCompleteExprType()Douglas Gregor2012-05-041-4/+4
| | | | | | | | | | | off PartialDiagnostic. PartialDiagnostic is rather heavyweight for something that is in the critical path and is rarely used. So, switch over to an abstract-class-based callback mechanism that delays most of the work until a diagnostic is actually produced. Good for ~11k code size reduction in the compiler and 1% speedup in -fsyntax-only on the code in <rdar://problem/11004361>. llvm-svn: 156176
* Skip checking for infinite for-loops if there are global or static variablesRichard Trieu2012-05-041-2/+3
| | | | | | in the conditional. llvm-svn: 156148
* Add -Wloop-analysis. This warning will fire on for loops which the variablesRichard Trieu2012-04-301-0/+216
| | | | | | in the loop conditional do not change. llvm-svn: 155835
* Remove the ref/value inconsistency in filter_decl_iterator.David Blaikie2012-04-301-1/+1
| | | | | | | | | | | | | filter_decl_iterator had a weird mismatch where both op* and op-> returned T* making it difficult to generalize this filtering behavior into a reusable library of any kind. This change errs on the side of value, making op-> return T* and op* return T&. (reviewed by Richard Smith) llvm-svn: 155808
* Add an AttributedStmt type to represent a statement with C++11 attributesRichard Smith2012-04-141-1/+10
| | | | | | | | | attached. Since we do not support any attributes which appertain to a statement (yet), testing of this is necessarily quite minimal. Patch by Alexander Kornienko! llvm-svn: 154723
* Handle placeholder expressions in an ObjC for-collection loop.John McCall2012-03-301-3/+11
| | | | | | | The way we handle this implicitly removes the ability to use property l-values in this position, but that's really okay. llvm-svn: 153729
* Make sure we perform the relevant implied conversions correctly for ObjC ↵Eli Friedman2012-03-301-18/+19
| | | | | | methods with related result types. PR12384. llvm-svn: 153716
* For enums with no tag name, display its location in Fariborz Jahanian2012-03-211-3/+3
| | | | | | | the diagnostic instead of displaying ''. // rdar://11082110 llvm-svn: 153219
* fixes the diagnostic issued in // rdar://11069896Fariborz Jahanian2012-03-211-1/+1
| | | | llvm-svn: 153217
* Allow void blocks to return witn a void expression in Fariborz Jahanian2012-03-211-2/+7
| | | | | | | c-mode to match behavior with void functions in c. Issue warning with -pedantic. // rdar://11069896 llvm-svn: 153200
* Undo previous patch as I checked more than I intended.Fariborz Jahanian2012-03-211-7/+2
| | | | llvm-svn: 153193
* modern objective-c rewriter: remove 'const' fromFariborz Jahanian2012-03-211-2/+7
| | | | | | | pointer field declarations in several meta-data. // rdar://11079898 llvm-svn: 153192
* Unify naming of LangOptions variable/get function across the Clang stack ↵David Blaikie2012-03-111-18/+18
| | | | | | | | | | (Lex to AST). The member variable is always "LangOpts" and the member function is always "getLangOpts". Reviewed by Chris Lattner llvm-svn: 152536
* Add clang support for new Objective-C literal syntax for NSDictionary, NSArray,Ted Kremenek2012-03-061-2/+6
| | | | | | | | | | | | | NSNumber, and boolean literals. This includes both Sema and Codegen support. Included is also support for new Objective-C container subscripting. My apologies for the large patch. It was very difficult to break apart. The patch introduces changes to the driver as well to cause clang to link in additional runtime support when needed to support the new language features. Docs are forthcoming to document the implementation and behavior of these features. llvm-svn: 152137
* Doug's review comments.Sebastian Redl2012-02-221-1/+1
| | | | llvm-svn: 151173
* Fix parsing and processing initializer lists in return statements and as ↵Sebastian Redl2012-02-221-3/+24
| | | | | | direct member initializers. llvm-svn: 151155
* Specialize noreturn diagnostics for lambda expressions.Douglas Gregor2012-02-151-2/+8
| | | | llvm-svn: 150586
* Fix silly precedence error.Douglas Gregor2012-02-151-1/+1
| | | | llvm-svn: 150585
* Specialize the diagnostic complaining about conflicting types ofDouglas Gregor2012-02-151-2/+2
| | | | | | | return statements within a lambda; this diagnostic previously referred to blocks. llvm-svn: 150584
* Generalize -Wempty-body: warn when statement body is empty (closes: PR11329)Dmitri Gribenko2012-02-141-15/+38
| | | | | | | | | | | | | | * if, switch, range-based for: warn if semicolon is on the same line. * for, while: warn if semicolon is on the same line and either next statement is compound statement or next statement has more indentation. Replacing the semicolon with {} or moving the semicolon to the next line will always silence the warning. Tests from SemaCXX/if-empty-body.cpp merged into SemaCXX/warn-empty-body.cpp. llvm-svn: 150515
* Don't allow deduction of a lambda result type from an initializerDouglas Gregor2012-02-091-2/+10
| | | | | | list; it is not an expression. llvm-svn: 150194
* In C++11 mode, when an integral constant expression is desired and we have aRichard Smith2012-02-041-6/+8
| | | | | | | | | | | | | | | | | | value of class type, look for a unique conversion operator converting to integral or unscoped enumeration type and use that. Implements [expr.const]p5. Sema::VerifyIntegerConstantExpression now performs the conversion and returns the converted result. Some important callers of Expr::isIntegralConstantExpr have been switched over to using it (including all of those required for C++11 conformance); this switch brings a side-benefit of improved diagnostics and, in several cases, simpler code. However, some language extensions and attributes have not been moved across and will not perform implicit conversions on constant expressions of literal class type where an ICE is required. In passing, fix static_assert to perform a contextual conversion to bool on its argument. llvm-svn: 149776
* Don't allow a value of a scoped enumeration to be used as the first bound for anRichard Smith2012-02-041-1/+2
| | | | | | | array new expression. This lays some groundwork for the implicit conversion to integral or unscoped enumeration which C++11 ICEs undergo. llvm-svn: 149772
* Make sure we call MaybeCreateExprWithCleanups for the sub-expression of an ↵Eli Friedman2012-01-311-0/+1
| | | | | | indirect goto. llvm-svn: 149441
* Added source location for the template keyword in AST template-id expressions.Abramo Bagnara2012-01-271-1/+3
| | | | llvm-svn: 149127
* Refactor to share code for handling return statements between lambda ↵Eli Friedman2012-01-261-38/+36
| | | | | | expressions and block literals. As it turns out, almost all the logic can be shared. llvm-svn: 149031
* Slight refactoring; catch yet another case where we were missing an ↵Eli Friedman2012-01-261-5/+1
| | | | | | lvalue-to-rvalue conversion. llvm-svn: 149003
* Allow typo correction to be disabled in BuildOverloadedCallExpr variant.Kaelyn Uhrain2012-01-251-1/+1
| | | | | | | This suppresses typo correction for auto-generated call expressions such as to 'begin' or 'end' within a C++0x for-range statement. llvm-svn: 148979
* Minor fixups for auto deduction of initializer lists.Sebastian Redl2012-01-231-1/+2
| | | | | | | | Fix some review comments. Add a test for deduction when std::initializer_list isn't available yet. Fix redundant error messages. This fixes and outstanding FIXME too. llvm-svn: 148735
* Implement -Wswitch-enum correctly.David Blaikie2012-01-231-10/+10
| | | | | | | | Clang previously implemented -Wswitch-enum the same as -Wswitch. This patch corrects the behavior to match GCC's. The critical/only difference being that -Wswitch-enum is not silenced by the presence of a default case in the switch. llvm-svn: 148679
* Make sure the AST correctly represents lvalue-to-rvalue conversions where ↵Eli Friedman2012-01-231-1/+1
| | | | | | appropriate. llvm-svn: 148673
* Fix -Wswitch to warn about out of bounds enum cases even when there's a defaultDavid Blaikie2012-01-221-32/+28
| | | | | | | | | For consistency with GCC & reasonable sanity. The FIXME suggests that the original author was perhaps using the default check for some other purpose, not realizing the more obvious limitation/false-negatives it creates, but this doesn't seem to produce any regressions & fixes the included test. llvm-svn: 148649
* Add -Wswitch-enum-redundant-default.David Blaikie2012-01-211-2/+8
| | | | | | | | | | | | | | | | | | | This warning acts as the complement to the main -Wswitch-enum warning (which warns whenever a switch over enum without a default doesn't cover all values of the enum) & has been an an-doc coding convention in LLVM and Clang in my experience. The purpose is to ensure there's never a "dead" default in a switch-over-enum because this would hide future -Wswitch-enum errors. The name warning has a separate flag name so it can be disabled but it's grouped under -Wswitch-enum & is on-by-default because of this. The existing violations of this rule in test cases have had the warning disabled & I've added a specific test for the new behavior (many negative cases already exist in the same test file - and none regressed - so I didn't add more). Reviewed by Ted Kremenek ( http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20120116/051690.html ) llvm-svn: 148640
* constexpr: converted constant expression handling for enumerator values, caseRichard Smith2012-01-181-29/+63
| | | | | | | | | | values and non-type template arguments of integral and enumeration types. This change causes some legal C++98 code to no longer compile in C++11 mode, by enforcing the C++11 rule that narrowing integral conversions are not permitted in the final implicit conversion sequence for the above cases. llvm-svn: 148439
* Auto deduction support for std::initializer_list, including for-range ↵Sebastian Redl2012-01-171-1/+1
| | | | | | | | support. This means you can now write: for (int i : {1, 4, 512, 23, 251}) {} llvm-svn: 148353
* Suppress -Wunused-value within macros from system headers.Matt Beaumont-Gay2012-01-061-1/+2
| | | | | | | Along the way, move a helper function from SemaChecking.cpp to a more accessible home in SourceManager. llvm-svn: 147692
* Minor cleanup; no functional change.Eli Friedman2012-01-051-3/+2
| | | | llvm-svn: 147582
* Small refactoring and simplification of constant evaluation and some of itsRichard Smith2011-12-281-12/+6
| | | | | | clients. No functionality change. llvm-svn: 147318
OpenPOWER on IntegriCloud