llvm/lib/Transforms
Chandler Carruth fdc2d0faf3 Fix two rather subtle internal vs. external linker issues.
I'll admit I'm not entirely satisfied with this change, but it seemed
the cleanest option. Other suggestions quite welcome

The issue is that the traits specializations have static methods which
return the typedef'ed PHI_iterator type. In both the IR and MI layers
this is typedef'ed to a custom iterator class defined in an anonymous
namespace giving the types and the functions returning them internal
linkage. However, because the traits specialization is defined in the
'llvm' namespace (where it has to be, specialized template lives there),
and is in turn used in the templated implementation of the SSAUpdater.
This led to the linkage conflict that Clang now warns about.

The simplest solution to me was just to define the PHI_iterator as
a nested class inside the trait specialization. That way it still
doesn't get scoped widely, it can't be accidentally reused somewhere,
etc. This is a little gross just because nested class definitions are
a little gross, but the alternatives seem more ad-hoc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158799 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20 08:39:30 +00:00
..
Hello Since the Hello pass is built as a loadable dynamic library, don't try to convert it to new-style registration yet. 2010-10-07 00:31:16 +00:00
InstCombine InstCombine: fix a bug when combining (fcmp cc0 x, y) && (fcmp cc1 x, y). 2012-06-14 05:57:42 +00:00
Instrumentation Register the gcov "writeout" at init time. Don't list this as a d'tor. Instead, 2012-06-01 23:14:32 +00:00
IPO Some optimizations done by globalopt are safe only for internal linkage, not 2012-06-15 18:00:24 +00:00
Scalar Now that SROA can form alloca's for dynamic vector accesses, further improve it to be able to replace operations on these vector alloca's with insert/extract element insts 2012-06-17 03:58:26 +00:00
Utils Fix two rather subtle internal vs. external linker issues. 2012-06-20 08:39:30 +00:00
Vectorize Teach BBVectorize to combine, when possible, or discard metadata when fusing instructions. 2012-06-16 20:34:06 +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