diff options
author | Bjorn Pettersson <bjorn.a.pettersson@ericsson.com> | 2019-01-29 10:19:44 +0000 |
---|---|---|
committer | Bjorn Pettersson <bjorn.a.pettersson@ericsson.com> | 2019-01-29 10:19:44 +0000 |
commit | d014d576a9f87c5e952e325cb1c889c7998878d7 (patch) | |
tree | 29278cd8d18fefa71c7bcb3b9e871617a108f6a0 /llvm/lib/Target/WebAssembly/WebAssemblyFixFunctionBitcasts.cpp | |
parent | 2c3d49b7183679aaad59f4a45a4017a8b6c26532 (diff) | |
download | llvm-d014d576a9f87c5e952e325cb1c889c7998878d7.zip llvm-d014d576a9f87c5e952e325cb1c889c7998878d7.tar.gz llvm-d014d576a9f87c5e952e325cb1c889c7998878d7.tar.bz2 |
[IPCP] Don't crash due to arg count/type mismatch between caller/callee
Summary:
This patch avoids an assert in IPConstantPropagation when
there is a argument count/type mismatch between the caller and
the callee.
While this is actually UB on C-level (clang emits a warning),
the IR verifier seems to accept it. I'm not sure what other
frontends/languages might think about this, so simply bailing out
to avoid hitting an assert (in CallSiteBase<>::getArgOperand or
Value::doRAUW) seems like a simple solution.
The problem is exposed by the fact that AbstractCallSites will look
through a bitcast at the callee position of a call/invoke.
Reviewers: jdoerfert, reames, efriedma
Reviewed By: jdoerfert, efriedma
Subscribers: eli.friedman, efriedma, llvm-commits
Differential Revision: https://reviews.llvm.org/D57052
llvm-svn: 352469
Diffstat (limited to 'llvm/lib/Target/WebAssembly/WebAssemblyFixFunctionBitcasts.cpp')
0 files changed, 0 insertions, 0 deletions