JuliaLang/julia — pull request #7087 by ArchRobison (2014-06-02 21:18:19+00:00)
Title: Fix for LLVM trunk changes that broke enableUnsafeAlgebraIfReduction.

This is the fix for a [problem](https://github.com/JuliaLang/julia/pull/6928#issuecomment-44044227) where Julia built with LLVM 3.5 does not vectorize ```@simd``` loops containing reductions.

This patch is "monkey see, monkey do" quality. I don't understand why LLVM trunk broke the idiom that I was using in LLVM 3.3/3.4 to traverse uses of an LLVM instruction. So I copied the idiom that LLVM trunk ```LoopVectorizer``` uses, which is different than the one that I originally copied from LLVM 3.3 ```LoopVectorizer```.

The ```/*}*/''' is there to let text editors match the rest of the braces properly.