Expand description
§solar-codegen
Solidity MIR (Mid-level Intermediate Representation) and EVM code generation for Solar.
§Architecture
HIR (from solar-sema) -> Lowering -> MIR -> Code Generation -> EVM Bytecode§MIR Structure
- Module: Top-level container with functions, data segments, and storage layout
- Function: SSA-form functions with basic blocks, values, and instructions
- BasicBlock: Sequence of instructions ending with a terminator
- Instruction: Operations (arithmetic, memory, storage, control flow)
- Value: SSA values (instruction results, arguments, immediates, phi nodes)
§Key Types
ValueId,InstId,BlockId,FunctionId: Index types for SSA valuesMirType: Types used in MIR (UInt, Address, MemPtr, StoragePtr)InstKind: Instruction variants (Add, Sub, SLoad, SStore, Call, etc.)Terminator: Block terminators (Jump, Branch, Return, Revert)
Re-exports§
pub use mir::BasicBlock;pub use mir::BlockId;pub use mir::Function;pub use mir::FunctionId;pub use mir::Immediate;pub use mir::InstId;pub use mir::InstKind;pub use mir::Instruction;pub use mir::MirType;pub use mir::Module;pub use mir::Terminator;pub use mir::Value;pub use mir::ValueId;pub use analysis::InductionVariable;pub use analysis::Liveness;pub use analysis::LivenessInfo;pub use analysis::Loop;pub use analysis::LoopAnalyzer;pub use analysis::LoopInfo;pub use backend::Backend;pub use backend::evm::AssembledCode;pub use backend::evm::Assembler;pub use backend::evm::AssemblerConfig;pub use backend::evm::EvmArtifact;pub use backend::evm::EvmCodegen;pub use backend::evm::EvmCodegenConfig;pub use backend::evm::EvmIrBlock;pub use backend::evm::EvmIrBlockHotness;pub use backend::evm::EvmIrBlockId;pub use backend::evm::EvmIrBlockMetadata;pub use backend::evm::EvmIrInstruction;pub use backend::evm::EvmIrMetadata;pub use backend::evm::EvmIrMetadataItem;pub use backend::evm::EvmIrModule;pub use backend::evm::EvmIrOperand;pub use backend::evm::EvmIrParseError;pub use backend::evm::EvmIrStackEffect;pub use backend::evm::EvmIrTerminator;pub use backend::evm::EvmIrTerminatorKind;pub use backend::evm::EvmIrValue;pub use backend::evm::EvmIrValueId;pub use backend::evm::Label;pub use backend::evm::SpillManager;pub use backend::evm::SpillSlot;pub use backend::evm::StackModel;pub use backend::evm::StackScheduler;pub use backend::evm::parse_evm_ir_module;pub use lower::Lowerer;pub use transform::CommonSubexprEliminator;pub use transform::DceStats;pub use transform::DeadCodeEliminator;pub use transform::FunctionInlineInfo;pub use transform::InlineAnalyzer;pub use transform::InlineConfig;pub use transform::InlineDecision;pub use transform::InlineStats;pub use transform::InstSimplifier;pub use transform::JumpThreader;pub use transform::JumpThreadingStats;pub use transform::LoopOptConfig;pub use transform::LoopOptStats;pub use transform::LoopOptimizer;pub use transform::OptLevel;pub use solar_sema as sema;
Modules§
- analysis
- MIR analysis passes.
- backend
- The backend protocol.
- lower
- HIR to MIR lowering.
- mir
- Mid-level Intermediate Representation (MIR).
- pass
- Pass infrastructure for MIR transformations and analyses.
- transform
- Optimization and transformation passes for the Solar compiler.
Constants§
- IMMUTABLE_
SCRATCH_ BASE - Constructor scratch memory used to stage immutable words before appending them to runtime bytecode.