llvm/lib/Transforms
Chandler Carruth 99a54942ae Teach the rewriting of memcpy calls to support subvector copies.
This also cleans up a bit of the memcpy call rewriting by sinking some
irrelevant code further down and making the call-emitting code a bit
more concrete.

Previously, memcpy of a subvector would actually miscompile (!!!) the
copy into a single vector element copy. I have no idea how this ever
worked. =/ This is the memcpy half of PR14478 which we probably weren't
noticing previously because it didn't actually assert.

The rewrite relies on the newly refactored insert- and extractVector
functions to do the heavy lifting, and those are the same as used for
loads and stores which makes the test coverage a bit more meaningful
here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170338 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-17 14:51:24 +00:00
..
Hello Use the new script to sort the includes of every file under lib. 2012-12-03 16:50:05 +00:00
InstCombine Add back FoldOpIntoPhi optimizations with fix. Included test cases to help catch these errors and to test the presence of the optimization itself 2012-12-14 22:08:26 +00:00
Instrumentation Fix lint warnings in MemorySanitizer.cpp. 2012-12-14 13:48:31 +00:00
IPO Revert r170246, "Enable the loop vectorizer by default." 2012-12-15 06:11:13 +00:00
Scalar Teach the rewriting of memcpy calls to support subvector copies. 2012-12-17 14:51:24 +00:00
Utils Improve debug info generated with enabled AddressSanitizer. 2012-12-12 14:31:53 +00:00
Vectorize Enable the Loop Vectorizer by default for O2 and O3. Disable if-conversion by default. I plan to revert this patch later today. 2012-12-13 23:11:54 +00:00
CMakeLists.txt Add a basic-block autovectorization pass. 2012-02-01 03:51:43 +00:00
LLVMBuild.txt Add a basic-block autovectorization pass. 2012-02-01 03:51:43 +00:00
Makefile Add a basic-block autovectorization pass. 2012-02-01 03:51:43 +00:00