Commit Graph

213 Commits

Author SHA1 Message Date
Larisse Voufo b9737e314c Update status of support for variable templates on website.
llvm-svn: 187785
2013-08-06 07:37:09 +00:00
Richard Smith 08d6a2cc7a C++1y: track object lifetime during constexpr evaluation, and don't allow
objects to be used once their lifetimes end. This completes the C++1y
constexpr extensions.

llvm-svn: 187025
2013-07-24 07:11:57 +00:00
Richard Smith 8d0dc31dca Tighten up the set of operator new/operator delete calls we're permitted to
optimize, to follow the permissions granted in N3664. Under those rules, only
calls generated by new-expressions and delete-expressions are permitted to be
optimized, and direct calls to ::operator new and ::operator delete must be
treated as normal calls.

llvm-svn: 186799
2013-07-21 23:12:18 +00:00
Richard Smith 9924772d5f Turn Clang 3.3 boxes on C++ status from yellow to green now we're releasing it.
llvm-svn: 184149
2013-06-17 23:54:23 +00:00
Larisse Voufo e4fb3dc7d4 Corrected status of support for contextual conversion from full to SVN
llvm-svn: 184073
2013-06-17 05:37:15 +00:00
Larisse Voufo 492a6af72f Updated status of support for contextual conversion from partial to full
llvm-svn: 184049
2013-06-15 20:26:23 +00:00
Larisse Voufo 27ef14f098 Updated C++1y status for contextual conversions to 'partial' (without review)
llvm-svn: 183888
2013-06-13 06:04:33 +00:00
Richard Smith 0e4676e1f5 Downgrade C++14 "Clarifying memory allocation". We perform non-conforming
optimizations -- in particular, globalopt will remove calls to ::operator
new(size_t) that did not come from new-expressions.

llvm-svn: 181676
2013-05-12 23:39:32 +00:00
Richard Smith 9155be1e54 C++1y: provide full 'auto' return type deduction for lambda expressions. This
completes the implementation of N3638.

llvm-svn: 181669
2013-05-12 03:09:35 +00:00
Richard Smith f2f6e114fd Switch C++1y paper links back to the canonical location at open-std.org now that the post-Bristol mailing has shipped.
llvm-svn: 181533
2013-05-09 18:53:17 +00:00
Richard Smith badcd986bb C++ status:
- fix paper links to point to isocpp.org, where most of the papers are already up
 - update "SVN" features to "Clang 3.3" to distinguish them from features which we
   complete after the branch
 - document use of -std=c++1y to enable c++1y support

llvm-svn: 181283
2013-05-07 02:55:48 +00:00
Richard Smith fa7a7b4f36 Tweaks to C++ status: add a link to Faisal's generic lambdas implementation,
and mark "clarifying memory allocation" as done, since it turns out that our
optimizations here (such as they are) already conform to the new rules.

llvm-svn: 181110
2013-05-04 07:12:37 +00:00
Richard Smith 452d6b0331 More colours for C++ status page, and mark relaxed constexpr as partially complete.
llvm-svn: 181109
2013-05-04 07:02:10 +00:00
Richard Smith 2a7d481faf Implement most of N3638 (return type deduction for normal functions).
Missing (somewhat ironically) is support for the new deduction rules
in lambda functions, plus PCH support for return type patching.

llvm-svn: 181108
2013-05-04 07:00:32 +00:00
Richard Smith 74aeef50a0 Implement C++1y decltype(auto).
llvm-svn: 180610
2013-04-26 16:15:35 +00:00
Richard Smith 852c9db72b C++1y: Allow aggregates to have default initializers.
Add a CXXDefaultInitExpr, analogous to CXXDefaultArgExpr, and use it both in
CXXCtorInitializers and in InitListExprs to represent a default initializer.

There's an additional complication here: because the default initializer can
refer to the initialized object via its 'this' pointer, we need to make sure
that 'this' points to the right thing within the evaluation.

llvm-svn: 179958
2013-04-20 22:23:05 +00:00
Richard Smith 4cf9a1ee0b Add note that some of these links are dead for now.
llvm-svn: 179950
2013-04-20 13:22:50 +00:00
Richard Smith 33089cbdae VLAs in C++14!
llvm-svn: 179949
2013-04-20 13:20:33 +00:00
Richard Smith 7898d7ba96 Variable templates and generic lambdas are approved for C++14.
llvm-svn: 179947
2013-04-20 12:58:57 +00:00
Richard Smith d3a7386452 Clarifying memory allocation: approved for C++14. Move from N/A to no, since we currently relax 'operator new' calls which didn't come from new-expressions.
llvm-svn: 179946
2013-04-20 12:57:49 +00:00
Richard Smith 74c61eaca2 No digit separators for C++14.
llvm-svn: 179945
2013-04-20 12:56:37 +00:00
Richard Smith 7feda2f990 Generalized constexpr is approved for C++14.
llvm-svn: 179944
2013-04-20 12:49:36 +00:00
Richard Smith 5db8b286e2 More approved C++14 features.
llvm-svn: 179943
2013-04-20 12:47:36 +00:00
Richard Smith 0fa4fceaae Binary literals are approved for C++14.
llvm-svn: 179942
2013-04-20 12:44:32 +00:00
Richard Smith c5c27f2a1f Note that we support (and in fact have supported since the dawn of time itself)
C++1y binary literals.

llvm-svn: 179883
2013-04-19 20:47:20 +00:00
Richard Smith 9172520f57 Initial work on status page for C++14.
llvm-svn: 179864
2013-04-19 17:27:48 +00:00
Richard Smith 25b555a6bf C++11 support is now feature-complete.
llvm-svn: 179861
2013-04-19 17:00:31 +00:00
Richard Smith b7151b910c Add support for computing the exception specification for an inheriting
constructor. This isn't quite perfect (as usual, we don't handle default
arguments correctly yet, and we don't deal with copy/move constructors for
arguments correctly either, but this will be fixed when we implement core issue
1351.

This completes our support for inheriting constructors.

llvm-svn: 179154
2013-04-10 06:11:48 +00:00
Richard Smith 38546eddf4 Add a linebreak. Linebreaks are cool.
llvm-svn: 177325
2013-03-18 21:57:52 +00:00
Richard Smith 8024ee5603 C++11 status: mark 'extended integral types' as N/A, since we don't support
any, and add a note that we cannot treat __int128 as an extended integral type.

llvm-svn: 177324
2013-03-18 21:44:56 +00:00
Richard Smith 9deb9d9d42 Make C++11 status page more consistent: we mark entries as "done" if we
implement correct functionality, even if it's not optimal. On this basis, mark
"data dependency ordering" as done. Add footnotes for cases where our
implementation is known to be suboptimal.

llvm-svn: 176891
2013-03-12 19:56:09 +00:00
Richard Smith 531c9a0c27 www tweaks to embiggen up our near-complete C++11 and C11 support.
llvm-svn: 176781
2013-03-10 00:11:00 +00:00
Richard Smith 537a834bca C++11 status page:
* Mark attributes as done in SVN.
 * Downgrade alignment support from 'Clang 3.0' to 'SVN', now that we actually implement the rules.
 * Upgrade 'Dynamic initialization with concurrency' from 'No' to 'Clang 2.9' -- all that is required here is the ABI-mandated locking for the initialization of static locals.

llvm-svn: 175882
2013-02-22 09:31:00 +00:00
Richard Smith bc4fc77aac C++11 status:
* Mark 'sequence points' as done now we have a warning for unsequenced operations
 * Mark 'memory model' as done now we correctly model bitfield operations

llvm-svn: 173771
2013-01-29 04:55:18 +00:00
Richard Smith 2ddcbab8ff Ugly ugly hack for libstdc++-4.6 and libstdc++-4.7 compatibility. These
libraries have an incorrect definition of std::common_type (inherited from a
bug in the standard -- see LWG issue 2141), whereby they produce reference
types when they should not.

If we instantiate a typedef named std::common_type<...>::type, which is defined
in a system header as decltype(... ? ... : ...), and the decltype produces a
reference type, convert it to the non-reference type. (This doesn't affect any
LWG2141-conforming implementation of common_type, such as libc++'s, because the
default implementation of common_type<...>::type isn't supposed to produce a
reference type.)

This is horrible. I'm really sorry. :( Better ideas appreciated!

llvm-svn: 166455
2012-10-23 00:32:41 +00:00
Richard Smith 84b163cf66 libstdc++-4.6 needs the same common_type fix as libstdc++-4.7. Other than that,
Clang can now cope with its eccentricities in C++11 mode.

llvm-svn: 165265
2012-10-04 22:23:07 +00:00
Richard Smith 607d631d64 Clang 3.1 is out: turn the relevant C++11 status boxes green.
llvm-svn: 157308
2012-05-23 01:38:11 +00:00
Benjamin Kramer 134ce10dbf c++11 status: Replace references to "SVN" with "3.1" to avoid confusion when they diverge.
Color is still yellow, as 3.1 isn't released yet.

llvm-svn: 155217
2012-04-20 18:43:50 +00:00
Richard Smith 3c90f01bf0 In an attempt to reduce confusion, mark 'Strong compare exchange' as done, since
we generate correct code for both strong and weak atomic compare-exchanges, even
though we don't propagate to the IR enough information to generate optimal weak
compare-exchanges on architectures which support them.

llvm-svn: 155161
2012-04-19 22:09:22 +00:00
Richard Smith f5520aebb1 Link to a tiny patch to libstdc++-4.7 to work around the <chrono> issues
from the C++ status page.

llvm-svn: 154890
2012-04-17 01:04:22 +00:00
Richard Smith d3b64878ff Now that we provide sufficient support for three C11/C++11 atomics
implementations, mark the atomics-related parts of the C++11 status page
as done. I've not marked 'Strong Compare and Exchange' done, since although
we implement supporting builtins, we don't yet produce different code for
the weak and strong forms.

llvm-svn: 154644
2012-04-13 01:02:19 +00:00
Douglas Gregor 0598962a7b Add a query macro for C++11 N3276, decltype does not require complete
return types, from Michel Morin!

llvm-svn: 154428
2012-04-10 20:00:33 +00:00
Richard Smith 6da64f39d4 Forward-declared enumerations are now complete, except for an interaction
between unscoped enumerations and class template member specializations,
whose behavior is currently under discussion in CWG (and for which there
is a preference to not implement the currently-standardized wording).

llvm-svn: 153464
2012-03-26 20:31:41 +00:00
Richard Smith 34bd1eb560 Revert accidentally-committed www changes (and an unused diagnostic);
forward-declared enums aren't /quite/ done yet.

llvm-svn: 153350
2012-03-23 23:11:49 +00:00
Richard Smith b66d77793f When defining a forward-declared enum, don't try to attach the definition to
a previous declaration if the redeclaration is invalid. That way lies madness.
Fixes a crash-on-invalid reported by Abramo.

llvm-svn: 153349
2012-03-23 23:09:08 +00:00
Richard Smith 4b38ded66a Instantiating a class template should not instantiate the definition of any
scoped enumeration members. Later uses of an enumeration temploid as a nested
name specifier should cause its instantiation. Plus some groundwork for
explicit specialization of member enumerations of class templates.

llvm-svn: 152750
2012-03-14 23:13:10 +00:00
Richard Smith 6d244d754b cxx_status: No compiler changes are required for 'minimal support for garbage
collection'. Keep it in the table to match gcc's table, but mark it N/A.

llvm-svn: 152528
2012-03-11 03:06:00 +00:00
Richard Smith 2a70e65436 Improve diagnostics for UCNs referring to control characters and members of the
basic source character set in C++98. Add -Wc++98-compat diagnostics for same in
literals in C++11. Extend such support to cover string literals as well as
character literals, and mark N2170 as done.

This seems too minor to warrant a release note to me. Let me know if you disagree.

llvm-svn: 152444
2012-03-09 22:27:51 +00:00
Richard Smith 5023188315 User-defined literals are done.
llvm-svn: 152396
2012-03-09 08:41:27 +00:00
Richard Smith 522fa53703 Add a pile of tests for unrestricted unions, and advertise support for them.
llvm-svn: 151992
2012-03-03 23:51:05 +00:00