Fix valgrind.h for Win64.
_WIN32 is defined for 64-bit builds as well, so test for _WIN64 first.
Ensure that Registers struct is 16-byte aligned on x86_64.
This is important when building with --disable-jemalloc: unlike jemalloc,  msvcrt does not align on 16 bytes unless asked to.
libnative should not mess with stack limits in the TIB.  Only libgreen has a legitimate need to set them.
Use mingw64 target spelling.
Use gcc for cross-build linking, not g++.
Fix crash in OsRng when compiling with -O.
Update LLVM
Implement unwinding for Win64.
The original trick used to trigger unwinds would not work with GCC's implementation of SEH, so I had to invent a new one: rust_try now consists of two routines: the outer one, whose handler triggers unwinds, and the inner one, that stops unwinds by having a landing pad that swallows exceptions and passes them on to the outer routine via a normal return.
Fix tests.
Added clarification regarding rust_try_inner.
Renamed `record_stack_bounds` for clarity.
For a good measure, implemented target_record_stack_bounds for 32-bit Windows as well.
auto merge of #16261 : vadimcn/rust/Win64, r=alexcrichton

Finally landed all the required fixes in LLVM master!

These 4 tests currently fail in win64 build, I suspect there's some ABI conformance bug:
run-pass/extern-pass-TwoU64s.rs
run-pass/extern-pass-empty.rs
run-pass/extern-return-TwoU64s.rs
run-pass/tcp-connect-timeouts.rs

Closes #1237