# CLEAN — solc (Solidity compiler)
Scanned 2026-03-29 for CWE-407 (algorithmic complexity / linear scan membership).

## Areas Checked

- `libsolidity/analysis/OverrideChecker.cpp` — inheritance graph cut-vertex algorithm:
  uses `std::vector<bool>` as a bitset indexed by node number — O(1) per visited check.
- `libsolidity/analysis/FunctionCallGraph.cpp` — call graph construction: no linear
  membership checks; uses sets and maps throughout.
- `libsolidity/ast/Types.cpp` — type resolution: `seen` is `std::unordered_set<std::string>`
  at line 1522 — O(1) membership test. `seenFunctions` is `std::set` — O(log N).
- `libsolidity/formal/SMTEncoder.cpp` — modifier visited tracking: `std::set<ModifierDefinition const*>`
  at line 3006 — O(log N) insert and lookup.
- `libsolidity/formal/CHC.cpp` — error dedup: `std::set<unsigned>` — O(log N).
- `libsolidity/formal/Z3CHCSmtLib2Interface.cpp` — visitedIds: hash-based, O(1).

**Result: No actionable CWE-407 defects found. solc uses unordered_set and set
consistently for membership tracking in all graph/traversal algorithms.**
