SuccessChanges

Summary

  1. [CodeGen] Enable tail call position check for speculatable functions (details)
  2. [analyzer] Add support for ObjCIndirectCopyRestoreExpr. (details)
  3. [analyzer] ObjCAutoreleaseWriteChecker: Support explicit autoreleasepools. (details)
  4. [libc++] Support move construction and assignment in <thread> in C++03 (details)
  5. [MLIR] Shape to standard dialect lowering (details)
Commit 3abe7aca455b9a8b9b0f1e1efdaffb50193516dd by wei.huang
[CodeGen] Enable tail call position check for speculatable functions

In the function "Analysis.cpp:isInTailCallPosition", it only checks whether
a call is in a tail call position if the call has side effects, access memory
or it is not safe to speculative execute. Therefore, a speculatable function
will not go through tail call position check and improperly tail called when
it is not in a tail-call position. This patch enables tail call position check
for speculatable functions.

Differential Revision: https://reviews.llvm.org/D80661
The file was addedllvm/test/CodeGen/PowerPC/tailcall-speculatable-callee.ll
The file was modifiedllvm/lib/CodeGen/Analysis.cpp (diff)
Commit e94192198f8a949c7880620b06e9ef85d87ad4b3 by Artem Dergachev
[analyzer] Add support for ObjCIndirectCopyRestoreExpr.

Idiomatic objc using ARC will generate this expression regularly due to
NSError out-param passing.  Providing an implementation for this
expression allows the analyzer to explore many more codepaths in ARC
projects.

The current implementation is not perfect but the differences are hopefully
subtle enough to not cause much problems.

rdar://63918914

Differential Revision: https://reviews.llvm.org/D81071
The file was modifiedclang/lib/StaticAnalyzer/Core/ExprEngine.cpp (diff)
The file was addedclang/test/Analysis/objc-indirect-copy-restore.m
Commit 7113271528a4c6efc8b57f25ead28f65b5e48757 by Artem Dergachev
[analyzer] ObjCAutoreleaseWriteChecker: Support explicit autoreleasepools.

The checker currently supports only a whitelist of block-enumeration
methods which are known to internally clear an autorelease pool.
Extend this checker to detect writes within the scope of explicit
@autoreleasepool statements.

rdar://25301111

Differential Revision: https://reviews.llvm.org/D81072
The file was modifiedclang/test/Analysis/autoreleasewritechecker_test.m (diff)
The file was modifiedclang/lib/StaticAnalyzer/Checkers/ObjCAutoreleaseWriteChecker.cpp (diff)
Commit 62cfa3a0b5d20e6d0d5abe95412ab271d934083c by Louis Dionne
[libc++] Support move construction and assignment in <thread> in C++03

Libc++ provides support for <thread> in C++03 as an extension. Furthermore,
it does not support any compiler that doesn't have rvalue references. It
is hence possible to provide the move constructor and move assignment
operator in C++03.
The file was modifiedlibcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.assign/move.pass.cpp (diff)
The file was modifiedlibcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.constr/move.pass.cpp (diff)
The file was modifiedlibcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.assign/move2.pass.cpp (diff)
The file was modifiedlibcxx/include/thread (diff)
Commit 3713314bfae3dc9a793c152e8a698a2ca1444f6c by frgossen
[MLIR] Shape to standard dialect lowering

Add a new pass to lower operations from the `shape` to the `std` dialect.
The conversion applies only to the `size_to_index` and `index_to_size`
operations and affected types.
Other patterns will be added as needed.

Differential Revision: https://reviews.llvm.org/D81091
The file was modifiedmlir/include/mlir/InitAllPasses.h (diff)
The file was modifiedmlir/lib/Conversion/CMakeLists.txt (diff)
The file was addedmlir/lib/Conversion/ShapeToStandard/ShapeToStandard.cpp
The file was modifiedmlir/include/mlir/Conversion/Passes.td (diff)
The file was addedmlir/test/Conversion/ShapeToStandard/shape-to-standard.mlir
The file was addedmlir/lib/Conversion/ShapeToStandard/CMakeLists.txt
The file was addedmlir/include/mlir/Conversion/ShapeToStandard/ShapeToStandard.h