Commit Graph

43 Commits

Author SHA1 Message Date
Richard Smith 3e45634a7f P0426: Make the library implementation of constexpr char_traits a little easier
by providing a memchr builtin that returns char* instead of void*.

Also add a __has_feature flag to indicate the presence of constexpr forms of
the relevant <string> functions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@292555 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-20 00:45:35 +00:00
Yunzhong Gao 5276862e7f [Tests] Add explicit -std=lang option to a number of tests.
This patch should not change the test results, but it is useful if clang's
default C++ language is ever changed from gnu++98.

Patch by: Charles Li

http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20150727/134667.html



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@243819 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-01 02:55:59 +00:00
Faisal Vali f0a57a18c4 Apply existing checks to C++1Z (has_feature_cxx0x); NFC
This applies the existing checks in has_feature_cxx0x to -std=c++1z.
In addition, references to C++1y are updated to refer to C++14

No functional change. Testing of __has_feature for C++1z features
is not added in this change.

Patch by Hubert Tong! 


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@237992 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-22 02:57:28 +00:00
Nico Weber 8e9d616be9 Add support for has_feature(cxx_alignof) and has_feature(c_alignof).
r142020 added support for has_feature(cxx_alignas). This does the same for
alignof.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@223186 91177308-0d34-0410-b5e6-96231b3b80d8
2014-12-03 01:25:49 +00:00
Richard Smith f6df606f31 PR19698, PR19674: enable __has_feature checks for cxx_generic_lambdas and
cxx_decltype_auto, and fix documentation of cxx_generic_lambdas and
cxx_init_captures to specify the right feature-check name.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208445 91177308-0d34-0410-b5e6-96231b3b80d8
2014-05-09 21:08:59 +00:00
Richard Smith 44868f5b6a Mark lambda init-captures as complete.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191607 91177308-0d34-0410-b5e6-96231b3b80d8
2013-09-28 04:37:56 +00:00
Richard Smith 629bc52604 Mark variable template implementation as complete. Nearly all of the credit
here goes to Larisse Voufo.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191549 91177308-0d34-0410-b5e6-96231b3b80d8
2013-09-27 20:19:41 +00:00
Richard Smith a4fb339085 Update documentation to match current C++1y feature set.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187055 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-24 17:41:31 +00:00
Richard Smith f45c2992a3 C++1y: provide full 'auto' return type deduction for lambda expressions. This
completes the implementation of N3638.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181669 91177308-0d34-0410-b5e6-96231b3b80d8
2013-05-12 03:09:35 +00:00
Richard Smith 7f0ffb3a9f C++1y: Update __cplusplus to temporary value 201305L to allow detection of provisional C++1y support.
Add __has_feature and __has_extension checks for C++1y features (based on the provisional names from
the C++ features study group), and update documentation to match.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181342 91177308-0d34-0410-b5e6-96231b3b80d8
2013-05-07 19:32:56 +00:00
Douglas Gregor e87c5bd593 Only evaluate __has_feature(c_thread_local) and __has_feature(cxx_thread_local) true when the target supports thread-local storage.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180909 91177308-0d34-0410-b5e6-96231b3b80d8
2013-05-02 05:28:32 +00:00
Richard Smith e6e68b5377 C++11 support is now feature-complete.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179861 91177308-0d34-0410-b5e6-96231b3b80d8
2013-04-19 17:00:31 +00:00
Douglas Gregor 316551f079 Add a query macro for C++11 N3276, decltype does not require complete
return types, from Michel Morin!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154428 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-10 20:00:33 +00:00
Douglas Gregor 7b156ddae8 Add feature check "cxx_local_type_template_args" describing support
for templates with local template arguments, from Michel Morin! Fixes
PR12337.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153983 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-04 00:48:39 +00:00
Richard Smith 9c1dda7d7b User-defined literals are done.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152396 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-09 08:41:27 +00:00
Richard Smith ec92bc7897 Add a pile of tests for unrestricted unions, and advertise support for them.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151992 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-03 23:51:05 +00:00
Sebastian Redl d1dc3aa257 Initializer lists are now supported.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151458 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-25 20:51:27 +00:00
Douglas Gregor 7c07e964d7 Clang now supports lambda expressions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151231 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-23 03:02:32 +00:00
Richard Smith b5216aaf80 Advertize support for constexpr.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150524 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-14 22:56:17 +00:00
David Chisnall 7a7ee3033e Some improvements to the handling of C11 atomic types:
- Add atomic-to/from-nonatomic cast types
- Emit atomic operations for arithmetic on atomic types
- Emit non-atomic stores for initialisation of atomic types, but atomic stores and loads for every other store / load
- Add a __atomic_init() intrinsic which does a non-atomic store to an _Atomic() type.  This is needed for the corresponding C11 stdatomic.h function.
- Enables the relevant __has_feature() checks.  The feature isn't 100% complete yet, but it's done enough that we want people testing it.

Still to do:

- Make the arithmetic operations on atomic types (e.g. Atomic(int) foo = 1; foo++;) use the correct LLVM intrinsic if one exists, not a loop with a cmpxchg.
- Add a signal fence builtin
- Properly set the fenv state in atomic operations on floating point values
- Correctly handle things like _Atomic(_Complex double) which are too large for an atomic cmpxchg on some platforms (this requires working out what 'correctly' means in this context)
- Fix the many remaining corner cases



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148242 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-16 17:27:18 +00:00
Douglas Gregor 172b221147 Add __has_feature(cxx_raw_string_literals) and
__has_feature(cxx_unicode_literals), from Michel Morin!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143412 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-01 01:23:44 +00:00
Douglas Gregor f695a6952f Add __has_feature(cxx_defaulted_functions) for querying "defaulted
functions", from Michel Morin!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143411 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-01 01:19:34 +00:00
Peter Collingbourne fd5f6866a7 Add c_alignas and cxx_alignas features
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142020 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-14 23:44:46 +00:00
Richard Smith 762bb9d0ad Update all tests other than Driver/std.cpp to use -std=c++11 rather than
-std=c++0x. Patch by Ahmed Charles!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141900 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-13 22:29:44 +00:00
Sebastian Redl 74e611a5fd Add test case for defaulted copy and move structure validation.
Fix bug this uncovered.
Address minor comments from Doug.
Enable cxx_implicit_moves feature.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139101 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-04 18:14:28 +00:00
Douglas Gregor 84ee2eeec9 Audit and finish the implementation of C++0x nullptr, fixing two
minor issues along the way:
  - Non-type template parameters of type 'std::nullptr_t' were not
  permitted.
  - We didn't properly introduce built-in operators for nullptr ==,
  !=, <, <=, >=, or > as candidate functions .

To my knowledge, there's only one (minor but annoying) part of nullptr
that hasn't been implemented: catching a thrown 'nullptr' as a pointer
or pointer-to-member, per C++0x [except.handle]p4.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131813 91177308-0d34-0410-b5e6-96231b3b80d8
2011-05-21 23:15:46 +00:00
Richard Smith 3e4c6c4c79 Implement support for C++0x alias templates.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130953 91177308-0d34-0410-b5e6-96231b3b80d8
2011-05-05 21:57:07 +00:00
Richard Smith a391a4642c Add __has_feature(cxx_range_for) check for C++11 range-based for loop.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129573 91177308-0d34-0410-b5e6-96231b3b80d8
2011-04-15 15:14:40 +00:00
Richard Smith 6a4e73ccd0 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).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128787 91177308-0d34-0410-b5e6-96231b3b80d8
2011-04-03 14:12:46 +00:00
Anders Carlsson c8b9f79770 we can now claim to fully support the override control feature in C++0x.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128281 91177308-0d34-0410-b5e6-96231b3b80d8
2011-03-25 15:04:23 +00:00
Sebastian Redl 4561ecdf27 Create __has_feature(cxx_noexcept) and mark it as working.
Find out that our C++0x status has only one field for noexcept expression and specification together, and that it was accidentally already marked as fully implemented.
This completes noexcept specification work.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127701 91177308-0d34-0410-b5e6-96231b3b80d8
2011-03-15 21:17:12 +00:00
Richard Smith 738291eeda Turn on __has_feature(cxx_auto_type). The feature is now fully implemented.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126078 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-20 12:13:05 +00:00
Douglas Gregor 0750800623 Add a __has_feature check for default template arguments in function
templates, a C++0x feature.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124973 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-05 20:35:30 +00:00
Douglas Gregor 56209ffed2 Add __has_feature(cxx_reference_qualified_functions); update tests and
documentation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124322 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26 21:25:54 +00:00
Douglas Gregor c78e259a5f Clean up the C++0x __has_feature tests. Specifically:
- Don't publicize a C++0x feature through __has_feature if we aren't
    in C++0x mode (even if the feature is available only with a
    warning). 
  - "auto" is not implemented well enough for its __has_feature to be
    turned on.
  - Fix the test of C++0x __has_feature to actually test what we're
  trying to test. Searching for the substring "foo" when our options
  are "foo" and "no_foo" doesn't work :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124291 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-26 15:36:03 +00:00
Douglas Gregor 16cf8f5b6f Downgrade the error about rvalue references to an extension warning
and turn on __has_feature(cxx_rvalue_references). The core rvalue
references proposal seems to be fully implemented now, pending lots
more testing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124169 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-25 02:17:32 +00:00
Douglas Gregor 83d7781f9d Eradicate any mention of C++0x concepts.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123860 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-19 23:15:20 +00:00
Douglas Gregor 4c9131ac2d Variadic templates are fully implemented.
Turn on the __has_feature switch for variadic templates, document
their completion, and put the ExtWarn into the c++0x-extensions
warning group.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123854 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-19 22:11:50 +00:00
Anders Carlsson 37bf9d2bb7 Allow the use of C++0x deleted functions as an extension in C++98.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114762 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-24 21:25:25 +00:00
Sebastian Redl f6c0977581 Implement __has_feature(cxx_inline_namespaces)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112671 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31 23:28:47 +00:00
Daniel Dunbar 9fde9c424f tests: Use %clangxx when using driver for C++, in case C++ support is disabled.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107153 91177308-0d34-0410-b5e6-96231b3b80d8
2010-06-29 16:52:24 +00:00
Sean Hunt 1248451dcb Update test function names so as not to use potential keywords.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93314 91177308-0d34-0410-b5e6-96231b3b80d8
2010-01-13 08:58:42 +00:00
Sean Hunt 4ef4c6b232 Add a bunch more feature-checking macros for C++0x features. Some of these are
disabled with the intent that users can start with them now and not have to change
a thing to have them work when we implement the features.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93312 91177308-0d34-0410-b5e6-96231b3b80d8
2010-01-13 08:31:49 +00:00