rust/src/librustc_codegen_llvm
bors d2048b6db3 Auto merge of #52101 - japaric:linker-flavor, r=alexcrichton
try to infer linker flavor from linker name and vice versa

This is a second take on PR #50359 that implements the logic proposed in https://github.com/rust-lang/rust/pull/50359#pullrequestreview-116663121

With this change it would become possible to link `thumb*` binaries using GNU's LD on stable as `-C linker=arm-none-eabi-ld` would be enough to change both the linker and the linker flavor from their default values of `arm-none-eabi-gcc` and `gcc`.

To link `thumb*` binaries using rustc's LLD on stable `-Z linker-flavor` would need to be stabilized as `-C linker=rust-lld -Z linker-flavor=ld.lld` are both required to change the linker and the linker flavor, but this PR doesn't propose that. We would probably need some sort of stability guarantee around `rust-lld`'s name and availability to make linking with rustc's LLD truly stable.

With this change it would also be possible to link `thumb*` binaries using a system installed LLD on stable using the `-C linker=ld.lld` flag (provided that `ld.lld` is a symlink to the system installed LLD).

r? @alexcrichton
2018-08-20 01:12:58 +00:00
..
back Auto merge of #52101 - japaric:linker-flavor, r=alexcrichton 2018-08-20 01:12:58 +00:00
debuginfo mv codemap() source_map() 2018-08-19 23:01:01 +02:00
llvm Add Builder::array_alloca. 2018-08-19 08:06:42 +09:00
mir mv codemap() source_map() 2018-08-19 23:01:01 +02:00
abi.rs Integrate OperandValue::UnsizedRef into OperandValue::Ref. 2018-08-19 08:07:33 +09:00
allocator.rs rustc: Tweak visibility of some lang items 2018-08-07 08:42:38 -07:00
asm.rs rustc_codegen_llvm: use safe references for Value. 2018-07-30 19:49:18 +03:00
attributes.rs Set more llvm function attributes for __rust_try 2018-08-16 13:23:35 -07:00
base.rs Integrate OperandValue::UnsizedRef into OperandValue::Ref. 2018-08-19 08:07:33 +09:00
build.rs Rename trans to codegen everywhere. 2018-05-17 15:08:30 +03:00
builder.rs Add Builder::array_alloca. 2018-08-19 08:06:42 +09:00
callee.rs Set more llvm function attributes for __rust_try 2018-08-16 13:23:35 -07:00
Cargo.toml Building librustc_codegen_llvm in a separate directory 2018-08-06 07:00:34 -06:00
common.rs rustc_codegen_llvm: fix tidy errors. 2018-07-30 20:35:08 +03:00
consts.rs Rollup merge of #53274 - bjorn3:remove_statics_field, r=nagisa 2018-08-14 23:59:15 +08:00
context.rs Rollup merge of #53274 - bjorn3:remove_statics_field, r=nagisa 2018-08-14 23:59:15 +08:00
declare.rs Introduce SmallCStr and use it where applicable. 2018-08-10 11:13:00 +02:00
diagnostics.rs Add backticks to E0558 2018-06-24 00:16:10 +01:00
glue.rs rustc_codegen_llvm: use safe references for Value. 2018-07-30 19:49:18 +03:00
intrinsic.rs Integrate OperandValue::UnsizedRef into OperandValue::Ref. 2018-08-19 08:07:33 +09:00
lib.rs Use CGU name as LLVM module name and add some caching to CGU name generation. 2018-08-15 14:50:54 +02:00
llvm_util.rs Add wasm32 simd128 target feature 2018-08-08 01:39:52 +02:00
metadata.rs Move path2cstr to rustc_fs_util 2018-08-09 10:00:25 -06:00
meth.rs Make globals with private linkage unnamed. Fixes #50862. 2018-07-31 23:45:18 -04:00
mono_item.rs Set more llvm function attributes for __rust_try 2018-08-16 13:23:35 -07:00
README.md Rename trans to codegen everywhere. 2018-05-17 15:08:30 +03:00
type_.rs Introduce SmallCStr and use it where applicable. 2018-08-10 11:13:00 +02:00
type_of.rs [nll] librustc_codegen_llvm: remove unused mut annotation 2018-08-10 06:31:40 -04:00
value.rs rustc_codegen_llvm: use safe references for Value. 2018-07-30 19:49:18 +03:00

The codegen crate contains the code to convert from MIR into LLVM IR, and then from LLVM IR into machine code. In general it contains code that runs towards the end of the compilation process.

For more information about how codegen works, see the rustc guide.