summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorSaleem Abdulrasool <compnerd@compnerd.org>2014-07-14 16:28:13 +0000
committerSaleem Abdulrasool <compnerd@compnerd.org>2014-07-14 16:28:13 +0000
commitb51d464f1ea70eba6f04bdfe8b6d1103fe865cc8 (patch)
tree7f59411ea4c8a42ab143ed4f2123111b818199d9 /clang/lib
parent271ac58eb3f106f97b991b50f0aa4f977a9fb713 (diff)
downloadbcm5719-llvm-b51d464f1ea70eba6f04bdfe8b6d1103fe865cc8.tar.gz
bcm5719-llvm-b51d464f1ea70eba6f04bdfe8b6d1103fe865cc8.zip
X86: correct 64-bit atomics on 32-bit
We would emit a libcall for a 64-bit atomic on x86 after SVN r212119. This was due to the misuse of hasCmpxchg16 to indicate if cmpxchg8b was supported on a 32-bit target. They were added at different times and would result in the border condition being mishandled. This fixes the border case to emit the cmpxchg8b instruction for 64-bit atomic operations on x86 at the cost of restoring a long-standing bug in the codegen. We emit a cmpxchg8b on all x86 targets even where the CPU does not support this instruction (pre-Pentium CPUs). Although this bug should be fixed, this was present prior to SVN r212119 and this change, so this is not really introducing a regression. llvm-svn: 212956
Diffstat (limited to 'clang/lib')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud