Commit Graph

180 Commits

Author SHA1 Message Date
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
Sebastian Redl d89c218a2b Initializer lists are now supported.
llvm-svn: 151458
2012-02-25 20:51:27 +00:00
Richard Smith 18743deb21 cxx_status: Consistently refer to C++11 as "C++11", not as "C++'11" nor as
"C++0x". Use "C++98" to refer to C++98, not "C++". Add heading for C++98
support section.

llvm-svn: 151381
2012-02-24 18:42:08 +00:00
Richard Smith 4e8376279d cxx_status: extended sizeof has been essentially complete for some time. As
agreed on IRC, any remaining issues are best dealt with as bugs.

We have no __has_feature check for this; please shout if you'd like one. This
feature seems too small to be worth its own release notes bullet (again, please
shout if you disagree).

llvm-svn: 151380
2012-02-24 18:37:14 +00:00
Douglas Gregor a2bd11f2de Tweak C++ status table:
- Apparently, SVN is yellow
  - Note that initializer lists are "in progress"

llvm-svn: 151232
2012-02-23 03:10:24 +00:00
Douglas Gregor 34b2e8bb17 Clang now supports lambda expressions.
llvm-svn: 151231
2012-02-23 03:02:32 +00:00
Richard Smith b9a7efd791 I hereby declare that all remaining constexpr issues are bugs, not unimplemented
features. :)

llvm-svn: 150522
2012-02-14 22:39:23 +00:00
Richard Smith 173b94c9ac Revert accidentally-committed file in r148020.
llvm-svn: 148021
2012-01-12 06:10:09 +00:00
Richard Smith 02ab9c2940 Allow constant-folding of references which were formed in a manner not permitted
in a constant expression, for compatibility with g++.

llvm-svn: 148020
2012-01-12 06:08:57 +00:00
Benjamin Kramer 1c9e158120 Fix markup weirdness.
llvm-svn: 143803
2011-11-05 10:11:36 +00:00
David Blaikie 503616199f Fixing some dead links. Patch by Jean-Daniel Dupas!
llvm-svn: 143539
2011-11-02 15:13:40 +00:00
Michael J. Spencer e73bd64d12 Add colors to the C++11 status page.
llvm-svn: 143535
2011-11-02 06:29:37 +00:00
Douglas Gregor 7ff1e7ed68 Deleted functions were in Clang 2.9, defaulted functions in
3.0. Fixses PR11252.

llvm-svn: 143216
2011-10-28 19:44:09 +00:00
Douglas Gregor 3d711633a3 Tweak the C++11 status prose a bit. We still need better user guidance on the standard library issue
llvm-svn: 142019
2011-10-14 23:35:48 +00:00
Douglas Gregor 1f64b59872 Switch the C++11 status table from a developer-centric list to a
user-centric list, with Clang version numbers, following GCC's lead
(and user requests).

llvm-svn: 142015
2011-10-14 23:21:49 +00:00
David Blaikie e35b3aae52 Updating the Clang website to refer to C++'11 instead of C++'0x
llvm-svn: 141949
2011-10-14 07:58:10 +00:00
Sebastian Redl 6ce53ae752 Now that we support move generation, mention this in the language extension and C++ status pages. Also update the C++ status for default functions, which are complete now that we can generate move functions, and destructor exception specifications, which I did a while ago.
llvm-svn: 141558
2011-10-10 18:10:00 +00:00
Craig Topper 93b3e848de Update C++0x status page to reflect support for raw string literals.
llvm-svn: 137299
2011-08-11 04:09:26 +00:00
Douglas Gregor 9bcdc82642 Update C++0x status page to reflect support for unicode string and character literals, from Craig Topper
llvm-svn: 136216
2011-07-27 15:10:09 +00:00
Douglas Gregor 918f98ab42 Update C++0x status for explicit override controls and explicit
conversion operators, from Jonathan Sauer.

llvm-svn: 135932
2011-07-25 18:53:48 +00:00
Richard Smith 42a4996b5a Update cxx_status page on www: clang has had full support for in-class initializers since r132890.
llvm-svn: 135689
2011-07-21 18:02:57 +00:00
Douglas Gregor 17aa45d431 Clean up the C++ status page by eliminating the utterly unnecessary set of projects. C++98/03 is sooooo yesterday
llvm-svn: 135687
2011-07-21 17:46:15 +00:00
Douglas Gregor 80d6322c00 Update C++0x nullptr status, from Jonathan Sauer
llvm-svn: 135686
2011-07-21 17:41:00 +00:00
Richard Smith e3a5ff1508 Update www: we now mangle references to function parameters properly. Also, this is really more a decltype issue rather than a late-specified return type issue.
llvm-svn: 130958
2011-05-05 22:07:51 +00:00
Richard Smith 3f1b5d077b Implement support for C++0x alias templates.
llvm-svn: 130953
2011-05-05 21:57:07 +00:00
Alexis Hunt 61bc173784 Fully implement delegating constructors!
As far as I know, this implementation is complete but might be missing a
few optimizations. Exceptions and virtual bases are handled correctly.

Because I'm an optimist, the web page has appropriately been updated. If
I'm wrong, feel free to downgrade its support categories.

llvm-svn: 130642
2011-05-01 07:04:31 +00:00
Richard Smith 6c42433ceb Update www: clang now supports C++11 for-range and non-template type aliases.
llvm-svn: 129569
2011-04-15 14:38:27 +00:00
Chris Lattner 57540c5be0 fix a bunch of comment typos found by codespell. Patch by
Luis Felipe Strano Moraes!

llvm-svn: 129559
2011-04-15 05:22:18 +00:00
Richard Smith fdc33cbecd Name mangling of late-specified return types doesn't work if the return type references the argument types:
template<typename T> auto f(T a) -> decltype(a.foo());

Since this is the primary reason for the introduction of this feature, downgrade implementation status to "Some examples work".

llvm-svn: 129533
2011-04-14 19:57:19 +00:00
Richard Smith 13f68cf53e clang has had full and tested support for C++0x trailing-return-type and auto type deduction since r126166. Update the website to reflect this, and add a __has_feature test.
trailing-return-type codegen is not tested yet (name mangling in particular).

llvm-svn: 128787
2011-04-03 14:12:46 +00:00
Jeffrey Yasskin cb40757195 Add a libstdc++-4.4 patch for C++0x to the website.
llvm-svn: 128498
2011-03-29 22:27:50 +00:00
Douglas Gregor 0a1650feae Clang supports __STDC_HOSTED__. Patch by Jonathan Sauer
llvm-svn: 128377
2011-03-27 09:49:38 +00:00
Richard Smith bb7dcf59a0 Update the www to indicate that auto is now implemented.
llvm-svn: 126280
2011-02-23 00:41:16 +00:00
Douglas Gregor 9636753d39 Update C++0x status web page
llvm-svn: 124326
2011-01-26 21:35:14 +00:00