diff options
author | Saleem Abdulrasool <compnerd@compnerd.org> | 2014-07-14 16:28:13 +0000 |
---|---|---|
committer | Saleem Abdulrasool <compnerd@compnerd.org> | 2014-07-14 16:28:13 +0000 |
commit | b51d464f1ea70eba6f04bdfe8b6d1103fe865cc8 (patch) | |
tree | 7f59411ea4c8a42ab143ed4f2123111b818199d9 /clang/lib/Parse/ParseDecl.cpp | |
parent | 271ac58eb3f106f97b991b50f0aa4f977a9fb713 (diff) | |
download | bcm5719-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/Parse/ParseDecl.cpp')
0 files changed, 0 insertions, 0 deletions