SuccessChanges

Summary

  1. RISCVMatInt.h - remove unnecessary includes. NFCI. (details)
  2. CFGUpdate.h - remove unused APInt include. NFCI. (details)
  3. Revert "[ARM] Follow AACPS standard for volatile bit-fields access width" (details)
  4. Add detailed reference for the SearchableTables backend. (details)
  5. [X86] SSE4_A should only imply SSE3 not SSSE3 in the frontend. (details)
  6. [Coroutine] Make dealing with alloca spills more robust (details)
Commit 0dacf3b5ac3a8c4079b781c788f758709345883f by llvm-dev
RISCVMatInt.h - remove unnecessary includes. NFCI.

Add APInt forward declaration and move include to RISCVMatInt.cpp
The file was modifiedllvm/lib/Target/RISCV/Utils/RISCVMatInt.h (diff)
The file was modifiedllvm/lib/Target/RISCV/Utils/RISCVMatInt.cpp (diff)
Commit cd5c5c484830e65854cc12cb64a0feb0a9060734 by llvm-dev
CFGUpdate.h - remove unused APInt include. NFCI.
The file was modifiedllvm/include/llvm/Support/CFGUpdate.h (diff)
Commit d6f3f612318f31c46b95dd62eee45a75397ccfcf by ties.stuij
Revert "[ARM] Follow AACPS standard for volatile bit-fields access width"

This reverts commit 514df1b2bb1ecd1a33327001ea38a347fd2d0380.

Some of the buildbots got llvm-lit errors on CodeGen/volatile.c
The file was modifiedclang/lib/Frontend/CompilerInvocation.cpp (diff)
The file was modifiedclang/lib/CodeGen/CGRecordLayoutBuilder.cpp (diff)
The file was modifiedclang/include/clang/Driver/Options.td (diff)
The file was modifiedclang/lib/CodeGen/CGRecordLayout.h (diff)
The file was modifiedclang/test/CodeGen/aapcs-bitfield.c (diff)
The file was modifiedclang/lib/CodeGen/CGExpr.cpp (diff)
The file was modifiedclang/test/CodeGen/bitfield-2.c (diff)
The file was modifiedclang/include/clang/Basic/CodeGenOptions.def (diff)
Commit 1f870bd9284ad55dff96ab6f99afd92fd5f294be by paul
Add detailed reference for the SearchableTables backend.
The file was modifiedllvm/docs/TableGen/BackEnds.rst (diff)
Commit e6bb4c8e7b3e27f214c9665763a2dd09aa96a5ac by craig.topper
[X86] SSE4_A should only imply SSE3 not SSSE3 in the frontend.

SSE4_1 and SSE4_2 due imply SSSE3. So I guess I got confused when
switching the code to being table based in D83273.

Fixes PR47464
The file was modifiedclang/test/Preprocessor/predefined-arch-macros.c (diff)
The file was modifiedllvm/lib/Support/X86TargetParser.cpp (diff)
Commit 59a467ee4faeee5b569960e53a76a0311d050d18 by xun
[Coroutine] Make dealing with alloca spills more robust

D66230 attempted to fix a problem where when there are allocas used before CoroBegin.
It keeps allocas and their uses stay in put if there are no escapse/changes to the data before CoroBegin.
Unfortunately that's incorrect.
Consider this code:

%var = alloca i32
%1 = getelementptr .. %var; stays put
%f = call i8* @llvm.coro.begin
store ... %1
After this fix, %1 will now stay put, however if a store happens after coro.begin and hence modifies the content, this change will not be reflected in the coroutine frame (and will eventually be DCEed).
To generalize the problem, if any alias ptr is created before coro.begin for an Alloca and that alias ptr is latter written into after coro.begin, it will lead to incorrect behavior.

There are also a few other minor issues, such as incorrect dominate condition check in the ptr visitor, unhandled memory intrinsics and etc.
Ths patch attempts to fix some of these issue, and make it more robust to deal with aliases.

While visiting through the alloca pointer, we also keep track of all aliases created that will be used after CoroBegin. We track the offset of each alias, and then reacreate these aliases after CoroBegin using these offset.
It's worth noting that this is not perfect and there will still be cases we cannot handle. I think it's impractical to handle all cases given the current design.
This patch makes it more robust and should be a pure win.
In the meantime, we need to think about what how to completely elimiante these issues, likely through the route as @rjmccall mentioned in D66230.

Differential Revision: https://reviews.llvm.org/D86859
The file was modifiedllvm/test/Transforms/Coroutines/coro-param-copy.ll (diff)
The file was modifiedllvm/lib/Transforms/Coroutines/CoroFrame.cpp (diff)