SuccessChanges

Summary

  1. [AArch64][GlobalISel] Add support for sibcalling callees with varargs This adds support for tail calling callees with varargs, equivalent to how it is done in AArch64ISelLowering. This only works for sibling calls, and does not add the necessary support for musttail with varargs. (See r345641 for equivalent ISelLowering support.) This should be implemented when we stop falling back on musttail. Update call-translator-tail-call.ll to show that we can now tail call varargs. Differential Revision: https://reviews.llvm.org/D67518
  2. Recommit r370502: Make `vector` unconditionally move elements when exceptions are disabled. The patch was reverted due to some confusion about non-movable types. ie types that explicitly delete their move constructors. However, such types do not meet the requirement for `MoveConstructible`, which is required by `std::vector`: Summary: `std::vector<T>` is free choose between using copy or move operations when it needs to resize. The standard only candidates that the correct exception safety guarantees are provided. When exceptions are disabled these guarantees are trivially satisfied. Meaning vector is free to optimize it's implementation by moving instead of copying. This patch makes `std::vector` unconditionally move elements when exceptions are disabled. This optimization is conforming according to the current standard wording. There are concerns that moving in `-fno-noexceptions`mode will be a surprise to users. For example, a user may be surprised to find their code is slower with exceptions enabled than it is disabled. I'm sympathetic to this surprised, but I don't think it should block this optimization. Reviewers: mclow.lists, ldionne, rsmith Reviewed By: ldionne Subscribers: zoecarver, christof, dexonsmith, libcxx-commits Tags: #libc Differential Revision: https://reviews.llvm.org/D62228
  3. [yaml2obj/ObjectYAML] - Cleanup the error reporting API, add custom errors handlers. This is a continuation of the YAML library error reporting refactoring/improvement and the idea by itself was mentioned in the following thread: https://reviews.llvm.org/D67182?id=218714#inline-603404 This performs a cleanup of all object emitters in the library. It allows using the custom one provided by the caller. One of the nice things is that each tool can now print its tool name, e.g: "yaml2obj: error: <text>" Also, the code became a bit simpler. Differential revision: https://reviews.llvm.org/D67445
  4. Only initialize the streams cout/wcout/cerr/wcerr etc once, rather than any time Init::Init is called. Fixes PR#43300
  5. Fix build in C++20
Revision 371868 by paquette:
[AArch64][GlobalISel] Add support for sibcalling callees with varargs

This adds support for tail calling callees with varargs, equivalent to how it
is done in AArch64ISelLowering.

This only works for sibling calls, and does not add the necessary support for
musttail with varargs. (See r345641 for equivalent ISelLowering support.) This
should be implemented when we stop falling back on musttail.

Update call-translator-tail-call.ll to show that we can now tail call varargs.

Differential Revision: https://reviews.llvm.org/D67518
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64CallLowering.cpp (diff)llvm.src/lib/Target/AArch64/AArch64CallLowering.cpp
The file was modified/llvm/trunk/test/CodeGen/AArch64/GlobalISel/call-translator-tail-call.ll (diff)llvm.src/test/CodeGen/AArch64/GlobalISel/call-translator-tail-call.ll
Revision 371867 by ericwf:
Recommit r370502: Make `vector` unconditionally move elements when
exceptions are disabled.

The patch was reverted due to some confusion about non-movable types. ie
types
that explicitly delete their move constructors. However, such types do
not meet
the requirement for `MoveConstructible`, which is required by
`std::vector`:

Summary:

`std::vector<T>` is free choose between using copy or move operations
when it
needs to resize. The standard only candidates that the correct exception
safety
guarantees are provided. When exceptions are disabled these guarantees
are
trivially satisfied. Meaning vector is free to optimize it's
implementation by
moving instead of copying.

This patch makes `std::vector` unconditionally move elements when
exceptions are
disabled. This optimization is conforming according to the current
standard wording.

There are concerns that moving in `-fno-noexceptions`mode will be a
surprise to
users. For example, a user may be surprised to find their code is slower
with
exceptions enabled than it is disabled. I'm sympathetic to this
surprised, but
I don't think it should block this optimization.

Reviewers: mclow.lists, ldionne, rsmith
Reviewed By: ldionne
Subscribers: zoecarver, christof, dexonsmith, libcxx-commits
Tags: #libc
Differential Revision: https://reviews.llvm.org/D62228
Change TypePath in RepositoryPath in Workspace
The file was modified/libcxx/trunk/include/memory (diff)libcxx.src/include/memory
The file was modified/libcxx/trunk/include/vector (diff)libcxx.src/include/vector
The file was added/libcxx/trunk/test/libcxx/containers/sequences/vector/exception_safety_exceptions_disabled.sh.cpplibcxx.src/test/libcxx/containers/sequences/vector/exception_safety_exceptions_disabled.sh.cpp
The file was removed/libcxx/trunk/test/std/containers/sequences/vector/vector.modifiers/resize.copy_only.pass.sh.cpplibcxx.src/test/std/containers/sequences/vector/vector.modifiers/resize.copy_only.pass.sh.cpp
The file was added/libcxx/trunk/test/std/containers/sequences/vector/vector.modifiers/resize_not_move_insertable.fail.cpplibcxx.src/test/std/containers/sequences/vector/vector.modifiers/resize_not_move_insertable.fail.cpp
Revision 371865 by grimar:
[yaml2obj/ObjectYAML] - Cleanup the error reporting API, add custom errors handlers.

This is a continuation of the YAML library error reporting
refactoring/improvement and the idea by itself was mentioned
in the following thread:
https://reviews.llvm.org/D67182?id=218714#inline-603404

This performs a cleanup of all object emitters in the library.
It allows using the custom one provided by the caller.

One of the nice things is that each tool can now print its tool name,
e.g: "yaml2obj: error: <text>"

Also, the code became a bit simpler.

Differential revision: https://reviews.llvm.org/D67445
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/ObjectYAML/yaml2obj.h (diff)llvm.src/include/llvm/ObjectYAML/yaml2obj.h
The file was modified/llvm/trunk/lib/ObjectYAML/COFFEmitter.cpp (diff)llvm.src/lib/ObjectYAML/COFFEmitter.cpp
The file was modified/llvm/trunk/lib/ObjectYAML/ELFEmitter.cpp (diff)llvm.src/lib/ObjectYAML/ELFEmitter.cpp
The file was modified/llvm/trunk/lib/ObjectYAML/MachOEmitter.cpp (diff)llvm.src/lib/ObjectYAML/MachOEmitter.cpp
The file was modified/llvm/trunk/lib/ObjectYAML/MinidumpEmitter.cpp (diff)llvm.src/lib/ObjectYAML/MinidumpEmitter.cpp
The file was modified/llvm/trunk/lib/ObjectYAML/WasmEmitter.cpp (diff)llvm.src/lib/ObjectYAML/WasmEmitter.cpp
The file was modified/llvm/trunk/lib/ObjectYAML/yaml2obj.cpp (diff)llvm.src/lib/ObjectYAML/yaml2obj.cpp
The file was modified/llvm/trunk/test/ObjectYAML/wasm/invalid_section_order.yaml (diff)llvm.src/test/ObjectYAML/wasm/invalid_section_order.yaml
The file was modified/llvm/trunk/test/tools/yaml2obj/coff-invalid-alignment.test (diff)llvm.src/test/tools/yaml2obj/coff-invalid-alignment.test
The file was modified/llvm/trunk/test/tools/yaml2obj/dynsymtab-implicit-sections-size-content.yaml (diff)llvm.src/test/tools/yaml2obj/dynsymtab-implicit-sections-size-content.yaml
The file was modified/llvm/trunk/test/tools/yaml2obj/empty-or-invalid-doc.yaml (diff)llvm.src/test/tools/yaml2obj/empty-or-invalid-doc.yaml
The file was modified/llvm/trunk/test/tools/yaml2obj/invalid-docnum.test (diff)llvm.src/test/tools/yaml2obj/invalid-docnum.test
The file was modified/llvm/trunk/test/tools/yaml2obj/invalid_output_file.test (diff)llvm.src/test/tools/yaml2obj/invalid_output_file.test
The file was modified/llvm/trunk/test/tools/yaml2obj/missing_document_tag.yaml (diff)llvm.src/test/tools/yaml2obj/missing_document_tag.yaml
The file was modified/llvm/trunk/test/tools/yaml2obj/multi-doc.test (diff)llvm.src/test/tools/yaml2obj/multi-doc.test
The file was modified/llvm/trunk/test/tools/yaml2obj/reloc-sec-info.yaml (diff)llvm.src/test/tools/yaml2obj/reloc-sec-info.yaml
The file was modified/llvm/trunk/test/tools/yaml2obj/section-size-content.yaml (diff)llvm.src/test/tools/yaml2obj/section-size-content.yaml
The file was modified/llvm/trunk/tools/llvm-ifs/llvm-ifs.cpp (diff)llvm.src/tools/llvm-ifs/llvm-ifs.cpp
The file was modified/llvm/trunk/tools/yaml2obj/yaml2obj.cpp (diff)llvm.src/tools/yaml2obj/yaml2obj.cpp
The file was modified/llvm/trunk/unittests/ObjectYAML/MinidumpYAMLTest.cpp (diff)llvm.src/unittests/ObjectYAML/MinidumpYAMLTest.cpp
The file was modified/llvm/trunk/unittests/ObjectYAML/YAML2ObjTest.cpp (diff)llvm.src/unittests/ObjectYAML/YAML2ObjTest.cpp
Revision 371864 by marshall:
Only initialize the streams cout/wcout/cerr/wcerr etc once, rather than any time Init::Init is called. Fixes PR#43300
Change TypePath in RepositoryPath in Workspace
The file was modified/libcxx/trunk/src/iostream.cpp (diff)libcxx.src/src/iostream.cpp
The file was added/libcxx/trunk/test/std/input.output/iostreams.base/ios.base/ios.types/ios_Init/ios_Init.multiple.pass.cpplibcxx.src/test/std/input.output/iostreams.base/ios.base/ios.types/ios_Init/ios_Init.multiple.pass.cpp
Revision 371863 by ericwf:
Fix build in C++20
Change TypePath in RepositoryPath in Workspace
The file was modified/libcxx/trunk/src/experimental/memory_resource.cpp (diff)libcxx.src/src/experimental/memory_resource.cpp