Move Pass registration into polly library

This ensures that the polly passes get properly registered both, when using
polly as a loadable module and when directly linking it into clang/opt/bugpoint.

git-svn-id: https://llvm.org/svn/llvm-project/polly/trunk@204255 91177308-0d34-0410-b5e6-96231b3b80d8
Support for generating vectors for loads with -1 stride

This patch enables vectorization of loops containing backward array
traversal (array stride is -1).

Contributed-by: Chris Jenneisch <chrisj@codeaurora.org>

git-svn-id: https://llvm.org/svn/llvm-project/polly/trunk@204257 91177308-0d34-0410-b5e6-96231b3b80d8
[www] announce static links of polly in tools

git-svn-id: https://llvm.org/svn/llvm-project/polly/trunk@204265 91177308-0d34-0410-b5e6-96231b3b80d8
www: Link to the polyhedral.info publication list

git-svn-id: https://llvm.org/svn/llvm-project/polly/trunk@204441 91177308-0d34-0410-b5e6-96231b3b80d8
www: Separate out the Polly paper

git-svn-id: https://llvm.org/svn/llvm-project/polly/trunk@204442 91177308-0d34-0410-b5e6-96231b3b80d8
www: Add a script to show the latest news from polyhedral.info

git-svn-id: https://llvm.org/svn/llvm-project/polly/trunk@204443 91177308-0d34-0410-b5e6-96231b3b80d8
www: Add a script that allows us to obtain statistics about polly

git-svn-id: https://llvm.org/svn/llvm-project/polly/trunk@204444 91177308-0d34-0410-b5e6-96231b3b80d8
www: Mark a couple of projects done

We now have both polyhedral dead code elimination as well as LNT buildbots.

git-svn-id: https://llvm.org/svn/llvm-project/polly/trunk@204445 91177308-0d34-0410-b5e6-96231b3b80d8
www: Rewrite the intro about Polly

git-svn-id: https://llvm.org/svn/llvm-project/polly/trunk@204446 91177308-0d34-0410-b5e6-96231b3b80d8
www: Remove warning about the implementation status

It does not seem to add a lot of value, as it leaves unclear which parts are
mature and whichs not. Adding this informatin also does not make sense, as it
changes rapidly.

git-svn-id: https://llvm.org/svn/llvm-project/polly/trunk@204447 91177308-0d34-0410-b5e6-96231b3b80d8
www: More formatting improvements

git-svn-id: https://llvm.org/svn/llvm-project/polly/trunk@204466 91177308-0d34-0410-b5e6-96231b3b80d8
clang-format: Remove empty lines

git-svn-id: https://llvm.org/svn/llvm-project/polly/trunk@204468 91177308-0d34-0410-b5e6-96231b3b80d8
Return conservative result in case the dependence check timed out

For complex examples it may happen that we do not compute dependences. In this
case we do not want to crash, but just not detect parallel loops.

git-svn-id: https://llvm.org/svn/llvm-project/polly/trunk@204470 91177308-0d34-0410-b5e6-96231b3b80d8
Updated test/create_ll.sh to work with old & new clang versions.

We explicitly specifying all filenames instead of assuming some naming
convention used by clang and opt.

Contributed-by: Johannes Doerfert <doerfert@cs.uni-saarland.de>

git-svn-id: https://llvm.org/svn/llvm-project/polly/trunk@204726 91177308-0d34-0410-b5e6-96231b3b80d8
Delete trivial PHI nodes (aka stack slot sharing)

During code preperation trivial PHI nodes (mainly introduced by lcssa) are
deleted to decrease the number of introduced allocas (==> dependences). However
simply replacing them by their only incoming value would cause the independent
block pass to introduce new allocas. To prevent this we try to share stack slots
during code preperarion, hence to reuse a already created alloca 'to demote' the
trivial PHI node. This works if we know that the value stored in this alloca
will be the incoming value of the trivial PHI at the end of the predecessor
block of this trivial PHI.

Contributed-by: Johannes Doerfert <doerfert@cs.uni-saarland.de>

git-svn-id: https://llvm.org/svn/llvm-project/polly/trunk@205320 91177308-0d34-0410-b5e6-96231b3b80d8
Replace INVALID/INVALID_NOVERIFY with diagnostics.

This replaces the ancient INVALID/INVALID_NOVERIFY macros with a real
function.

The new invalid(..) function uses small diagnostic objects that are
generated on demand. We can store arbitrary additional information per
error type and generate useful debug/error messages on the fly.

Use it as follows:
  if (/* Some error condition (ReportFoo) */)
    invalid<ReportFoo>(Context, /*Assert=*/true/false,
      (/* List of helpful diagnostic objects */));

Where ReportFoo is a subclass of RejectReason that is able to take the
list of helpful diagnostic objects in its constructor.
The implementation of invalid will create the report and fire
an assertion, if necessary.

git-svn-id: https://llvm.org/svn/llvm-project/polly/trunk@205414 91177308-0d34-0410-b5e6-96231b3b80d8
Use explit types in foreach iterators

git-svn-id: https://llvm.org/svn/llvm-project/polly/trunk@205457 91177308-0d34-0410-b5e6-96231b3b80d8