The atomic.cmp.swap promotion logic is wrong: it
authorDuncan Sands <baldrick@free.fr>
Wed, 16 Jul 2008 08:09:48 +0000 (08:09 +0000)
committerDuncan Sands <baldrick@free.fr>
Wed, 16 Jul 2008 08:09:48 +0000 (08:09 +0000)
commit17991c3234aeeb0475feb9d30e4bc37ffadd9338
tree543e027d2bab0eb46fdcc18e82d8fa1e20926dbe
parentbe8efa54b6253e0c3c641c007e791e9d1a12bb47
The atomic.cmp.swap promotion logic is wrong: it
simply does the atomic.cmp.swap on the larger type,
which means it blows away whatever is sitting in
the bytes just after the memory location, i.e.
causes a buffer overflow.  This really requires
target specific code, which is why LegalizeTypes
doesn't try to handle this case generically.  The
existing (wrong) code in LegalizeDAG will go away
automatically once the type legalization code is
removed from LegalizeDAG so I'm leaving it there
for the moment.  Meanwhile, don't test for this
feature.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53669 91177308-0d34-0410-b5e6-96231b3b80d8
test/CodeGen/PowerPC/atomic-1.ll