Skip to content

ICE in TypeChecker::visit(InlineAssembly) when a fixed-type variable is referenced in inline assembly #16619

@jubnzv

Description

@jubnzv

The compiler panics with FixedPointType not implemented. in libsolidity/analysis/TypeChecker.cpp:813 when a variable of fixed or ufixed type is referenced inside an assembly { } block.

MRE:

contract C { function f() public pure returns (fixed x) { assembly { x := 1 } } }

Reproduce: save as mre.sol, run solc --bin mre.sol.

Output:

Internal compiler error:
/solidity/libsolidity/analysis/TypeChecker.cpp(813): Throw in function solidity::frontend::TypeChecker::visit(const solidity::frontend::InlineAssembly&)::<lambda(const solidity::yul::Identifier&, solidity::yul::IdentifierContext, bool)>
Dynamic exception type: boost::wrapexcept<solidity::langutil::InternalCompilerError>
std::exception::what: FixedPointType not implemented.
[solidity::util::tag_comment*] = FixedPointType not implemented.

Expected behavior: a type error explaining that fixed/ufixed types are not supported in inline assembly.

Also reproduces when the fixed variable is a function parameter (function f(fixed x)) or a state variable accessed via .slot.

Git commit: 9be6619
solc 0.8.35-develop.2026.4.18+commit.9be66192.Linux.g++

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions