Commit Graph

1182 Commits

Author SHA1 Message Date
Mike Spertus 6601a4420b Use VS2015 Project Support for Natvis to eliminate the need to manually 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
2016-03-28 18:03:37 +00:00
Richard Smith ed638864d3 P0138R2: Allow direct-list-initialization of an enumeration from an integral
value that can convert to the enum's underlying type.

llvm-svn: 264564
2016-03-28 06:08:37 +00:00
Richard Smith fd55fc86ed Make SemaAccess smarter about determining when a dependent class might
instantiate to match a friend class declaration. It's still pretty dumb,
though.

llvm-svn: 264189
2016-03-23 20:39:06 +00:00
Faisal Vali dc6b596ebb [Cxx1z] Implement Lambda Capture of *this by Value as [=,*this] (P0018R3)
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
2016-03-21 09:25:37 +00:00
Richard Smith 25dde97526 Mark C++ features implemented in Clang 3.8 as done now that 3.8 has released.
llvm-svn: 263896
2016-03-20 10:37:12 +00:00
Richard Smith 01694c340d P0184R0: Allow types of 'begin' and 'end' expressions in range-based for loops to differ.
llvm-svn: 263895
2016-03-20 10:33:40 +00:00
Aaron Ballman 0bcd6c1b18 Implement support for [[maybe_unused]] in C++1z that is based off existing support for unused, and treat it as an extension pre-C++1z. This also means extending the existing unused attribute so that it can be placed on an enum and enumerator, in addition to the other subjects.
llvm-svn: 263025
2016-03-09 16:48:08 +00:00
Richard Smith 872307e2ac P0017R1: In C++1z, an aggregate class can have (public non-virtual) base classes; these are initialized as if they were data members.
llvm-svn: 262963
2016-03-08 22:17:41 +00:00
Richard Smith 89e9597a50 Use class="svn" for features with SVN status.
llvm-svn: 262889
2016-03-08 00:45:37 +00:00
Richard Smith 4f902c7ecc P0188R1: add support for standard [[fallthrough]] attribute. This is almost
exactly the same as clang's existing [[clang::fallthrough]] attribute, which
has been updated to have the same semantics. The one significant difference
is that [[fallthrough]] is ill-formed if it's not used immediately before a
switch label (even when -Wimplicit-fallthrough is disabled). To support that,
we now build a CFG of any function that uses a '[[fallthrough]];' statement
to check.

In passing, fix some bugs with our support for statement attributes -- in
particular, diagnose their use on declarations, rather than asserting.

llvm-svn: 262881
2016-03-08 00:32:55 +00:00
Aaron Ballman e7964789da Implement support for [[nodiscard]] in C++1z that is based off existing support for warn_unused_result, and treat it as an extension pre-C++1z. This also means extending the existing warn_unused_result attribute so that it can be placed on an enum as well as a class.
llvm-svn: 262872
2016-03-07 22:44:55 +00:00
Richard Smith 8ee39e31bb Implement P0036R0: remove support for empty unary folds of +, *, |, &.
llvm-svn: 262747
2016-03-04 21:27:21 +00:00
Richard Smith f006a96aff Update cxx_status with likely new features from Jacksonville WG21 meeting.
llvm-svn: 262743
2016-03-04 21:01:14 +00:00
Nico Weber 6a6376b17c Implement the likely resolution of core issue 253.
C++11 requires const objects to have a user-provided constructor, even for
classes without any fields. DR 253 relaxes this to say "If the implicit default
constructor initializes all subobjects, no initializer should be required."

clang is currently the only compiler that implements this C++11 rule, and e.g.
libstdc++ relies on something like DR 253 to compile in newer versions.  This
change  makes it possible to build code that says `const vector<int> v;' again
when using libstdc++5.2 and _GLIBCXX_DEBUG
(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60284).

Fixes PR23381.

http://reviews.llvm.org/D16552

llvm-svn: 261297
2016-02-19 01:52:46 +00:00
Nico Weber 5f1c2851cc Update cxx_dr_status.html with today's cwg_index.html.
Created by:
cd www
curl -O http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_index.html
./make_cxx_dr_status

llvm-svn: 261295
2016-02-19 01:49:39 +00:00
Yury Gribov a6560ebe4c [analyzer] Add --force-analyze-debug-code option to scan-build
to force debug build and hopefully enable more precise warnings.

Static Analyzer is much more efficient when built in debug mode
(-UNDEBUG) so we advice users to enable it manually. This may be
inconvenient in case of large complex projects (think about Linux
distros e.g. Android or Tizen). This patch adds a flag to scan-build
which inserts -UNDEBUG automatically.

Differential Revision: http://reviews.llvm.org/D16200

llvm-svn: 261204
2016-02-18 11:08:46 +00:00
Mandeep Singh Grang a2623c8739 Test commit, fixed "clang" to "Clang" in docs
Reviewers: weimingz

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D17085

llvm-svn: 260433
2016-02-10 21:06:10 +00:00
Richard Smith 952923be11 Update documentation to reflect that libc++abi provides __cxa_thread_atexit (and has for quite a while). Also document that we have not yet implemented the new inheriting constructor rules.
llvm-svn: 260311
2016-02-09 22:48:14 +00:00
Devin Coughlin 81f240a3ff [www] Update analyzer release notes to correct the checker-278 build date.
This is not the future.

llvm-svn: 259969
2016-02-06 00:59:14 +00:00
Devin Coughlin ca14ce0f1d [www] Update analyzer website for checker-278.
llvm-svn: 259967
2016-02-06 00:53:33 +00:00
David Majnemer 31be598153 Mark DR1250 as implemented
We implemented this DR back in r258768 but forgot to mark it as
implemented.

llvm-svn: 259335
2016-02-01 01:33:17 +00:00
Alexey Samsonov 433c43cd85 Remove references to autotools build.
llvm-svn: 259278
2016-01-30 00:54:42 +00:00
Richard Smith 2761508fcd Update cxx_dr_status for latest issues list.
llvm-svn: 257698
2016-01-13 22:58:22 +00:00
Richard Smith ba651344a8 Update make_cxx_dr_status after the 3.8 branch.
llvm-svn: 257695
2016-01-13 22:51:59 +00:00
Hans Wennborg e3391d7ef9 Update cxx_dr_status.html after the 3.8 branch
llvm-svn: 257652
2016-01-13 19:14:03 +00:00
Richard Smith 9043d75e75 Fix grammar.
llvm-svn: 255727
2015-12-16 00:19:23 +00:00
Richard Smith e873686e3c Update our claims about GCC's diagnostics quality to reflect recent improvements to GCC.
llvm-svn: 255726
2015-12-16 00:18:47 +00:00
Richard Smith 90ae7922b5 These days, GCC has at least minimal documentation for its VLAIS extension.
llvm-svn: 255723
2015-12-16 00:09:57 +00:00
Justin Bogner 78a9db7ae0 www: Mention -DGCC_INSTALL_PREFIX instead of --with-gcc-toolchain
Since the instructions use cmake, we should probably refer to the
cmake flags and not the configure ones.

llvm-svn: 255297
2015-12-10 20:52:59 +00:00
Richard Smith 85864d5b43 Update reference to final TM TS spec.
llvm-svn: 254123
2015-11-26 02:23:21 +00:00
Richard Smith 4a0cd89325 P0002R1: increment on expressions of type bool is no longer allowed in C++1z.
llvm-svn: 254122
2015-11-26 02:16:37 +00:00
Richard Smith 291027692f P0001R1: 'register' storage class specifier is no longer permitted in C++1z.
We will still allow it in system headers, in macros from system headers, when
combined with an 'asm' label, and under the flag -Wno-register.

llvm-svn: 254097
2015-11-25 21:34:21 +00:00
Richard Smith 990668b7d0 DR407: Rationalize how we handle tags being hidden by typedefs. Even with
DR407, the C++ standard doesn't really say how this should work. Here's what we
do (which is consistent with DR407 as far as I can tell):

 * When performing name lookup for an elaborated-type-specifier, a tag
   declaration hides a typedef declaration that names the same type.
 * When performing any other kind of lookup, a typedef declaration hides
   a tag declaration that names the same type.

In any other case where lookup finds both a typedef and a tag (that is, when
they name different types), the lookup will be ambiguous. If lookup finds a
tag and a typedef that name the same type, and finds anything else, the lookup
will always be ambiguous (even if the other entity would hide the tag, it does
not also hide the typedef).

llvm-svn: 252959
2015-11-12 22:04:34 +00:00
Richard Smith 42b1057244 N3922: direct-list-initialization of an auto-typed variable no longer deduces a
std::initializer_list<T> type. Instead, the list must contain a single element
and the type is deduced from that.

In Clang 3.7, we warned by default on all the cases that would change meaning
due to this change. In Clang 3.8, we will support only the new rules -- per
the request in N3922, this change is applied as a Defect Report against earlier
versions of the C++ standard.

This change is not entirely trivial, because for lambda init-captures we
previously did not track the difference between direct-list-initialization and
copy-list-initialization. The difference was not previously observable, because
the two forms of initialization always did the same thing (the elements of the
initializer list were always copy-initialized regardless of the initialization
style used for the init-capture).

llvm-svn: 252688
2015-11-11 01:36:17 +00:00
Jonathan Roelofs e961432ae7 Create install targets for scan-build and scan-view
http://reviews.llvm.org/D14403

llvm-svn: 252474
2015-11-09 16:12:56 +00:00
Richard Smith ea26041bbb Better link for Library Fundamentals TS.
llvm-svn: 252223
2015-11-05 22:21:52 +00:00
Richard Smith 3f22bf947d Fix incorrect status for P0012R1.
llvm-svn: 252216
2015-11-05 21:42:32 +00:00
Richard Smith 60fc149e43 Fix CSS style name.
llvm-svn: 252215
2015-11-05 21:42:07 +00:00
Richard Smith 894835f611 Update C++ status page to match motions from Kona.
llvm-svn: 252214
2015-11-05 21:41:06 +00:00
Ehsan Akhgari f16435d85e Add a link to the DXR project
DXR is a project developed at Mozilla that implements a code indexing
and browsing utility on top of libclang that has features such as
call graph querying.

llvm-svn: 251638
2015-10-29 17:20:17 +00:00
Devin Coughlin 97f78cfa28 [analyzer] Update analyzer website for release of checker-277.
llvm-svn: 251591
2015-10-29 01:23:57 +00:00
Anna Zaks ac98dbc33b [analyzer] Enhance FAQ with instructions on handing unused variables.
llvm-svn: 251448
2015-10-27 20:19:38 +00:00
Jordan Rose 76a74c5617 [analyzer] Update links to developer.apple.com.
The content at the new links is /also/ a little dated, but that's our
(Apple's) problem.

llvm-svn: 247999
2015-09-18 16:12:16 +00:00
Yury Gribov daace1bb6b Mention that libcxx is required to build Compiler-RT tests on OS X.
llvm-svn: 247696
2015-09-15 15:05:47 +00:00
Tanya Lattner 4a08e931b6 Update mailing list references to lists.llvm.org
llvm-svn: 244000
2015-08-05 03:55:23 +00:00
Davide Italiano 9e1006d785 Revert r243827.
Until I figure out what's the right way of updating this file.

llvm-svn: 243840
2015-08-01 18:25:03 +00:00
Davide Italiano 2dd004487d Convertibility of nullptr_t to bool is available in clang. Note it.
llvm-svn: 243827
2015-08-01 05:48:03 +00:00
Hans Wennborg 3f398b51fb Update cxx_dr_status.html after 3.7 branch
llvm-svn: 242244
2015-07-14 23:21:53 +00:00
Richard Smith 88fe69ce21 DR1909: Diagnose all invalid cases of a class member sharing its name with the class.
llvm-svn: 241425
2015-07-06 01:45:27 +00:00
Eric Christopher 2c4555ad1b Fix "the the" in comments/documentation/etc.
llvm-svn: 240110
2015-06-19 01:52:53 +00:00