Skip to main content

solar_codegen/
lib.rs

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
16/// Constructor scratch memory used to stage immutable words before appending
17/// them to runtime bytecode.
18pub 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};