[PATCH] D18241: [mips] Fix ATOMIC_CMP_SWAP_WITH_SUCCESS
    Simon Dardis via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Thu Mar 17 06:40:09 PDT 2016
    
    
  
sdardis created this revision.
sdardis added a reviewer: vkalintiris.
sdardis added subscribers: llvm-commits, dsanders.
emitAtomic*PartWord unconditionally sign extend their results causing
failures with __c11_atomic_compare_exchange_strong & co due to an
unsigned value being compared to a sign extended value.
    
Fix this by using a custom lowering for ATOMIC_CMP_SWAP_WITH_SUCCESS, so that
the cmp operand of the setCC is sign extended as well. Additionally, when
legalizing ATOMIC_CMP_SWAP, don't assume it is a ATOMIC_CMP_SWAP_WITH_SUCCESS.
http://reviews.llvm.org/D18241
Files:
  lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
  lib/Target/Mips/MipsISelLowering.cpp
  lib/Target/Mips/MipsISelLowering.h
  test/CodeGen/Mips/atomic.ll
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D18241.50926.patch
Type: text/x-patch
Size: 6982 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160317/e40808fb/attachment.bin>
    
    
More information about the llvm-commits
mailing list