1#![doc = include_str!("../README.md")]
2#![doc(
3 html_logo_url = "https://raw.githubusercontent.com/paradigmxyz/solar/main/assets/logo.png",
4 html_favicon_url = "https://raw.githubusercontent.com/paradigmxyz/solar/main/assets/favicon.ico"
5)]
6#![cfg_attr(feature = "nightly", feature(rustc_attrs), allow(internal_features))]
7#![cfg_attr(docsrs, feature(doc_cfg))]
8#![cfg_attr(test, allow(unused_crate_dependencies))]
9
10extern crate derive_more as _;
11extern crate tracing as _;
12
13pub use solar_data_structures::map::FxHashMap;
14pub use solar_sema as sema;
15
16pub const IMMUTABLE_SCRATCH_BASE: u64 = 0x2000;
19
20pub mod mir;
21pub use mir::{
22 BasicBlock, BlockId, Function, FunctionId, Immediate, InstId, InstKind, Instruction, MirType,
23 Module, Terminator, Value, ValueId,
24};
25
26pub mod analysis;
27pub use analysis::{InductionVariable, Liveness, LivenessInfo, Loop, LoopAnalyzer, LoopInfo};
28
29pub mod backend;
30pub use backend::{
31 Backend,
32 evm::{
33 AssembledCode, Assembler, AssemblerConfig, EvmArtifact, EvmCodegen, EvmCodegenConfig,
34 EvmIrBlock, EvmIrBlockHotness, EvmIrBlockId, EvmIrBlockMetadata, EvmIrInstruction,
35 EvmIrMetadata, EvmIrMetadataItem, EvmIrModule, EvmIrOperand, EvmIrParseError,
36 EvmIrStackEffect, EvmIrTerminator, EvmIrTerminatorKind, EvmIrValue, EvmIrValueId, Label,
37 SpillManager, SpillSlot, StackModel, StackScheduler, parse_evm_ir_module,
38 },
39};
40
41pub mod lower;
42pub use lower::Lowerer;
43
44pub mod pass;
45pub mod transform;
46pub(crate) mod utils;
47pub use transform::{
48 CommonSubexprEliminator, DceStats, DeadCodeEliminator, FunctionInlineInfo, InlineAnalyzer,
49 InlineConfig, InlineDecision, InlineStats, InstSimplifier, JumpThreader, JumpThreadingStats,
50 LoopOptConfig, LoopOptStats, LoopOptimizer, OptLevel,
51};