LoopVectorize: Add missing INITIALIZE_PASS_DEPENDENCY macros

Contributed-by:  Peter Zotov  <whitequark@whitequark.org>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192536 91177308-0d34-0410-b5e6-96231b3b80d8
SLPVectorizer: Sort PHINodes based on their opcode

Before this patch we relied on the order of phi nodes when we looked for phi
nodes of the same type. This could prevent vectorization of cases where there
was a phi node of a second type in between phi nodes of some type.

This is important for vectorization of an internal graphics kernel. On the test
suite + external on x86_64 (and on a run on armv7s) it showed no impact on
either performance or compile time.

radar://15024459

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192537 91177308-0d34-0410-b5e6-96231b3b80d8
C API: return NULL from LLVMGetFirstTarget instead of asserting.
C API: don't assert in LLVMTargetMachineEmitToFile on nonexistent file.
C API: implement LLVM{Get,Set}InstructionAlignment.

Existing LLVM{Get,Set}Alignment functions do not work on instructions,
as they use unwrap<GlobalValue>.
C API: implement LLVMDumpType.
C API: implement LLVMIntPtrType{,ForAS}InContext.
C API: DIBuilder bindings.

Original patch by Carlo Kok:
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20130422/172496.html
OCaml bindings: fix typo.
OCaml bindings: formatting.
OCaml bindings: remove unused DONT_BUILD_RELINKED from Makefiles.
OCaml bindings: implement missing Core APIs.
OCaml bindings: implement missing Target APIs.
OCaml bindings: Llvm_ipo: add missing transforms.
OCaml bindings: Llvm_scalar_opts: add missing transforms.
OCaml bindings: load and store instructions with volatile flag/alignment.
OCaml bindings: implement Llvm.dump_type.
OCaml bindings: implement Llvm_vectorize.
OCaml bindings: implement Llvm_linker.
OCaml bindings: implement Llvm_passmgr_builder.