rust/src/librustc_codegen_llvm
Nikita Popov a5c3956a75 Don't add extra passes into the function pass manager
Exception for specific cases like linting, additional passes should
be going into the module pass manager (even if they are function
passes). The separate function pass manager is only used for very
early optimization passes.

Rather than apparending passes to the MPM, use the OptimizerLast
and EnabledOnOptLevel0 pass manager builder extension hooks, which
allow adding passes directly before finalization (alias
canonicalization and name-anon-globals).

The main effect and purpose of this change is to add sanitizer
passes at the end of the pipeline, which is where they belong.
In LLVM 9 the address sanitizer can't be used as a pass in the
early function pass manager, because it has a dependence on a
module-level analysis pass.
2019-07-15 09:45:14 +02:00
..
back Don't add extra passes into the function pass manager 2019-07-15 09:45:14 +02:00
debuginfo Remove unnecessary .clone() 2019-06-15 20:46:00 +09:00
llvm Don't add extra passes into the function pass manager 2019-07-15 09:45:14 +02:00
abi.rs Pass type to byval attributes 2019-07-09 21:55:29 +02:00
allocator.rs Unify all uses of 'gcx and 'tcx. 2019-06-14 18:58:23 +03:00
asm.rs normalize use of backticks for compiler messages in librustc_codegen 2019-07-08 00:54:38 +02:00
attributes.rs Translate target features for LLVM 9 2019-07-09 21:55:29 +02:00
base.rs Remove needless lifetimes 2019-07-03 10:01:02 +02:00
build.rs Remove licenses 2018-12-25 21:08:33 -07:00
builder.rs normalize use of backticks for compiler messages in librustc_codegen 2019-07-08 00:54:38 +02:00
callee.rs remove reexport of rustc::ty::Instance 2019-06-02 22:32:42 -05:00
Cargo.toml Remove some dummy dependencies 2019-07-07 03:23:00 +02:00
common.rs Fix float add/mul reduction codegen 2019-07-09 21:55:29 +02:00
consts.rs Rollup merge of #61984 - ljedrz:more_node_id_pruning, r=Zoxc 2019-06-22 01:42:38 +02:00
context.rs Strip function pointer alignment for older LLVM versions 2019-07-09 21:55:29 +02:00
declare.rs Pass type to byval attributes 2019-07-09 21:55:29 +02:00
error_codes.rs Rename diagnostics to error_codes 2019-04-17 18:19:14 +09:00
intrinsic.rs Fix float add/mul reduction codegen 2019-07-09 21:55:29 +02:00
lib.rs rustc: Remove dylib crate type from most rustc crates 2019-07-07 03:23:00 +02:00
llvm_util.rs Pass a Symbol to check_name, emit_feature_err, and related functions. 2019-05-13 09:29:22 +10:00
metadata.rs format a bit 2019-07-07 09:32:36 +02:00
mono_item.rs remove reexport of rustc::ty::Instance 2019-06-02 22:32:42 -05:00
README.md rustc-guide has moved 2018-11-26 15:03:13 -06:00
type_.rs rustc_codegen_llvm: deny(unused_lifetimes). 2019-06-12 16:02:03 +03:00
type_of.rs rustc_codegen_llvm: deny(unused_lifetimes). 2019-06-12 16:02:03 +03:00
va_arg.rs Expose VaListImpl as the Rust equivalent of __va_list_tag and implement Clone for it. 2019-06-17 16:04:49 -07:00
value.rs librustc_codegen_llvm: deny(elided_lifetimes_in_paths) 2019-02-25 08:40:18 +01: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.