llvm-project/clang
Bruno Cardoso Lopes 43f5085fa8 [Coroutines] Fix premature conversion of return object
Fix https://github.com/llvm/llvm-project/issues/56532

Effectively, this reverts behavior introduced in https://reviews.llvm.org/D117087,
which did two things:

1. Change delayed to early conversion of return object.
2. Introduced RVO possibilities because of early conversion.

This patches fixes (1) and removes (2). I already worked on a follow up for (2)
in a separated patch. I believe it's important to split these two because if the RVO
causes any problems we can explore reverting (2) while maintaining (1).

Notes on some testcase changes:
- `pr59221.cpp` changed to `-O1` so we can check that the front-end honors
  the value checked for. Sounds like `-O3` without RVO is more likely
  to work with LLVM optimizations...
- Comment out delete members `coroutine-no-move-ctor.cpp` since behavior
  now requires copies again.

Differential Revision: https://reviews.llvm.org/D145639
2023-03-21 21:42:25 -07:00
..
bindings Add clang_CXXMethod_isExplicit to libclang 2023-01-27 13:23:41 +01:00
cmake [Fuchsia] Add LLDB to CLANG_BOOTSTRAP_TARGETS. 2023-03-10 11:35:32 -08:00
docs No longer issue static lambda pedantic warning for pre-c++2b compat 2023-03-21 12:49:45 -04:00
examples [clang][pp] Handle attributes defined by plugin in __has_attribute 2023-03-13 16:47:51 +01:00
include [Coroutines] Fix premature conversion of return object 2023-03-21 21:42:25 -07:00
lib [Coroutines] Fix premature conversion of return object 2023-03-21 21:42:25 -07:00
runtime [NFC] Add split-file as runtime test dependency 2023-02-02 11:22:26 -08:00
test [Coroutines] Fix premature conversion of return object 2023-03-21 21:42:25 -07:00
tools Revert "Reland "[CMake] Bumps minimum version to 3.20.0."" 2023-03-18 20:32:43 +01:00
unittests Reland [clang][ASTImport] Add support for import of empty records 2023-03-21 17:26:36 +03:00
utils [clang] Use *{Set,Map}::contains (NFC) 2023-03-14 19:17:18 -07:00
www [docs] Update the status for coroutines 2023-03-21 10:34:33 +08:00
.clang-format
.clang-tidy
.gitignore
CMakeLists.txt Revert "Reland "[CMake] Bumps minimum version to 3.20.0."" 2023-03-18 20:32:43 +01:00
CodeOwners.rst [NFC]Fix github identification. 2023-01-20 08:40:38 -08:00
INSTALL.txt
LICENSE.TXT
ModuleInfo.txt
NOTES.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 forums:
  https://discourse.llvm.org/c/clang/

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