std::libc: Remove TCHAR types
std::libc: Simplify win32/win64 type definitions
std: Fix transmute error on win64
llvm: Disable pthreads on mingw-w64 platforms
std::rt: Fix record_stack_bounds on win64
std::rt: Fix crate_map on Win64
std: IPv6 addresses are represented as eight groups of four HEXADECIMAL digits
Represent C-like enums with a plain LLVM integer, not a struct.

This is needed so that the FFI works as expected on platforms that don't
flatten aggregates the way the AMD64 ABI does, especially for `#[repr(C)]`.

This moves more of `type_of` into `trans::adt`, because the type might
or might not be an LLVM struct.
Remove arms_have_move_bindings
Take &Pat
Take &Pat in visit_pat
Add an implementation of Encodable and Decodable for Rc. This will be needed to use Rc in place of @ in libsyntax.
Implement IterBytes for Rc<T>.
auto merge of #10657 : sanxiyn/rust/pat, r=cmr
auto merge of #10658 : LeoTestard/rust/serialize-rc, r=cmr

Implement various traits (IterBytes and extra's Encodable and Decodable) for Rc<T> when T alreay implements the trait.
auto merge of #10650 : andreasots/rust/ipv6-is-in-hex, r=alexcrichton

Without this the assert in <tt>rust_malloc_ip6_addr</tt> is triggered as it expects a correctly formatted IPv6 address.
Fix the usual check-fast scoping mistake.
rustc: Add lint for misplaced crate attributes
rustc: Add lint for obsolete attributes

This also moves `#[auto_{en,de}code]` checker from syntax to lint.
std: Remove unused attributes

This also enables two tests properly.