Merge pull request #692 from Trass3r/master

fix for llvm trunk
Add missing LLVM 3.5 intrinsic and add support for LLVM 3.6.
Fix LLVM 3.6 build
Fix for issue #695
Fix for issue #648.

Uses the llvmInternal member and the intrinsic name to identify an intrinsic.
Implements llvm.bswap, llvm.ctpop, llvm.ctlz and llvm.cttz intrinsics as builtins and remove the core.bitop counterparts.

The implementation is complicated by the fact that the overloaded intrinsic name is resolved during code generation.
Merge pull request #694 from redstar/issue648

Fix for issue #648.
Fix LLVM 3.6 build
Fix another LLVM 3.6 change
Remove an useless forward declaration
Reallow failures of LLVM 3.5 build and add LLVM 3.6 build.

Same situation as with LLVM 3.4: as soon as the release is branched the llvm-3.x packages fails to install.
Add LLVM 3.5 toolchain.

Using the right name, the LLVM 3.5 toolchain can be installed. :-)
Fix LLVM 3.6 build
Use gcc as linker on MingW
Fix typo
Fix MingW build with LLVM 3.5

Starting with LLVM 3.5 it is better/required to use Triple.isWindowsGNUEnvironment().
Reported by Daniel N.
Fixes issue #703.

The function declaration fd may be null on an indirect call.
LLVM 3.6 fix: stream constructor now takes std::error_code instead of std::string
Use LLVM intrinsic name as mangled name.

If the mangled name is viewed as the name emitted into IR code then the mangled name of an intrinsic is the intrinsic's name.
The name is unique because of the `llvm.` prefix. The only point is that overloaded intrinsics must be resolved earlier.

This commit moves the resolution of oveloaded intrinsics into the semantic analysis pass. The
Add -Wno-pedantic only if supported by compiler
Merge pull request #704 from redstar/intrinsics2

Use LLVM intrinsic name as mangled name.