Skip to main content

Crate solar_codegen

Crate solar_codegen 

Source
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 values
  • MirType: 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.

Type Aliases§

FxHashMap
A HashMap using FxHasher as its hasher.