Reverting r171325 & r172363. This was causing a mis-compile on the self-hosted LTO...
authorBill Wendling <isanbard@gmail.com>
Thu, 17 Jan 2013 21:28:46 +0000 (21:28 +0000)
committerBill Wendling <isanbard@gmail.com>
Thu, 17 Jan 2013 21:28:46 +0000 (21:28 +0000)
commit167ede898a6105e05fcd9d2ae5679fbf1744018f
tree254dc04cdef9c9bb1e019ed1a9df88f5e5c7a402
parentcb4830cc99e790e0a76e1a9b1414e4b7e6e06134
Reverting r171325 & r172363. This was causing a mis-compile on the self-hosted LTO build bots.

Okay, here's how to reproduce the problem:

1) Build a Release (or Release+Asserts) version of clang in the normal way.

2) Using the clang & clang++ binaries from (1), build a Release (or
   Release+Asserts) version of the same sources, but this time enable LTO ---
   specify the `-flto' flag on the command line.

3) Run the ARC migrator tests:

    $ arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c++ ./src/tools/clang/test/ARCMT/cxx-rewrite.mm

You'll see that the output isn't correct (the whitespace is off).

The mis-compile is in the function `RewriteBuffer::RemoveText' in the
clang/lib/Rewrite/Core/Rewriter.cpp file. When that function and RewriteRope.cpp
are compiled with LTO and the `arcmt-test' executable is regenerated, you'll see
the error. When those files are not LTO'ed, then the output of the `arcmt-test'
is fine.

It is *really* hard to get a testcase out of this. I'll file a PR with what I
have currently.

--- Reverse-merging r172363 into '.':
U    include/llvm/Analysis/MemoryBuiltins.h
U    lib/Analysis/MemoryBuiltins.cpp

--- Reverse-merging r171325 into '.':
U    test/Transforms/InstCombine/objsize.ll
G    include/llvm/Analysis/MemoryBuiltins.h
G    lib/Analysis/MemoryBuiltins.cpp

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172756 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Analysis/MemoryBuiltins.h
lib/Analysis/MemoryBuiltins.cpp
test/Transforms/InstCombine/objsize.ll