librustc: Make sure to add argument attributes to extern fns from non-local crates.
Removed unnecessary arguments for walk_* functions
auto merge of #14191 : luqmana/rust/eu, r=alexcrichton

We were correctly determining the attributes needed for the parameters for extern fns, but when that extern fn was from another crate we never bothered to pass that information along to LLVM. (i.e never called `foreign::add_argument_attributes`).

I've just changed both local and non-local (crate) extern fn's to be dealt with together (through `foreign::register_foreign_item_fn`) so we don't run into something like again.

Fixes #14177.
auto merge of #14192 : pongad/rust/walkcleanup, r=pcwalton

Fixes #14134