Commit
a78671ef54e53196dc7b5ee9c91771c8e146d1d1
by kuterdinel[FIX][Attributor] Fix broken build due to missing virtual deconstructors.
The lack some virtual deconstructors where causing some builds bots to fail. This patch fixes that.
Problematic commit: https://reviews.llvm.org/rGeaf1b6810ce0f40008b2b1d902750eafa3e198d3
Build bot: https://lab.llvm.org/buildbot/#/builders/18/builds/1741
|
 | llvm/include/llvm/Transforms/IPO/Attributor.h |
Commit
05d0f1a8ea012a6b7b8ea65893ec4121106444b5
by Duncan P. N. Exon SmithFrontend: Respect -fno-temp-file when creating a PCH
When creating a PCH file the use of a temp file will be dictated by the presence or absence of the -fno-temp-file flag. Creating a module file will always use a temp file via the new ForceUseTemporary flag.
This fixes bug 50033.
|
 | clang/lib/Frontend/FrontendActions.cpp |
 | clang/include/clang/Frontend/CompilerInstance.h |
 | clang/lib/Frontend/CompilerInstance.cpp |
Commit
e7bf4510564a7f4eb924d2e79db0ab7926968583
by jim[M68k][NFC] Fix indentation in M68kInstrArithmetic.td
Merely fix indentation
Reviewed By: myhsu
Differential Revision: https://reviews.llvm.org/D104434
|
 | llvm/lib/Target/M68k/M68kInstrArithmetic.td |
Commit
3522167efd80e2fef42a865cdf7481d60d062603
by lxfind[Coroutine] Properly deal with byval and noalias parameters
This patch is to address https://bugs.llvm.org/show_bug.cgi?id=48857. Previous attempts can be found in D104007 and D101980. A lot of discussions can be found in those two patches. To summarize the bug: When Clang emits IR for coroutines, the first thing it does is to make a copy of every argument to the local stack, so that uses of the arguments in the function will all refer to the local copies instead of the arguments directly. However, in some cases we find that arguments are still directly used: When Clang emits IR for a function that has pass-by-value arguments, sometimes it emits an argument with byval attribute. A byval attribute is considered to be local to the function (just like alloca) and hence it can be easily determined that it does not alias other values. If in the IR there exists a memcpy from a byval argument to a local alloca, and then from that local alloca to another alloca, MemCpyOpt will optimize out the first memcpy because byval argument's content will not change. This causes issues because after a coroutine suspension, the byval argument may die outside of the function, and latter uses will lead to memory use-after-free. This is only a problem for arguments with either byval attribute or noalias attribute, because only these two kinds are considered local. Arguments without these two attributes will be considered to alias coro_suspend and hence we won't have this problem. So we need to be able to deal with these two attributes in coroutines properly. For noalias arguments, since coro_suspend may potentially change the value of any argument outside of the function, we simply shouldn't mark any argument in a coroutiune as noalias. This can be taken care of in CoroEarly pass. For byval arguments, if such an argument needs to live across suspensions, we will have to copy their value content to the frame, not just the pointer.
Differential Revision: https://reviews.llvm.org/D104184
|
 | llvm/lib/Transforms/Coroutines/CoroEarly.cpp |
 | llvm/test/Transforms/Coroutines/coro-byval-param.ll |
 | llvm/lib/Transforms/Coroutines/CoroFrame.cpp |
 | llvm/test/Transforms/Coroutines/coro-noalias-param.ll |
Commit
6aaf4fa2885600b0e31042071ad06f78218ab0f2
by richardBring our handling of -Wframe-larger-than more in line with GCC.
Support -Wno-frame-larger-than (with no =) and make it properly interoperate with -Wframe-larger-than. Reject -Wframe-larger-than with no argument.
We continue to support Clang's old spelling, -Wframe-larger-than=, for compatibility with existing users of that facility.
In passing, stop the driver from accepting and ignoring -fwarn-stack-size and make it a cc1-only flag as intended.
|
 | clang/include/clang/Basic/DiagnosticFrontendKinds.td |
 | clang/test/Frontend/backend-diagnostic.c |
 | clang/test/Misc/backend-stack-frame-diagnostics.cpp |
 | clang/include/clang/Driver/Options.td |
 | clang/test/Driver/Wframe-larger-than.c |
 | clang/lib/Driver/ToolChains/Clang.cpp |
 | clang/include/clang/Basic/DiagnosticGroups.td |