diff options
author | David Chisnall <csdavec@swan.ac.uk> | 2013-03-03 16:02:42 +0000 |
---|---|---|
committer | David Chisnall <csdavec@swan.ac.uk> | 2013-03-03 16:02:42 +0000 |
commit | 72c1dba494b02960284bc6618c1b640c950c3785 (patch) | |
tree | 7871ecd146763704e3207ccd2abcae724f0d7bfe /lib/Format/Format.cpp | |
parent | 5b9f5cc7c4310aec110f315df6fc6d6366b24b08 (diff) |
Improve C11 atomics support:
- Generate atomicrmw operations in most of the cases when it's sensible to do
so.
- Don't crash in several common cases (and hopefully don't crash in more of
them).
- Add some better tests.
We now generate significantly better code for things like:
_Atomic(int) x;
...
x++;
On MIPS, this now generates a 4-instruction ll/sc loop, where previously it
generated about 30 instructions in two nested loops. On x86-64, we generate a
single lock incl, instead of a lock cmpxchgl loop (one instruction instead of
ten).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176420 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Format/Format.cpp')
0 files changed, 0 insertions, 0 deletions