diff options
Diffstat (limited to 'third_party/rust/cranelift-codegen/src/lib.rs')
-rw-r--r-- | third_party/rust/cranelift-codegen/src/lib.rs | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/third_party/rust/cranelift-codegen/src/lib.rs b/third_party/rust/cranelift-codegen/src/lib.rs new file mode 100644 index 0000000000..e3be3e0aaf --- /dev/null +++ b/third_party/rust/cranelift-codegen/src/lib.rs @@ -0,0 +1,125 @@ +//! Cranelift code generation library. +#![deny(missing_docs, trivial_numeric_casts, unused_extern_crates)] +#![warn(unused_import_braces)] +#![cfg_attr(feature = "std", deny(unstable_features))] +#![cfg_attr(feature = "clippy", plugin(clippy(conf_file = "../../clippy.toml")))] +#![cfg_attr(feature="cargo-clippy", allow( +// Produces only a false positive: + clippy::while_let_loop, +// Produces many false positives, but did produce some valid lints, now fixed: + clippy::needless_lifetimes, +// Generated code makes some style transgressions, but readability doesn't suffer much: + clippy::many_single_char_names, + clippy::identity_op, + clippy::needless_borrow, + clippy::cast_lossless, + clippy::unreadable_literal, + clippy::assign_op_pattern, + clippy::empty_line_after_outer_attr, +// Hard to avoid in generated code: + clippy::cognitive_complexity, + clippy::too_many_arguments, +// Code generator doesn't have a way to collapse identical arms: + clippy::match_same_arms, +// These are relatively minor style issues, but would be easy to fix: + clippy::new_without_default, + clippy::should_implement_trait, + clippy::len_without_is_empty))] +#![cfg_attr( + feature = "cargo-clippy", + warn( + clippy::float_arithmetic, + clippy::mut_mut, + clippy::nonminimal_bool, + clippy::map_unwrap_or, + clippy::unicode_not_nfc, + clippy::use_self + ) +)] +#![no_std] +// Various bits and pieces of this crate might only be used for one platform or +// another, but it's not really too useful to learn about that all the time. On +// CI we build at least one version of this crate with `--features all-arch` +// which means we'll always detect truly dead code, otherwise if this is only +// built for one platform we don't have to worry too much about trimming +// everything down. +#![cfg_attr(not(feature = "all-arch"), allow(dead_code))] + +#[allow(unused_imports)] // #[macro_use] is required for no_std +#[macro_use] +extern crate alloc; + +#[cfg(feature = "std")] +#[macro_use] +extern crate std; + +#[cfg(not(feature = "std"))] +use hashbrown::{hash_map, HashMap, HashSet}; +#[cfg(feature = "std")] +use std::collections::{hash_map, HashMap, HashSet}; + +pub use crate::context::Context; +pub use crate::legalizer::legalize_function; +pub use crate::value_label::{ValueLabelsRanges, ValueLocRange}; +pub use crate::verifier::verify_function; +pub use crate::write::write_function; + +pub use cranelift_bforest as bforest; +pub use cranelift_entity as entity; + +pub mod binemit; +pub mod cfg_printer; +pub mod cursor; +pub mod data_value; +pub mod dbg; +pub mod dominator_tree; +pub mod flowgraph; +pub mod ir; +pub mod isa; +pub mod loop_analysis; +pub mod machinst; +pub mod print_errors; +pub mod settings; +pub mod timing; +pub mod verifier; +pub mod write; + +pub use crate::entity::packed_option; + +mod abi; +mod bitset; +mod constant_hash; +mod context; +mod dce; +mod divconst_magic_numbers; +mod fx; +mod inst_predicates; +mod iterators; +mod legalizer; +mod licm; +mod nan_canonicalization; +mod partition_slice; +mod postopt; +mod predicates; +mod redundant_reload_remover; +mod regalloc; +mod remove_constant_phis; +mod result; +mod scoped_hash_map; +mod simple_gvn; +mod simple_preopt; +mod stack_layout; +mod topo_order; +mod unreachable_code; +mod value_label; + +#[cfg(feature = "enable-peepmatic")] +mod peepmatic; + +#[cfg(feature = "souper-harvest")] +mod souper_harvest; + +pub use crate::result::{CodegenError, CodegenResult}; + +/// Version number of this crate. +pub const VERSION: &str = env!("CARGO_PKG_VERSION"); |