llvm-project/clang
Erich Keane 6b104ea4b4 Implement Lambda Conversion Operators for All CCs for MSVC.
As described here:
https://devblogs.microsoft.com/oldnewthing/20150220-00/?p=44623

In order to allow Lambdas to be used with traditional Win32 APIs, they
emit a conversion function for (what Raymond Chen claims is all) a
number of the calling conventions.  Through experimentation, we
discovered that the list isn't quite 'all'.

This patch implements this by taking the list of conversions that MSVC
emits (across 'all' architectures, I don't see any CCs on ARM), then
emits them if they are supported by the current target.

However, we also add 3 other options (which may be duplicates):
free-function, member-function, and operator() calling conventions.  We
do this because we have an extension where we generate both free and
member for these cases so th at people specifying a calling convention
on the lambda will have the expected behavior when specifying one of
those two.

MSVC doesn't seem to permit specifying calling-convention on lambdas,
but we do, so we need to make sure those are emitted as well. We do this
so that clang-only conventions are supported if the user specifies them.

Differential Revision: https://reviews.llvm.org/D90634
2020-11-05 07:25:44 -08:00
..
INPUTS
bindings [NFC] Don't run python binding tests with sanitizers 2020-10-29 23:48:08 -07:00
cmake Added remotely ran compiler-rt tests. 2020-10-30 00:11:16 +04:00
docs [ASTMatchers] Made isExpandedFromMacro Polymorphic 2020-11-03 14:36:51 +00:00
examples Correct examples after d3205bbca3 2020-10-27 09:49:33 +01:00
include [clang] Add an option for hiding line numbers in diagnostics 2020-11-05 16:10:18 +01:00
lib Implement Lambda Conversion Operators for All CCs for MSVC. 2020-11-05 07:25:44 -08:00
runtime [CMake][compiler-rt][libunwind] Compile assembly files as ASM not C, unify workarounds 2020-08-27 15:40:15 +03:00
test Implement Lambda Conversion Operators for All CCs for MSVC. 2020-11-05 07:25:44 -08:00
tools [HIP] Use argv[0] as the default choice for the Executable name. 2020-11-03 10:31:39 -08:00
unittests [clang] Add an option for hiding line numbers in diagnostics 2020-11-05 16:10:18 +01:00
utils [hmaptool] Fix `NameError: global name 'num_buckets' is not defined` in `action_dump`. 2020-10-19 16:27:13 -07:00
www PR47954 / DR2126: permit temporary objects that are lifetime-extended by 2020-10-23 14:29:18 -07:00
.clang-format
.clang-tidy
.gitignore
CMakeLists.txt [clang] Limit scope of CLANG_VENDOR definition 2020-11-02 09:04:43 -08:00
CODE_OWNERS.TXT
INSTALL.txt
LICENSE.TXT
ModuleInfo.txt
NOTES.txt
README.txt

README.txt

//===----------------------------------------------------------------------===//
// C Language Family Front-end
//===----------------------------------------------------------------------===//

Welcome to Clang.  This is a compiler front-end for the C family of languages
(C, C++, Objective-C, and Objective-C++) which is built as part of the LLVM
compiler infrastructure project.

Unlike many other compiler frontends, Clang is useful for a number of things
beyond just compiling code: we intend for Clang to be host to a number of
different source-level tools.  One example of this is the Clang Static Analyzer.

If you're interested in more (including how to build Clang) it is best to read
the relevant web sites.  Here are some pointers:

Information on Clang:             http://clang.llvm.org/
Building and using Clang:         http://clang.llvm.org/get_started.html
Clang Static Analyzer:            http://clang-analyzer.llvm.org/
Information on the LLVM project:  http://llvm.org/

If you have questions or comments about Clang, a great place to discuss them is
on the Clang development mailing list:
  http://lists.llvm.org/mailman/listinfo/cfe-dev

If you find a bug in Clang, please file it in the LLVM bug tracker:
  http://llvm.org/bugs/