aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/LiveDebugVariables.cpp
diff options
context:
space:
mode:
authorLogan Chien <tzuhsiang.chien@gmail.com>2014-07-21 17:33:44 +0000
committerLogan Chien <tzuhsiang.chien@gmail.com>2014-07-21 17:33:44 +0000
commit63bee2a2bb127ca5622dd84b88c77de87de42d3e (patch)
treeb98c8ab17bcaa6de38f30519de49082bcae24ef1 /llvm/lib/CodeGen/LiveDebugVariables.cpp
parent5780657be8a3c4dc57606e0bdbd386edea65f788 (diff)
downloadllvm-63bee2a2bb127ca5622dd84b88c77de87de42d3e.zip
llvm-63bee2a2bb127ca5622dd84b88c77de87de42d3e.tar.gz
llvm-63bee2a2bb127ca5622dd84b88c77de87de42d3e.tar.bz2
Replace the result usages while legalizing cmpxchg.
We should update the usages to all of the results; otherwise, we might get assertion failure or SEGV during the type legalization of ATOMIC_CMP_SWAP_WITH_SUCCESS with two or more illegal types. For example, in the following sequence, both i8 and i1 might be illegal in some target, e.g. armv5, mipsel, mips64el, %0 = cmpxchg i8* %ptr, i8 %desire, i8 %new monotonic monotonic %1 = extractvalue { i8, i1 } %0, 1 Since both i8 and i1 should be legalized, the corresponding ATOMIC_CMP_SWAP_WITH_SUCCESS dag will be checked/replaced/updated twice. If we don't update the usage to *ALL* of the results in the first round, the DAG for extractvalue might be processed earlier. The GetPromotedInteger() will result in assertion failure, because its operand (i.e. the success bit of cmpxchg) is not promoted beforehand. llvm-svn: 213569
Diffstat (limited to 'llvm/lib/CodeGen/LiveDebugVariables.cpp')
0 files changed, 0 insertions, 0 deletions