summaryrefslogtreecommitdiffstats
path: root/clang/www
Commit message (Collapse)AuthorAgeFilesLines
...
* Revert "DR583, DR1512: Implement a rewrite to C++'s 'composite pointer type' ↵Renato Golin2016-10-211-2/+2
| | | | | | | | rules." This reverts commit r284800, as it failed all ARM/AArch64 bots. llvm-svn: 284811
* DR583, DR1512: Implement a rewrite to C++'s 'composite pointer type' rules.Richard Smith2016-10-211-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | This has two significant effects: 1) Direct relational comparisons between null pointer constants (0 and nullopt) and pointers are now ill-formed. This was always the case for C, and it appears that C++ only ever permitted by accident. For instance, cases like nullptr < &a are now rejected. 2) Comparisons and conditional operators between differently-cv-qualified pointer types now work, and produce a composite type that both source pointer types can convert to (when possible). For instance, comparison between 'int **' and 'const int **' is now valid, and uses an intermediate type of 'const int *const *'. Clang previously supported #2 as an extension. We do not accept the cases in #1 as an extension. I've tested a fair amount of code to check that this doesn't break it, but if it turns out that someone is relying on this, we can easily add it back as an extension. llvm-svn: 284800
* DR1330: instantiate exception-specifications when "needed". We previously didRichard Smith2016-10-181-2/+2
| | | | | | | | | | | | | | | | | | | | not instantiate exception specifications of functions if they were only used in unevaluated contexts (other than 'noexcept' expressions). In C++17 onwards, this becomes essential since the exception specification is now part of the function's type. Note that this means that constructs like the following no longer work: struct A { static T f() noexcept(...); decltype(f()) *p; }; ... because the decltype expression now needs the exception specification of 'f', which has not yet been parsed. llvm-svn: 284549
* [analyzer] Update alpha and potential checker documentation, esp. alpha.valistDominic Chen2016-10-182-65/+78
| | | | | | | | | | | | | | | Summary: Move alpha.valist from potential to alpha since it was implemented in D15227 Cleanup some HTML comments, add a missing link Reviewers: jordan_rose, zaks.anna Subscribers: cfe-commits, xazax.hun Differential Revision: https://reviews.llvm.org/D25663 llvm-svn: 284445
* Mark aligned allocation as done.Richard Smith2016-10-101-1/+1
| | | | llvm-svn: 283724
* Switch to a different workaround for unimplementability of P0145R3 in MS ABIs.Richard Smith2016-09-291-6/+4
| | | | | | | | | | | | | | | | | | | Instead of ignoring the evaluation order rule, ignore the "destroy parameters in reverse construction order" rule for the small number of problematic cases. This only causes incorrect behavior in the rare case where both parameters to an overloaded operator <<, >>, ->*, &&, ||, or comma are of class type with non-trivial destructor, and the program is depending on those parameters being destroyed in reverse construction order. We could do a little better here by reversing the order of parameter destruction for those functions (and reversing the argument evaluation order for all direct calls, not just those with operator syntax), but that is not a complete solution to the problem, as the same situation can be reached by an indirect function call. Approach reviewed off-line by rnk. llvm-svn: 282777
* Mark P0127R3 as done, and replace its __has_feature check with the ↵Richard Smith2016-09-291-1/+1
| | | | | | corresponding SD-6 macro. llvm-svn: 282652
* cxx_status: use HTML5 details/summary elements to hide implementation statusRichard Smith2016-09-281-23/+43
| | | | | | | tables for fully-implemented language modes by default. Also add some missing elements to TS support table. llvm-svn: 282631
* Add a couple more tentative names for upcoming SD-6 feature checks. These mightRichard Smith2016-09-281-2/+2
| | | | | | | not reflect the final chosen names, but supporting them now seems to have little downside. llvm-svn: 282629
* P0095R3: Implement the latest published revision of SD-6 (C++ feature test ↵Richard Smith2016-09-281-1/+1
| | | | | | macros). llvm-svn: 282627
* P0096R2: Implement more recent revision of SD-6 (C++ feature test macros).Richard Smith2016-09-281-1/+6
| | | | llvm-svn: 282622
* Long-overdue update to cxx_status: C++14 is no longer "upcoming".Richard Smith2016-09-281-16/+10
| | | | llvm-svn: 282621
* Re-commit r282556, reverted in r282564, with a fix to CallArgList::addFrom toRichard Smith2016-09-281-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | function correctly when targeting MS ABIs (this appears to have never mattered prior to this change). Update test case to always cover both 32-bit and 64-bit Windows ABIs, since they behave somewhat differently from each other here. Update test case to also cover operators , && and ||, which it appears are also affected by P0145R3 (they're not explicitly called out by the design document, but this is the emergent behavior of the existing wording). Original commit message: P0145R3 (C++17 evaluation order tweaks): evaluate the right-hand side of assignment and compound-assignment operators before the left-hand side. (Even if it's an overloaded operator.) This completes the implementation of P0145R3 + P0400R0 for all targets except Windows, where the evaluation order guarantees for <<, >>, and ->* are unimplementable as the ABI requires the function arguments are evaluated from right to left (because parameter destructors are run from left to right in the callee). llvm-svn: 282619
* Revert r282556. This change made several bots unhappy.Richard Smith2016-09-281-9/+1
| | | | llvm-svn: 282564
* P0145R3 (C++17 evaluation order tweaks): evaluate the right-hand side ofRichard Smith2016-09-271-1/+9
| | | | | | | | | | | | | assignment and compound-assignment operators before the left-hand side. (Even if it's an overloaded operator.) This completes the implementation of P0145R3 + P0400R0 for all targets except Windows, where the evaluation order guarantees for <<, >>, and ->* are unimplementable as the ABI requires the function arguments are evaluated from right to left (because parameter destructors are run from left to right in the callee). llvm-svn: 282556
* In the get started page, also explain how to start the testsuiteSylvestre Ledru2016-09-261-0/+5
| | | | llvm-svn: 282402
* update the link to the code coverageSylvestre Ledru2016-09-261-1/+1
| | | | llvm-svn: 282400
* DR259: Demote the pedantic error for an explicit instantiation after anRichard Smith2016-08-311-1/+1
| | | | | | | | | explicit specialization to a warning for C++98 mode (this is a defect report resolution, so per our informal policy it should apply in C++98), and turn the warning on by default for C++11 and later. In all cases where it fires, the right thing to do is to remove the pointless explicit instantiation. llvm-svn: 280308
* [www] Add nullability questions to analyzer FAQ.Devin Coughlin2016-08-191-0/+54
| | | | llvm-svn: 279330
* [www] Add analyzer FAQ about not releasing ivars in -dealloc.Devin Coughlin2016-08-191-0/+10
| | | | llvm-svn: 279183
* cxx_status: update features implemented in clang 3.9 from "svn" to "Clang ↵Richard Smith2016-08-151-13/+13
| | | | | | 3.9" now that svn trunk is 4.0. llvm-svn: 278650
* cxx_status: mark decomposition declarations as "partial": the implementation isRichard Smith2016-08-151-1/+1
| | | | | | | essentially complete, other than parts where design questions have been raised (lambda capture, decomposition of arrays by copy). llvm-svn: 278649
* [analyzer] Update the web manual for checker developers.Artem Dergachev2016-07-281-70/+154
| | | | | | | | | | | | | | | | Fix the explanation of how to run tests after migration from autotools to cmake. Significantly expand the "debugging" section with more interesting stuff. Update the table of contents accordingly. Fix paragraphs in the overview section. Differential Revision: https://reviews.llvm.org/D22874 llvm-svn: 277029
* Update cxx_dr_Status after 3.9 branchHans Wennborg2016-07-272-11/+11
| | | | llvm-svn: 276887
* www/cxx_status: give more precise links to initialization order wordingRichard Smith2016-07-141-2/+6
| | | | llvm-svn: 275351
* P0305R0: Semantic analysis and code generation for C++17 init-statement for ↵Richard Smith2016-07-141-1/+1
| | | | | | | | | | 'if' and 'switch': if (stmt; condition) { ... } Patch by Anton Bikineev! Some minor formatting and comment tweets by me. llvm-svn: 275350
* cxx_status: make c++17 footnote list formatting consistent with other ↵Richard Smith2016-06-281-3/+1
| | | | | | footnote lists. llvm-svn: 274060
* cxx_status: fix footnote for p0136.Richard Smith2016-06-281-1/+3
| | | | llvm-svn: 274059
* Update cxx_dr_status from test/CXX/drs.Richard Smith2016-06-281-11/+11
| | | | llvm-svn: 274058
* P0136R1, DR1573, DR1645, DR1715, DR1736, DR1903, DR1941, DR1959, DR1991:Richard Smith2016-06-281-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replace inheriting constructors implementation with new approach, voted into C++ last year as a DR against C++11. Instead of synthesizing a set of derived class constructors for each inherited base class constructor, we make the constructors of the base class visible to constructor lookup in the derived class, using the normal rules for using-declarations. For constructors, UsingShadowDecl now has a ConstructorUsingShadowDecl derived class that tracks the requisite additional information. We create shadow constructors (not found by name lookup) in the derived class to model the actual initialization, and have a new expression node, CXXInheritedCtorInitExpr, to model the initialization of a base class from such a constructor. (This initialization is special because it performs real perfect forwarding of arguments.) In cases where argument forwarding is not possible (for inalloca calls, variadic calls, and calls with callee parameter cleanup), the shadow inheriting constructor is not emitted and instead we directly emit the initialization code into the caller of the inherited constructor. Note that this new model is not perfectly compatible with the old model in some corner cases. In particular: * if B inherits a private constructor from A, and C uses that constructor to construct a B, then we previously required that A befriends B and B befriends C, but the new rules require A to befriend C directly, and * if a derived class has its own constructors (and so its implicit default constructor is suppressed), it may still inherit a default constructor from a base class llvm-svn: 274049
* Implement C++17 P0386R2, inline variables. (The 'inline' specifier gives aRichard Smith2016-06-251-1/+1
| | | | | | | variable weak discardable linkage and partially-ordered initialization, and is implied for constexpr static data members.) llvm-svn: 273754
* Correct error in change description.Richard Smith2016-06-241-1/+1
| | | | llvm-svn: 273683
* Remaining motions pass.Richard Smith2016-06-241-2/+0
| | | | llvm-svn: 273681
* Inline variables tentatively approved for C++17.Richard Smith2016-06-241-1/+1
| | | | llvm-svn: 273680
* Updates from further motions.Richard Smith2016-06-241-8/+1
| | | | llvm-svn: 273676
* More approved features for C++17.Richard Smith2016-06-241-2/+2
| | | | llvm-svn: 273668
* Dynamic memory allocation with alignment has been approved for C++17.Richard Smith2016-06-241-2/+2
| | | | llvm-svn: 273667
* Using for attributes voted into C++17.Richard Smith2016-06-241-1/+1
| | | | llvm-svn: 273666
* Add (commented out) status entries for the upcoming WG21 motions.Richard Smith2016-06-241-0/+59
| | | | llvm-svn: 273662
* Implement p0292r2 (constexpr if), a likely C++1z feature.Richard Smith2016-06-231-0/+6
| | | | llvm-svn: 273602
* Add test for DR1359.Richard Smith2016-06-131-1/+1
| | | | llvm-svn: 272575
* [www][analyzer] Update recommended suppression mechanism for localization.Devin Coughlin2016-05-061-2/+2
| | | | | | | Based on feedback from Jordan Rose, make the recommended suppression function be 'static inline'. llvm-svn: 268768
* [www][analyzer] Add FAQ about suppression of missing localization diagnostic.Devin Coughlin2016-05-061-0/+27
| | | | llvm-svn: 268764
* Documentation updates for recent changes to VLAs and default-initialization ↵Richard Smith2016-05-051-17/+13
| | | | | | of const-qualified class objects. llvm-svn: 268600
* Add warning about CR+LF line endings on Windows.Adrian McCarthy2016-04-201-9/+12
| | | | | | | | s/checkout/check out/ when used as a verb. Differential Revision: http://reviews.llvm.org/D19285 llvm-svn: 266887
* Update getting started docsReid Kleckner2016-04-111-6/+6
| | | | | | | | | | | | compiler-rt is optional. We often get email from users with compiler-rt build errors who don't actually need compiler-rt. Marking it optional should help them avoid those potential problems. While I'm here, update a reference to the build directory and remove an obsolete reference to llvm-gcc. Nobody today is under the impression that Clang depends on GCC. llvm-svn: 265963
* Use VS2015 Project Support for Natvis to eliminate the need to manually ↵Mike Spertus2016-03-281-6/+8
| | | | | | | | | install clang native visualizer This is the clang equivalent to llvm commit 264601. When using Visual Studio 2015, cmake now puts the native visualizers in llvm.sln, so the developer automatically sees custom visualizations. Much thanks to ariccio who provided extensive help on this change. (manual installation still needed on VS2013). llvm-svn: 264603
* P0138R2: Allow direct-list-initialization of an enumeration from an integralRichard Smith2016-03-281-1/+1
| | | | | | value that can convert to the enum's underlying type. llvm-svn: 264564
* Make SemaAccess smarter about determining when a dependent class mightRichard Smith2016-03-231-1/+1
| | | | | | | instantiate to match a friend class declaration. It's still pretty dumb, though. llvm-svn: 264189
* [Cxx1z] Implement Lambda Capture of *this by Value as [=,*this] (P0018R3)Faisal Vali2016-03-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement lambda capture of *this by copy. For e.g.: struct A { int d = 10; auto foo() { return [*this] (auto a) mutable { d+=a; return d; }; } }; auto L = A{}.foo(); // A{}'s lifetime is gone. // Below is still ok, because *this was captured by value. assert(L(10) == 20); assert(L(100) == 120); If the capture was implicit, or [this] (i.e. *this was captured by reference), this code would be otherwise undefined. Implementation Strategy: - amend the parser to accept *this in the lambda introducer - add a new king of capture LCK_StarThis - teach Sema::CheckCXXThisCapture to handle by copy captures of the enclosing object (i.e. *this) - when CheckCXXThisCapture does capture by copy, the corresponding initializer expression for the closure's data member direct-initializes it thus making a copy of '*this'. - in codegen, when assigning to CXXThisValue, if *this was captured by copy, make sure it points to the corresponding field member, and not, unlike when captured by reference, what the field member points to. - mark feature as implemented in svn Much gratitude to Richard Smith for his carefully illuminating reviews! llvm-svn: 263921
OpenPOWER on IntegriCloud