summaryrefslogtreecommitdiffstats
path: root/clang/lib/Parse/ParseStmt.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Avoid the hard-coded limit on the number of typo corrections attempted.Kaelyn Uhrain2013-09-271-15/+29
| | | | | | | | | | | | | | | Move some tests from typo-correction.cpp to typo-correction-pt2.cpp because they were running afoul of the hard-coded limit of 20 typos corrected. Some of the tests after it were still working due to the limit not applying to cached corrections and in cases where a non-NULL MemberContext is passed in to Sema::CorrectTypo. Most of the moved tests still passed after being moved, but the test involving "data_struct" had only been passing because the test had exceeded that limit so a fix for it is also included (most of the changes to ParseStmt.cpp are shared with and originated from another typo correction impovement that was split into a separate commit). llvm-svn: 191544
* Add some missing ProhibitAttributes calls to some declaration-like #pragmas.Richard Smith2013-09-161-0/+2
| | | | llvm-svn: 190806
* Fix the MCTargetAsmParser API change.Joey Gouly2013-09-121-3/+3
| | | | llvm-svn: 190601
* const'ify Sema::ActOnCXXTryBlock byRobert Wilhelm2013-08-221-1/+1
| | | | | | | | changing Parameter from MutableArrayRef to ArrayRef. No functionality change intended. llvm-svn: 188994
* Remove Extension warning for GNU local labels.Eli Friedman2013-08-201-1/+0
| | | | | | | | | We generally don't warn about extensions involving keywords reserved for the implementation, so we shouldn't warn here either: the standard doesn't require it, and it doesn't provide useful information to the user. llvm-svn: 188840
* const'ify Sema::ActOnCompoundStmt byRobert Wilhelm2013-08-191-4/+2
| | | | | | | | changing Parameter of Sema::ActOnCompoundStmt from MutableArrayRef to ArrayRef. No functionality change intended. llvm-svn: 188705
* OpenMP: basic support for #pragma omp parallelAlexey Bataev2013-07-191-3/+2
| | | | llvm-svn: 186647
* ArrayRef'ize Sema::FinalizeDeclaratorGroup, Sema::BuildDeclaratorGroup andRafael Espindola2013-07-091-2/+2
| | | | | | | | Sema::ActOnDocumentableDecls. Patch by Robert Wilhelm. llvm-svn: 185931
* Update to pass in pointers intead of references.Bill Wendling2013-06-181-1/+1
| | | | llvm-svn: 184176
* Update for LLVM interface change in r181680.Rafael Espindola2013-05-131-1/+1
| | | | llvm-svn: 181681
* Move parsing of identifiers in MS-style inline assembly intoJohn McCall2013-05-031-2/+395
| | | | | | | | | | | | | | | | | | | | | the actual parser and support arbitrary id-expressions. We're actually basically set up to do arbitrary expressions here if we wanted to. Assembly operands permit things like A::x to be written regardless of language mode, which forces us to embellish the evaluation context logic somewhat. The logic here under template instantiation is incorrect; we need to preserve the fact that an expression was unevaluated. Of course, template instantiation in general is fishy here because we have no way of delaying semantic analysis in the MC parser. It's all just fishy. I've also fixed the serialization of MS asm statements. This commit depends on an LLVM commit. llvm-svn: 180976
* Parser support for #pragma clang __debug capturedTareq A. Siraj2013-04-161-0/+3
| | | | | | | | | | | | | | | This patch implements parsing ‘#pragma clang __debug’ as a first step for implementing captured statements. Captured statements are a mechanism for doing outlining in the AST. see http://lists.cs.uiuc.edu/pipermail/cfe-dev/2013-January/027540.html. Currently returns StmtEmpty Author: Andy Zhang <andy.zhang@intel.com> Differential Revision: http://llvm-reviews.chandlerc.com/D369 llvm-svn: 179614
* Support C11 _Atomic type qualifier. This is more-or-less just syntactic ↵Richard Smith2013-03-281-0/+3
| | | | | | sugar for the _Atomic type specifier. llvm-svn: 178210
* OpenMP threadprivate directive parsing and semantic analysisAlexey Bataev2013-03-221-0/+5
| | | | llvm-svn: 177705
* Fix a crash-on-valid where a block capture copy expression wasJohn McCall2013-03-221-1/+1
| | | | | | | | | | | | picking up cleanups from earlier in the statement. Also fix a crash-on-invalid where a reference to an invalid decl from an enclosing scope was causing an expression to fail to build, but only *after* a cleanup was registered from that statement, causing an assertion downstream. The crash-on-valid is rdar://13459289. llvm-svn: 177692
* [libclang] Fix a crash with invalid code, while skip function bodies is enabled.Argyrios Kyrtzidis2013-02-221-1/+1
| | | | llvm-svn: 175860
* Process and handle attributes on conditions and for loop variables. Process andRichard Smith2013-02-201-3/+0
| | | | | | | diagnose attributes on alias declarations, using directives, and attribute declarations. llvm-svn: 175649
* When a statement is dropped from the AST because it was invalid, make sureArgyrios Kyrtzidis2013-02-151-5/+0
| | | | | | | we don't do the scope checks otherwise we are going to hit assertion checks since a label may not have been actually added. llvm-svn: 175281
* Implement C++11 [dcl.align]p1 and C11 6.7.5/2 rules for alignas and _Alignas.Richard Smith2013-01-291-7/+12
| | | | llvm-svn: 173779
* [ms-inline asm] Remove the -fenable-experimental-ms-inline-asm flag. MS-styleChad Rosier2013-01-221-15/+0
| | | | | | inline assembly can be enable with -fasm-blocks or -fms-extensions alone. llvm-svn: 173186
* [ms-inline asm] Remove a warning about ms-style inline assembly not beingChad Rosier2013-01-221-3/+0
| | | | | | supported. llvm-svn: 173177
* Refactor to call ActOnFinishFullExpr on every full expression. TeachRichard Smith2013-01-141-4/+6
| | | | | | | | ActOnFinishFullExpr that some of its checks only apply to discarded-value expressions. This adds missing checks for unexpanded variadic template parameter packs to a handful of constructs. llvm-svn: 172485
* s/CXX0X/CXX11/g, except for __GNU_EXPERIMENTAL_CXX0X__, and update a few ↵Richard Smith2013-01-021-6/+6
| | | | | | nearby 'C++0x' comments. llvm-svn: 171372
* s/CPlusPlus0x/CPlusPlus11/gRichard Smith2013-01-021-3/+3
| | | | llvm-svn: 171367
* Simplify. No functionality change.Nico Weber2012-12-301-7/+2
| | | | llvm-svn: 171268
* Add a bit on FunctionDecl/ObjCMethodDecl to indicate if there was a bodyArgyrios Kyrtzidis2012-12-061-2/+2
| | | | | | that was skipped by the parser. llvm-svn: 169531
* [driver, ms-inline asm] MS-Style inline assembly is controlled by theChad Rosier2012-12-051-1/+1
| | | | | | | -fasm-blocks flag, not the -fms-extensions flag. rdar://12808010 llvm-svn: 169422
* Sort all of Clang's files under 'lib', and fix up the broken headersChandler Carruth2012-12-041-3/+3
| | | | | | | | | | | | | uncovered. This required manually correcting all of the incorrect main-module headers I could find, and running the new llvm/utils/sort_includes.py script over the files. I also manually added quite a few missing headers that were uncovered by shuffling the order or moving headers up to be main-module-headers. llvm-svn: 169237
* PR14381: Never skip constexpr function bodies when code-completing. We may needRichard Smith2012-11-191-2/+4
| | | | | | them in order to parse the rest of the file. llvm-svn: 168327
* Simplify function try/catch scope handling.David Blaikie2012-11-131-3/+3
| | | | | | Based on post-commit review feedback for r167766 by Richard Smith. llvm-svn: 167856
* Fix more try scoping bugs introduced by r167650.David Blaikie2012-11-121-1/+1
| | | | | | | Introduces more clear scoping flags & flag combinations which should hopefully be more understandable. llvm-svn: 167766
* PR14296: function parameter name collisions in function try/catchDavid Blaikie2012-11-101-6/+8
| | | | | | | | | | | | C++11 3.3.3/2 "A parameter name shall not be redeclared in the outermost block of the function definition nor in the outermost block of any handler associated with a function-try-block." It's not totally clear to me whether the "FIXME" case is covered by this, but Richard Smith thinks it probably should be. It's just a bit more involved to fix that case. llvm-svn: 167650
* Support interleaving of other pragmas with FP_CONTRACT at the beginning of aLang Hames2012-11-031-4/+45
| | | | | | compound statement. llvm-svn: 167363
* If skipping bodies is enabled outside code-completion, just skip the body ↵Argyrios Kyrtzidis2012-10-311-1/+7
| | | | | | | | directly without using tentative parsing. llvm-svn: 167142
* Removed an extra blank line.Mahesha S2012-10-271-1/+0
| | | | llvm-svn: 166867
* When used in a compound expression FP_CONTRACT should proceed all explicitLang Hames2012-10-211-3/+8
| | | | | | | declarations and statements. Emit an error if the FP_CONTRACT is used later in a compound statement. llvm-svn: 166383
* People put pragmas in crazy places; add more handling. PR14046.Eli Friedman2012-10-091-0/+20
| | | | | | | I think our general framework for parser pragmas needs a bit more work, but I'm not planning on working on it at the moment. llvm-svn: 165558
* Make sure we allow "#pragma options align=mac68k" in function-local ↵Eli Friedman2012-10-081-0/+5
| | | | | | contexts. <rdar://problem/12453134> llvm-svn: 165462
* Permanently end the whole "pragma got handled by the parser too early"Eli Friedman2012-10-041-0/+10
| | | | | | | mess by handling all pragmas which the parser touches uniformly. <rdar://problem/12248901>, etc. llvm-svn: 165195
* Add FP_CONTRACT support for clang.Lang Hames2012-10-021-0/+5
| | | | | | | | Clang will now honor the FP_CONTRACT pragma and emit LLVM fmuladd intrinsics for expressions of the form A * B + C (when they occur in a single statement). llvm-svn: 164989
* If the range in a for range statement doesn't have a viable begin/end function,Richard Smith2012-09-201-1/+2
| | | | | | | | | | | | | but can be dereferenced to form an expression which does have viable begin/end functions, then typo-correct the range, even if something else goes wrong with the statement (such as inaccessible begin/end or the wrong type of loop variable). In order to ensure we recover correctly and produce any followup diagnostics in this case, redo semantic analysis on the for-range statement outside of the diagnostic trap, after issuing the typo-correction. llvm-svn: 164323
* Revert r163083 per chandlerc's request.Joao Matos2012-09-041-16/+1
| | | | llvm-svn: 163149
* Implemented parsing and AST support for the MS __leave exception statement. ↵Joao Matos2012-09-021-1/+16
| | | | | | Also a minor fix to __except printing in StmtPrinter.cpp. Thanks to Aaron Ballman for review. llvm-svn: 163083
* [ms-inline asm] As part of a larger refactoring, rename AsmStmt to GCCAsmStmt.Chad Rosier2012-08-251-12/+10
| | | | | | No functional change intended. llvm-svn: 162632
* [ms-inline asm] Change the -fenable-experimental-ms-inline-asm option from a Chad Rosier2012-08-241-0/+18
| | | | | | | | | CodeGen option to a LangOpt option. In turn, hoist the guard into the parser so that we avoid the new (and fairly unstable) Sema/AST/CodeGen logic. This should restore the behavior of clang to that prior to r158325. <rdar://problem/12163681> llvm-svn: 162602
* Now that ASTMultiPtr is nothing more than a array reference, make it a ↵Benjamin Kramer2012-08-231-2/+2
| | | | | | | | MutableArrayRef. This required changing all get() calls to data() and using the simpler constructors. llvm-svn: 162501
* Remove ASTOwningVector, it doesn't own anything and provides no value over ↵Benjamin Kramer2012-08-231-6/+6
| | | | | | SmallVector. llvm-svn: 162492
* Rip out remnants of move semantic emulation and smart pointers in Sema.Benjamin Kramer2012-08-231-19/+19
| | | | | | | These were nops for quite a while and only lead to confusion. ASTMultiPtr now behaves like a proper dumb array reference. llvm-svn: 162475
* Better diagnostics for range-based for loops with bad range types.Sam Panzer2012-08-211-1/+1
| | | | | | | | | | | | | The old error message stating that 'begin' was an undeclared identifier is replaced with a new message explaining that the error is in the range expression, along with which of the begin() and end() functions was problematic if relevant. Additionally, if the range was a pointer type or defines operator*, attempt to dereference the range, and offer a FixIt if the modified range works. llvm-svn: 162248
* PR41111, PR5925, PR13210: Teach tentative parsing to annotate identifiers andRichard Smith2012-08-181-81/+24
| | | | | | | | | | | | | | | | | nested names as id-expressions, using the annot_primary_expr annotation, where possible. This removes some redundant lookups, and also allows us to typo-correct within tentative parsing, and to carry on disambiguating past an identifier which we can determine will fail lookup as both a type and as a non-type, allowing us to disambiguate more declarations (and thus offer improved error recovery for such cases). This also introduces to the parser the notion of a tentatively-declared name, which is an identifier which we *might* have seen a declaration for in a tentative parse (but only if we end up disambiguating the tokens as a declaration). This is necessary to correctly disambiguate cases where a variable is used within its own initializer. llvm-svn: 162159
OpenPOWER on IntegriCloud