SuccessChanges

Summary

  1. [Attributor] Deduce memory behavior of functions and arguments (details)
  2. [llvm-lipo] Relax the check of the specified input file architecture (details)
  3. [WebAssembly] Add memory intrinsics handling to mayThrow() (details)
Commit 1097fab1cf41e786a659b1fe45a1494170be6952 by jdoerfert
[Attributor] Deduce memory behavior of functions and arguments
Deduce the memory behavior, aka "read-none", "read-only", or
"write-only", for functions and arguments.
Reviewers: sstefan1, uenoku
Subscribers: hiraditya, bollu, jfb, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67384
llvm-svn: 373965
The file was modifiedllvm/test/Transforms/FunctionAttrs/liveness.ll (diff)
The file was modifiedllvm/test/Transforms/FunctionAttrs/internal-noalias.ll (diff)
The file was modifiedllvm/test/Transforms/FunctionAttrs/nofree-attributor.ll (diff)
The file was modifiedllvm/test/Transforms/FunctionAttrs/nonnull.ll (diff)
The file was modifiedllvm/test/Transforms/FunctionAttrs/align.ll (diff)
The file was modifiedllvm/test/Transforms/FunctionAttrs/nosync.ll (diff)
The file was modifiedllvm/test/Transforms/FunctionAttrs/noalias_returned.ll (diff)
The file was modifiedllvm/test/Transforms/FunctionAttrs/arg_nocapture.ll (diff)
The file was modifiedllvm/test/Transforms/FunctionAttrs/read_write_returned_arguments_scc.ll (diff)
The file was modifiedllvm/test/Transforms/FunctionAttrs/arg_returned.ll (diff)
The file was modifiedllvm/test/Transforms/FunctionAttrs/dereferenceable.ll (diff)
The file was modifiedllvm/include/llvm/Transforms/IPO/Attributor.h (diff)
The file was modifiedllvm/test/Transforms/FunctionAttrs/nocapture.ll (diff)
The file was modifiedllvm/test/Transforms/FunctionAttrs/norecurse.ll (diff)
The file was modifiedllvm/lib/Transforms/IPO/Attributor.cpp (diff)
The file was modifiedllvm/test/Transforms/FunctionAttrs/readattrs.ll (diff)
The file was modifiedllvm/test/Transforms/FunctionAttrs/willreturn.ll (diff)
Commit f5d700ac05cb3b3fdb22619186ce9f0376dcca10 by shal1t712
[llvm-lipo] Relax the check of the specified input file architecture
cctools lipo only compares the cputypes when it verifies that the
specified (via -arch) input file and the architecture match. This diff
adjusts the behavior of llvm-lipo accordingly.
Differential revision: https://reviews.llvm.org/D68319
Test plan: make check-all
llvm-svn: 373966
The file was modifiedllvm/tools/llvm-lipo/llvm-lipo.cpp (diff)
Commit 58af5be28dafedafba3fb20ba35ac0ae4f2c570a by aheejin
[WebAssembly] Add memory intrinsics handling to mayThrow()
Summary: Previously, `WebAssembly::mayThrow()` assumed all inputs are
global addresses. But when intrinsics, such as `memcpy`, `memmove`, or
`memset` are lowered to external symbols in instruction selection and
later emitted as library calls. And these functions don't throw.
This patch adds handling to those memory intrinsics to `mayThrow`
function. But while most of libcalls don't throw, we can't guarantee all
of them don't throw, so currently we conservatively return true for all
other external symbols.
I think a better way to solve this problem is to embed 'nounwind' info
in `TargetLowering::CallLoweringInfo`, so that we can access the info
from the backend. This will also enable transferring 'nounwind'
properties of LLVM IR instructions. Currently we don't transfer that
info and we can only access properties of callee functions, if the
callees are within the module. Other targets don't need this info in the
backend because they do all the processing before isel, but it will help
us because that info will reduce code size increase in fixing unwind
destination mismatches in CFGStackify.
But for now we return false for these memory intrinsics and true for all
other libcalls conservatively.
Reviewers: dschuff
Subscribers: sbc100, jgravelle-google, hiraditya, sunfish, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D68553
llvm-svn: 373967
The file was modifiedllvm/test/CodeGen/WebAssembly/cfg-stackify-eh.ll (diff)
The file was modifiedllvm/lib/Target/WebAssembly/WebAssemblyUtilities.cpp (diff)