Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

English documentation updates up to v0.8.27-125-gfde19a5b1 (2024-10-09) #383

Open
wants to merge 1,775 commits into
base: develop
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
1775 commits
Select commit Hold shift + click to select a range
d067964
Yul: introduce setCode method for yul::Object to properly clean up re…
clonker Aug 2, 2024
44bfa72
Yul: optimizer tests assert that there are no subobjects but Data
clonker Aug 2, 2024
860f0d4
Change the constant optimizer to make use of PUSH0
axic Apr 12, 2023
6e7d94e
Add new Peephole Optimiser method (deduplicateNextTag)
matheusaaguiar Mar 30, 2024
7e67811
Update tests
matheusaaguiar Mar 30, 2024
a500a63
workaround to skip failing hardhat tests
matheusaaguiar Jun 28, 2024
57ab4dc
Parser: Fix spuriously emitted parser error for unary plus operations…
clonker Aug 5, 2024
38088a1
Merge pull request #15315 from ethereum/spurious_unary_plus_parser_error
nikola-matic Aug 5, 2024
5dbaa13
Merge pull request #14117 from ethereum/push0-optimisations
ekpyron Aug 5, 2024
40aec73
Update libyul/Object.cpp
ekpyron Aug 6, 2024
c92b32f
Merge pull request #15258 from ethereum/immutable_ast_class
ekpyron Aug 6, 2024
961c99d
Tests for warnings sensitive to optimization
cameel Jul 31, 2024
ea262ed
EVMObjectCompiler: Don't require a mutable object
cameel Jul 31, 2024
fe4c52e
Move optimized IR reparsing from CompilerStack to YulStack
cameel Jul 31, 2024
ea85a78
CLI: remove --yul flag
clonker Aug 6, 2024
f99c239
Merge pull request #15316 from ethereum/remove_yul_cli_arg
r0qs Aug 8, 2024
55a5fd9
Fix SMT logic error when assigning to an array of contracts or functi…
pgebal Aug 9, 2024
da68f49
Dont allow initialization of transient storage state variables
matheusaaguiar Aug 6, 2024
44e008b
Yul: remove deprecated dialect
clonker Aug 7, 2024
2d01e62
Merge pull request #15210 from ToonVanHove/doc-fix
matheusaaguiar Aug 12, 2024
dd64adf
Merge pull request #15317 from ethereum/RestrictTransientStorageVaria…
ekpyron Aug 12, 2024
60530b8
Merge pull request #15319 from ethereum/remove_yul_deprecated_dialect
ekpyron Aug 12, 2024
6d3340a
Merge pull request #15309 from ethereum/fix-wrong-native-locations-in…
ekpyron Aug 12, 2024
61d1d9d
fix typo in micropayment.rst
Allarious Aug 12, 2024
1c0b2f5
Yul: Remove EVMDialectTyped
clonker Aug 13, 2024
6512722
Yul tests: Adapt or remove EVMDialectTyped tests
clonker Aug 13, 2024
40e05d6
Yul optimizer tests: Update test expectations to use evm instead of e…
clonker Aug 13, 2024
d7bfea0
Yul syntax tests: Update test expectations to use evm instead of evmT…
clonker Aug 13, 2024
83895d0
Error codes: Whitelist 1733 and 9547 as they rely on Yul types (which…
clonker Aug 13, 2024
f90d4c0
Merge pull request #15328 from Allarious/patch-2
nikola-matic Aug 13, 2024
63d87a2
Use submodules for some dependencies.
aarlt Jun 12, 2024
5647d99
Merge pull request #15329 from ethereum/remove_evm_typed
ekpyron Aug 13, 2024
3de3c7b
Bump evmone to v0.12.0 in CI
nikola-matic Aug 9, 2024
3d3b78e
Fix UB introduced by casting difference of two unsigneds to signed
clonker Aug 14, 2024
add191d
Merge pull request #15333 from ethereum/yul_evm_code_transform_ub
clonker Aug 14, 2024
da1bc0b
SMTChecker: Add setup of z3 to SMTSolverCommand
blishko Aug 14, 2024
363274d
Update ContractCompiler.cpp
lmanini Aug 15, 2024
fa781b7
Remove cmake dependency and bump boost in ossfuzz
nikola-matic Aug 13, 2024
1c21f83
Add ubuntu2404 docker image
nikola-matic Aug 14, 2024
314b145
Merge pull request #15334 from ethereum/smt-z3-command
ekpyron Aug 15, 2024
3da2cd9
Merge pull request #15246 from meetmangukiya/stack-too-deep-yul-srclo…
ekpyron Aug 15, 2024
b9b1d08
Pass vector of SMT expressions to SymbolicFunctionVariable function
zo9999 Apr 3, 2024
fc0fb95
Merge pull request #14981 from zo9999/fix-signature-of-function-opera…
blishko Aug 15, 2024
60b2b03
Merge pull request #15335 from lmanini/patch-2
ekpyron Aug 15, 2024
a197cbe
Add back CLion build directories to .gitignore.
ekpyron Aug 18, 2024
cae1dec
Merge pull request #15342 from ethereum/gitignore
clonker Aug 19, 2024
b172de5
SMTChecker: Inline let expressions in solvers' models
blishko Aug 15, 2024
c7adde3
Merge pull request #15195 from ethereum/some_dependencies_as_git_subm…
aarlt Aug 19, 2024
98b22f8
Merge pull request #15336 from ethereum/smt-lets
blishko Aug 19, 2024
3b532e4
docs: add the onlyBuyer modifier in function confirmPurchase()
DestinyWei Oct 22, 2023
91076d6
Update safe-remote.rst
mehtavishwa30 Aug 19, 2024
020bde9
SMTChecker: Translate bitvector constants properly
blishko Jul 20, 2024
3f74db6
Merge pull request #15344 from ethereum/revert-docs-pr
ekpyron Aug 19, 2024
06d2bde
Object compiler tests for nested identical objects
cameel Jul 22, 2024
8f237de
Object: Add missing `override` specifier to overridden methods
cameel Jun 12, 2024
6654e87
ObjectDebugData: Expose a helper for formatting the @use-src comment
cameel Jun 12, 2024
27daf26
Caching of optimized IR
cameel Jul 31, 2024
5c7fc04
OptimizedIRCachingTest
cameel Jul 30, 2024
20857af
Merge pull request #15267 from ethereum/caching-optimized-ir
clonker Aug 19, 2024
f6aee35
Fix some submodule related problems.
aarlt Aug 19, 2024
c6075d5
Merge pull request #15346 from ethereum/fix_submodules
ekpyron Aug 19, 2024
05c96ce
Merge pull request #15345 from ethereum/smt-parse-constants
ekpyron Aug 19, 2024
b6ab054
Update fmtlib to v11.0.2.
aarlt Jul 29, 2024
90c0fbb
Merge pull request #15305 from ethereum/version_bump_submodules
aarlt Aug 20, 2024
20fa893
More precise calculations when evaluating how many bytes immutables r…
matheusaaguiar Aug 23, 2024
0e80fbf
prep: Extend `StandardCompiler` settings with `eofVersion` flag. Fix …
rodiazet Jul 22, 2024
5414520
prep: Change `toBigEndian` interface to support rvalue ref.
rodiazet Jul 22, 2024
6437d7e
Merge pull request #15355 from ipsilon/eof-prep-0
ekpyron Aug 23, 2024
2b7274c
Merge pull request #15357 from ipsilon/eof-prep-2
ekpyron Aug 23, 2024
b8d4798
Merge pull request #15354 from ethereum/fixImmutableImpreciseBytesReq…
ekpyron Aug 23, 2024
431911d
Merge pull request #15321 from ethereum/bump-evmc-and-evmone-to-12
nikola-matic Aug 26, 2024
9e752f5
chore: update array_storage_index_zeroed_test.sol
eltociear Aug 26, 2024
a9b9c7d
Merge pull request #15360 from eltociear/patch-3
cameel Aug 27, 2024
b8373e9
CI: explicitly add numpy to LSP test dependencies on windows
clonker Aug 28, 2024
de5e3b8
Merge pull request #15366 from ethereum/lsp_testing_win
clonker Aug 28, 2024
47a715f
Yul: Remove boolType and defaultType from dialect
clonker Aug 14, 2024
f5174e7
Yul: Remove dialect and printing mode from AsmPrinter
clonker Aug 14, 2024
0d0f277
Yul: Remove types from AST
clonker Aug 15, 2024
fbaa505
Yul: Builtins now record number of args and rets instead of respectiv…
clonker Aug 16, 2024
4938075
Yul: Improve variable naming and type error message wording, update t…
clonker Aug 27, 2024
664ee23
Merge pull request #15332 from ethereum/remove_yul_dialect_types
clonker Aug 28, 2024
c5b1ac3
Fix showProvedSafe flag and JSON key name
ardislu Jul 27, 2024
82a3071
SMTChecker: Introduce first draft of Z3CHCSmtlib2Interface
blishko Aug 19, 2024
d5cdf07
Merge pull request #15348 from ethereum/smt-z3smtlib-first-draft
blishko Aug 28, 2024
9e8369f
Merge pull request #15304 from ardislu/fix-show-proved-safe
nikola-matic Aug 28, 2024
4aff997
Implementation of direct SSA CFG generation.
ekpyron Aug 20, 2024
d9116dc
Yul: Split SSA CFG into separate graphs for functions
r0qs Aug 21, 2024
7d87b63
Yul: Dot output of SSA CFG
clonker Aug 9, 2024
80533d8
Convert Yul CFG to Json
r0qs May 31, 2024
b167c27
prep: Pass `_eofVersion` to `libevmasm/Assembly` class
rodiazet Aug 26, 2024
1854186
eof: Remove eof experimental test. It should be reintroduced later.
rodiazet Aug 28, 2024
92a74ed
SMTChecker: Introduce helper struct for query result
blishko Jul 20, 2024
9fb67f0
Merge pull request #15369 from ethereum/smt-helper-struct
blishko Aug 29, 2024
5b1704b
Merge pull request #15359 from ethereum/ssaCfg
ekpyron Aug 29, 2024
ae1c3d4
Merge pull request #15180 from ethereum/export-yul-cfg-json
clonker Aug 29, 2024
03880e4
Updating copyright year to 2024
githubfromgui Feb 13, 2024
d7865f1
Do not suppress the original message from unexpected AssemblyExceptions
cameel Aug 30, 2024
7ad125f
Merge pull request #15375 from ethereum/propagate-assembly-exception-…
matheusaaguiar Aug 30, 2024
2f46323
Bump min Boost dependency to 1.67 on Linux and macOS
cameel Aug 30, 2024
40e005b
Merge pull request #15376 from ethereum/fix-boost-min-version
cameel Aug 30, 2024
ad969e2
Hide undocumented yul export cfg option
r0qs Sep 2, 2024
b30f1e2
Create opRetro.json
mehtavishwa30 Sep 2, 2024
1c4da04
Merge pull request #15385 from ethereum/hide-undocumented-experimenta…
ekpyron Sep 2, 2024
1673c5c
Introduce ubuntu2404 clang docker image
nikola-matic Aug 29, 2024
c1d33a0
Merge pull request #15386 from ethereum/op-grant-verification
ekpyron Sep 2, 2024
9c43cc5
Merge pull request #15370 from ethereum/add-ubuntu2404-clang-image
r0qs Sep 2, 2024
b3ba1b2
Rename opRetro.json to funding.json
mehtavishwa30 Sep 2, 2024
168850b
Merge pull request #15238 from ethereum/relaxMemorySafety
ekpyron Sep 2, 2024
79f05ca
Mark PROFILE_OPTIMIZER_STEPS CMake option as advanced
cameel Aug 30, 2024
b52094b
Remove nlohmann JSON version check
cameel Aug 30, 2024
01a01eb
Clearer names and descriptions for advanced CMake options
cameel Aug 30, 2024
3184534
Improve names/descriptions of Z3-related CMake variables
cameel Sep 2, 2024
d6f9519
Merge pull request #15377 from ethereum/tweak-cmake-options
cameel Sep 2, 2024
9b33e00
Merge pull request #15356 from ipsilon/eof-prep-1
ekpyron Sep 3, 2024
3b04038
Disable failing import tests introduced by boost upgrade
nikola-matic Sep 3, 2024
bf54bdf
Merge pull request #15394 from ethereum/disable-failing-filesystem-tests
ekpyron Sep 3, 2024
3f6f2d3
Fix Yul stack output using standard json in the presence of warnings.
ekpyron Sep 3, 2024
3e5060c
Remove mantic from release PPA script (obsolete).
ekpyron Sep 3, 2024
1207b48
Merge pull request #15396 from ethereum/fixYulStackForWarnings
ekpyron Sep 3, 2024
c14977c
Merge pull request #15393 from ethereum/removeMantic
ekpyron Sep 3, 2024
b92cabd
Sort changelog for the upcoming release
nikola-matic Sep 3, 2024
3c3da63
Merge pull request #15395 from ethereum/sort-changelog-and-fix-incons…
ekpyron Sep 3, 2024
830ec2c
Set changelog release date
nikola-matic Sep 4, 2024
40a35a0
Merge pull request #15399 from ethereum/set-changelog-release-date
nikola-matic Sep 4, 2024
7e5836a
Set version to 0.8.28
nikola-matic Sep 4, 2024
09e9aa6
Merge pull request #15400 from ethereum/set-version-to-0-8-28
nikola-matic Sep 4, 2024
a298438
We no longer use a `release` branch
cameel Sep 2, 2024
ee08a75
docker_deploy_manual.sh: Make script more configurable to allow testi…
cameel Sep 2, 2024
7cca807
b_alpine_docker nightly job
cameel Sep 2, 2024
32b8b41
docker_deploy_manual.sh: Switch to plain docker build output
cameel Sep 2, 2024
7f582e4
Add ContiguousDisjointSet datastructure
clonker Sep 5, 2024
fc2e90f
Add topological sort implementation for forward SSACFG
clonker Sep 9, 2024
40758c3
Merge pull request #15389 from ethereum/ci-job-testing-docker-build
cameel Sep 9, 2024
13fe5ba
Replace errors/warning/info empty check with proper errors only check
matheusaaguiar Jun 18, 2024
c446d3b
SMTChecker: Fix parsing of model values in BMC
blishko Aug 22, 2024
a204f47
SMTChecker: Prepare Z3 SMT-LIB interface for BMC engine
blishko Aug 29, 2024
ac81d42
Merge pull request #15203 from ethereum/replaceErrorsEmptyWithHasErrors
cameel Sep 9, 2024
62909de
Merge pull request #15371 from ethereum/smt-prepare-bmc
blishko Sep 9, 2024
6f548be
Upgrade jobs to run on Ubuntu 2404
nikola-matic Sep 9, 2024
6a69527
xSMTChecker: Fix SMT logic error when assigning to an array of addresses
pgebal Sep 9, 2024
e629a03
Merge pull request #15420 from pgebal/smt-checker/fix-arrays-of-address
blishko Sep 10, 2024
9d7cc42
legacy codegen transient storage support for state variables
matheusaaguiar Jul 8, 2024
6ef580c
Merge pull request #15257 from ethereum/transientStorageLegacyCodegen
nikola-matic Sep 10, 2024
9df0379
Merge pull request #15418 from ethereum/liveness-disjoint-set
clonker Sep 11, 2024
4fca0b6
Merge pull request #15422 from ethereum/run-jobs-on-ubuntu-2404
nikola-matic Sep 11, 2024
668adbe
Remove STRICT_NLOHMANN_JSON_VERSION_CHECK leftover.
aarlt Sep 9, 2024
4049f51
Merge pull request #15421 from ethereum/remove_leftover
cameel Sep 11, 2024
16b2447
Upgrade jobs to run on Ubuntu 2404
nikola-matic Sep 9, 2024
1d58415
Update `evmc to` `12.0.0` and `evmone` to `0.12.0`
rodiazet Sep 13, 2024
322d656
Make it easier for users to discover that copying arrays and structs …
mehtavishwa30 Sep 16, 2024
2e6a2d2
Add SSACFG loop nesting forest
clonker Sep 9, 2024
2b0d08c
Apostrophe added in README.md (#15431)
anandhuRaveendran Sep 17, 2024
a92a51b
Merge pull request #15320 from ipsilon/evmc-evmone-12
ekpyron Sep 17, 2024
154fc1d
Merge pull request #15419 from ethereum/liveness-loop-nesting-forest
matheusaaguiar Sep 17, 2024
963d70b
Yul: Add toDot to SSACFG
clonker Sep 18, 2024
573d7d8
Yul: Add toDot to ControlFlow
clonker Sep 18, 2024
515f8ab
Bump all CI jobs to use Ubuntu 22.04 images
nikola-matic Sep 18, 2024
db40301
Merge pull request #15438 from ethereum/ssaCfg-todot
clonker Sep 18, 2024
38fd087
Fix pip issues for 24.04
nikola-matic Sep 18, 2024
10f2e60
Yul: Fix removal of trivial phi functions in SSA CFG Builder
clonker Sep 12, 2024
5fc7269
Remove 22.04 images and docker buildpack deps
nikola-matic Sep 18, 2024
ba4d768
Merge pull request #15437 from ethereum/bump-all-jobs-to-2404
cameel Sep 18, 2024
7e9ac48
SSACFGBuilder: Only eliminate trivial phi of sealed blocks and add re…
clonker Sep 17, 2024
c4a199a
SSACFGBuilder: clean up tryRemoveTrivialPhi
clonker Sep 19, 2024
7d33151
Merge pull request #15429 from ethereum/ssaCfg-fix-trivial-phi-fct-re…
ekpyron Sep 19, 2024
55f746b
eof: Introduce EOF container format support in `Assembly::assemble` (…
rodiazet Sep 19, 2024
603d9de
eof: pass EOF flag to `Assembly::fromJSON`
rodiazet Sep 20, 2024
bc9f3e0
eof: Add container format test
rodiazet Sep 20, 2024
33b67f0
Merge pull request #15367 from ipsilon/eof-prep-3
cameel Sep 20, 2024
1ba4349
Rename Standard JSON output selection tests CLI to match the naming c…
cameel Sep 23, 2024
3452ba0
More CLI tests for output selection in Standard JSON
cameel Sep 23, 2024
60cea4d
Merge pull request #15447 from ethereum/output-selection-tests
cameel Sep 23, 2024
9b4a07b
SSACFG: Fix canContinue in user-defined function calls
clonker Sep 23, 2024
4461699
SSACFG: Handle nested function definitions
clonker Sep 24, 2024
bd73354
Merge pull request #15448 from ethereum/ssaCfg-fixCanContinue
clonker Sep 24, 2024
47ba76f
benchmarks: Move shared code using /usr/bin/time into a helper with J…
cameel Sep 24, 2024
8bb279b
benchmarks: Switch to displaying CPU time rather than wall clock time…
cameel Sep 24, 2024
95534b6
benchmarks: Show peak memory usage
cameel Sep 24, 2024
9bf850b
benchmarks: Cosmetic tweaks to how results are displayed
cameel Sep 24, 2024
545cab3
eof: Refactor `assemble` functions in `evmasm::Assembly``
rodiazet Sep 25, 2024
ad53637
Merge pull request #15450 from ethereum/memory-usage-in-benchmarks
cameel Sep 25, 2024
4b285f1
Merge pull request #15446 from ipsilon/eof-prep-4-refactor
cameel Sep 25, 2024
09c48f5
eof: Support EOF in `assemblyStream`
rodiazet Sep 24, 2024
9e65fff
eof: Support EOF in `computeSourceMapping`
rodiazet Sep 24, 2024
415d2fc
eof: strict asm output test update
rodiazet Sep 25, 2024
3ee5f2d
Merge pull request #15449 from ipsilon/eof-assembly-print-output
cameel Sep 25, 2024
cffc4f8
Add missing ASAN runtime libraries
r0qs Sep 25, 2024
4627827
Bump ubuntu 24.04 clang image
r0qs Sep 25, 2024
2f58ee3
Merge pull request #15454 from ethereum/add-missing-asan-rt-libraries
r0qs Sep 26, 2024
fd6a655
Merge pull request #15455 from ethereum/bump-clang-docker
r0qs Sep 26, 2024
b705136
Do not treat all warnings as errors when building with sanitizers.
r0qs Sep 25, 2024
6f2ab08
Merge pull request #15453 from ethereum/disable-pedantic-asan-builds
r0qs Sep 26, 2024
5643e8e
Remove a few unused YulStack imports
cameel Sep 25, 2024
372dab4
Store a reference to a Solidity source provider in YulStack
cameel Sep 25, 2024
4216aa7
Fix shifted native source locations in Yul AST in presence of code sn…
cameel Sep 25, 2024
f369cdd
Merge pull request #15457 from ethereum/fix-code-snippets-shifting-yu…
cameel Sep 26, 2024
578e1bb
CompilerStack: Helper for Yul parsing
cameel Sep 24, 2024
9ccc44a
CompilerStack: Yul AST generation only on demand
cameel Sep 24, 2024
26d5b3f
Merge pull request #15451 from ethereum/compiler-stack-do-not-store-s…
cameel Sep 27, 2024
5cbfd0d
Via-IR code-gen for transient state variables
nikola-matic Jul 22, 2024
0968a33
Update old tests
nikola-matic Sep 13, 2024
8dfba60
New tests
nikola-matic Sep 16, 2024
6398cb2
Changelog
nikola-matic Sep 16, 2024
98fdc44
Fix missing underscore in Yul function names
nikola-matic Sep 25, 2024
4ba39cb
Merge pull request #15292 from ethereum/transient-storage-for-value-t…
nikola-matic Sep 27, 2024
b540741
Transient storage docs
matheusaaguiar Sep 5, 2024
146e2bc
outputPerformanceMetrics(): Add missing std:: prefixes
cameel Sep 30, 2024
c6df887
Fix evmone MacOS link
nikola-matic Sep 30, 2024
542f7a5
Merge pull request #15465 from ethereum/missing-std-prefix-in-perform…
nikola-matic Sep 30, 2024
891b7c8
Do not cache instances of Compiler in CompilerStack
cameel Sep 26, 2024
3c5e46b
CompilerStack: Do not cache the JSON representation of generated sources
cameel Sep 26, 2024
786eb15
Merge pull request #15466 from ethereum/fix-evmone-link
clonker Sep 30, 2024
bc9342a
Merge pull request #15460 from ethereum/compiler-stack-do-not-store-c…
cameel Sep 30, 2024
a8a679d
Merge pull request #15441 from ethereum/ssaCfg-trivial-phi-cleanup
ekpyron Sep 30, 2024
ba6dee1
Merge pull request #15409 from ethereum/transientStorageDocs
nikola-matic Oct 1, 2024
6bee17d
CompilerStack: Add missing members to reset()
cameel Sep 16, 2024
a4fa886
StandardCompiler: Fix bad `if` indent triggering a warning
cameel Sep 16, 2024
a9d9143
Pass selected outputs down to CompilerStack to avoid generating them …
cameel Sep 16, 2024
885c916
Merge pull request #15433 from ethereum/compiler-stack-per-contract-o…
cameel Oct 1, 2024
8d8ac1c
eof: Pass `eofVersion` flag to `EVMDialect`
rodiazet Oct 1, 2024
4ab3e36
Merge pull request #15467 from ipsilon/eof-pass-flag-to-evm-dialect
cameel Oct 1, 2024
62dc597
Replace Hardhat with EDR in CI
fvictorio Sep 27, 2024
351922c
Merge pull request #15461 from fvictorio/replace-hardhat-with-edr-in-ci
ekpyron Oct 2, 2024
2b41846
cmake: remove USE_LD_GOLD option
clonker Oct 2, 2024
a458344
Merge pull request #15474 from ethereum/remove_use_ld_gold
ekpyron Oct 2, 2024
badd115
Avoid unnecessary copy in full inliner.
ekpyron Oct 2, 2024
39e5aef
Re-enable cxx20 job
nikola-matic Oct 2, 2024
d8f3790
Merge pull request #15476 from ethereum/inlinerDepthCopy
ekpyron Oct 2, 2024
256e952
Merge pull request #15475 from ethereum/re-enable-cxx20-job
ekpyron Oct 2, 2024
136fe38
Disable legacy presets in zeppelin external test
nikola-matic Oct 7, 2024
293bd7f
Fix broken flyout layout due to RTD addons upgrade
r0qs Oct 7, 2024
f847758
Fix "Edit on GitHub" button to always point to develop branch
r0qs Oct 7, 2024
8021374
Merge pull request #15484 from ethereum/disable-legacy-preset-in-zepp…
cameel Oct 7, 2024
e354f7b
fix changelog entry
matheusaaguiar Oct 7, 2024
8d4dc15
Fix github user and repo in RTD config for translation projects
r0qs Oct 7, 2024
0826887
Merge pull request #15485 from ethereum/rtd-docs-workaround
r0qs Oct 7, 2024
0e02c46
Merge pull request #15487 from ethereum/fixTransientStorageChangelogE…
nikola-matic Oct 7, 2024
3651f23
Use gold linker for ossfuzz, codecov, and cxx20 builds
clonker Oct 7, 2024
c7ff217
Bump ossfuzz to large resource class
clonker Oct 7, 2024
59be575
Merge pull request #15482 from ethereum/ninja
nikola-matic Oct 8, 2024
525381c
docs: fix broken links and typo
LMAO798 Sep 20, 2024
1a8efba
Update docs/contributing.rst
nikola-matic Oct 8, 2024
675e469
Merge pull request #15443 from LMAO798/develop
nikola-matic Oct 8, 2024
cdfb93e
Update functions.rst
nnsW3 Oct 8, 2024
c3bf567
Merge pull request #15488 from nnsW3/update
nikola-matic Oct 8, 2024
11395ad
CI: Remove nightly codecov job
clonker Oct 8, 2024
5f2b1bf
Docs: fix curly bracket language wikipedia anchor
clonker Oct 8, 2024
df4f264
Merge pull request #15489 from ethereum/remove_codecov_job
clonker Oct 8, 2024
fde19a5
Merge pull request #15490 from ethereum/docs_wiki_curly_anchor
clonker Oct 8, 2024
2a2d71d
English documentation updates up to v0.8.27-125-gfde19a5b1 (2024-10-09)
soldocsbot Oct 9, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Move optimized IR reparsing from CompilerStack to YulStack
- This makes it apply to yul compilation as well.
- Also fixes warnings being reported again when optimizing IR.
cameel authored and clonker committed Aug 7, 2024
commit fe4c52e3357ba92da81521c0ad200fa5294ada5f
3 changes: 2 additions & 1 deletion Changelog.md
Original file line number Diff line number Diff line change
@@ -28,8 +28,9 @@ Bugfixes:
* SMTChecker: Fix formatting of unary minus expressions in invariants.
* SMTChecker: Fix internal compiler error when reporting proved targets for BMC engine.
* TypeChecker: Fix segfault when assigning nested tuple to tuple.
* Yul AST: Fix ``nativeSrc`` attributes in optimized IR AST referring to locations in unoptimized IR.
* Yul IR Code Generation: Deterministic order of Yul subobjects.
* Yul Optimizer: Fix Yul source locations always referring to unoptimized source, even in optimized outputs.
* Yul Optimizer: Fix warnings being generated twice when there are no errors.
* Yul Optimizer: Name simplification could lead to forbidden identifiers with a leading and/or trailing dot, e.g., ``x._`` would get simplified into ``x.``.
* Yul Parser: Fix segfault when parsing very long location comments.

47 changes: 17 additions & 30 deletions libsolidity/interface/CompilerStack.cpp
Original file line number Diff line number Diff line change
@@ -1488,39 +1488,26 @@ void CompilerStack::generateIR(ContractDefinition const& _contract, bool _unopti
);
}

auto const parseYul = [&](std::string const& _irSource) {
YulStack stack(
m_evmVersion,
m_eofVersion,
YulStack::Language::StrictAssembly,
m_optimiserSettings,
m_debugInfoSelection
);
bool yulAnalysisSuccessful = stack.parseAndAnalyze("", _irSource);
solAssert(
yulAnalysisSuccessful,
_irSource + "\n\n"
"Invalid IR generated:\n" +
langutil::SourceReferenceFormatter::formatErrorInformation(stack.errors(), stack) + "\n"
);
return stack;
};

{
YulStack stack = parseYul(compiledContract.yulIR);
compiledContract.yulIRAst = stack.astJson();
if (!_unoptimizedOnly)
{
stack.optimize();
compiledContract.yulIROptimized = stack.print(this);
}
}
YulStack stack(
m_evmVersion,
m_eofVersion,
YulStack::Language::StrictAssembly,
m_optimiserSettings,
m_debugInfoSelection
);
bool yulAnalysisSuccessful = stack.parseAndAnalyze("", compiledContract.yulIR);
solAssert(
yulAnalysisSuccessful,
compiledContract.yulIR + "\n\n"
"Invalid IR generated:\n" +
SourceReferenceFormatter::formatErrorInformation(stack.errors(), stack) + "\n"
);

compiledContract.yulIRAst = stack.astJson();
if (!_unoptimizedOnly)
{
// Optimizer does not maintain correct native source locations in the AST.
// We can work around it by regenerating the AST from scratch from optimized IR.
YulStack stack = parseYul(compiledContract.yulIROptimized);
stack.optimize();
compiledContract.yulIROptimized = stack.print(this);
compiledContract.yulIROptimizedAst = stack.astJson();
}
}
33 changes: 32 additions & 1 deletion libyul/YulStack.cpp
Original file line number Diff line number Diff line change
@@ -30,6 +30,7 @@
#include <libyul/optimiser/Suite.h>
#include <libevmasm/Assembly.h>
#include <liblangutil/Scanner.h>
#include <liblangutil/SourceReferenceFormatter.h>
#include <libsolidity/interface/OptimiserSettings.h>

#include <boost/algorithm/string.hpp>
@@ -117,7 +118,10 @@ void YulStack::optimize()

m_stackState = Parsed;
optimize(*m_parserResult, true);
yulAssert(analyzeParsed(), "Invalid source code after optimization.");

// Optimizer does not maintain correct native source locations in the AST.
// We can work around it by regenerating the AST from scratch from optimized IR.
reparse();
}
catch (UnimplementedFeatureError const& _error)
{
@@ -241,6 +245,33 @@ void YulStack::optimize(Object& _object, bool _isCreation)
);
}

void YulStack::reparse()
{
yulAssert(m_parserResult);
yulAssert(m_charStream);

// NOTE: Without passing in _soliditySourceProvider, printed debug info will not include code
// snippets, but it does not matter - we'll still get the same AST after we parse it. Snippets
// are not stored in the AST and the other info that is (location, AST ID, etc) will still be present.
std::string source = print(nullptr /* _soliditySourceProvider */);

YulStack cleanStack(m_evmVersion, m_eofVersion, m_language, m_optimiserSettings, m_debugInfoSelection);
bool reanalysisSuccessful = cleanStack.parseAndAnalyze(m_charStream->name(), source);
yulAssert(
reanalysisSuccessful,
source + "\n\n"
"Invalid IR generated:\n" +
SourceReferenceFormatter::formatErrorInformation(cleanStack.errors(), cleanStack) + "\n"
);

m_stackState = AnalysisSuccessful;
m_parserResult = std::move(cleanStack.m_parserResult);

// NOTE: We keep the char stream, and errors, even though they no longer match the object,
// because it's the original source that matters to the user. Optimized code may have different
// locations and fewer warnings.
}

MachineAssemblyObject YulStack::assemble(Machine _machine)
{
yulAssert(m_stackState >= AnalysisSuccessful);
7 changes: 7 additions & 0 deletions libyul/YulStack.h
Original file line number Diff line number Diff line change
@@ -152,6 +152,13 @@ class YulStack: public langutil::CharStreamProvider

void optimize(yul::Object& _object, bool _isCreation);

/// Prints the Yul object stored internally and parses it again.
/// This ensures that the debug info in the AST matches the source that printing would produce
/// rather than the initial source.
/// @warning Does not update the error list or the original source (@a m_charStream) to make
/// it possible to report errors to the user even after the optimization has been performed.
void reparse();

void reportUnimplementedFeatureError(langutil::UnimplementedFeatureError const& _error);

Language m_language = Language::Assembly;
92 changes: 46 additions & 46 deletions test/cmdlineTests/ast_ir/output

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions test/cmdlineTests/linking_strict_assembly/output
Original file line number Diff line number Diff line change
@@ -16,11 +16,11 @@ Binary representation:
7312345678901234567890123456789012345678905f5500

Text representation:
/* "linking_strict_assembly/input.yul":44:79 */
/* "linking_strict_assembly/input.yul":58:93 */
linkerSymbol("f919ba91ac99f96129544b80b9516b27a80e376b9dc693819d0b18b7e0395612")
/* "linking_strict_assembly/input.yul":95:96 */
/* "linking_strict_assembly/input.yul":113:114 */
0x00
/* "linking_strict_assembly/input.yul":88:103 */
/* "linking_strict_assembly/input.yul":106:121 */
sstore
/* "linking_strict_assembly/input.yul":22:109 */
/* "linking_strict_assembly/input.yul":22:137 */
stop
Original file line number Diff line number Diff line change
@@ -18,19 +18,19 @@ Binary representation:
731111111111111111111111111111111111111111732222222222222222222222222222222222222222905f5560015500

Text representation:
/* "linking_strict_assembly_same_library_name_different_files/input.yul":45:75 */
/* "linking_strict_assembly_same_library_name_different_files/input.yul":59:89 */
linkerSymbol("f3ffc10c396a7cc41ae954b050792839d20947bf73497d30c49a9fda1ea477ec")
/* "linking_strict_assembly_same_library_name_different_files/input.yul":97:127 */
/* "linking_strict_assembly_same_library_name_different_files/input.yul":115:145 */
linkerSymbol("c3523432985587641d17c68161d2f700c57aaf4ed21cda4f25d76193c831f97f")
/* "linking_strict_assembly_same_library_name_different_files/input.yul":136:152 */
/* "linking_strict_assembly_same_library_name_different_files/input.yul":158:174 */
swap1
/* "linking_strict_assembly_same_library_name_different_files/input.yul":143:144 */
/* "linking_strict_assembly_same_library_name_different_files/input.yul":165:166 */
0x00
/* "linking_strict_assembly_same_library_name_different_files/input.yul":136:152 */
/* "linking_strict_assembly_same_library_name_different_files/input.yul":158:174 */
sstore
/* "linking_strict_assembly_same_library_name_different_files/input.yul":168:169 */
/* "linking_strict_assembly_same_library_name_different_files/input.yul":194:195 */
0x01
/* "linking_strict_assembly_same_library_name_different_files/input.yul":161:177 */
/* "linking_strict_assembly_same_library_name_different_files/input.yul":187:203 */
sstore
/* "linking_strict_assembly_same_library_name_different_files/input.yul":22:183 */
/* "linking_strict_assembly_same_library_name_different_files/input.yul":22:219 */
stop
Original file line number Diff line number Diff line change
@@ -18,19 +18,19 @@ Binary representation:
73123456789012345678901234567890123456789073__$c3523432985587641d17c68161d2f700c5$__905f5560015500

Text representation:
/* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":45:75 */
/* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":59:89 */
linkerSymbol("f3ffc10c396a7cc41ae954b050792839d20947bf73497d30c49a9fda1ea477ec")
/* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":97:127 */
/* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":115:145 */
linkerSymbol("c3523432985587641d17c68161d2f700c57aaf4ed21cda4f25d76193c831f97f")
/* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":136:152 */
/* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":158:174 */
swap1
/* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":143:144 */
/* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":165:166 */
0x00
/* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":136:152 */
/* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":158:174 */
sstore
/* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":168:169 */
/* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":194:195 */
0x01
/* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":161:177 */
/* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":187:203 */
sstore
/* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":22:183 */
/* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":22:219 */
stop
Original file line number Diff line number Diff line change
@@ -18,19 +18,19 @@ Binary representation:
73123456789012345678901234567890123456789073__$fb58009a6b1ecea3b9d99bedd645df4ec3$__905f5560015500

Text representation:
/* "linking_strict_assembly_unresolved_references/input.yul":45:81 */
/* "linking_strict_assembly_unresolved_references/input.yul":59:95 */
linkerSymbol("05b0326038374a21e0895480a58bda0768cdcc04c8d18f154362d1ca5223d245")
/* "linking_strict_assembly_unresolved_references/input.yul":103:139 */
/* "linking_strict_assembly_unresolved_references/input.yul":121:157 */
linkerSymbol("fb58009a6b1ecea3b9d99bedd645df4ec308f17bc0087e5f39d078f77f809177")
/* "linking_strict_assembly_unresolved_references/input.yul":148:164 */
/* "linking_strict_assembly_unresolved_references/input.yul":170:186 */
swap1
/* "linking_strict_assembly_unresolved_references/input.yul":155:156 */
/* "linking_strict_assembly_unresolved_references/input.yul":177:178 */
0x00
/* "linking_strict_assembly_unresolved_references/input.yul":148:164 */
/* "linking_strict_assembly_unresolved_references/input.yul":170:186 */
sstore
/* "linking_strict_assembly_unresolved_references/input.yul":180:181 */
/* "linking_strict_assembly_unresolved_references/input.yul":206:207 */
0x01
/* "linking_strict_assembly_unresolved_references/input.yul":173:189 */
/* "linking_strict_assembly_unresolved_references/input.yul":199:215 */
sstore
/* "linking_strict_assembly_unresolved_references/input.yul":22:195 */
/* "linking_strict_assembly_unresolved_references/input.yul":22:231 */
stop
32 changes: 16 additions & 16 deletions test/cmdlineTests/object_compiler/output
Original file line number Diff line number Diff line change
@@ -26,40 +26,40 @@ Binary representation:
335f55600880600d5f395ff3fe5f545f5260205ff3

Text representation:
/* "object_compiler/input.yul":128:136 */
/* "object_compiler/input.yul":65:73 */
caller
/* "object_compiler/input.yul":125:126 */
/* "object_compiler/input.yul":62:63 */
0x00
/* "object_compiler/input.yul":118:137 */
/* "object_compiler/input.yul":55:74 */
sstore
/* "object_compiler/input.yul":240:259 */
/* "object_compiler/input.yul":97:116 */
dataSize(sub_0)
/* "object_compiler/input.yul":217:238 */
/* "object_compiler/input.yul":141:162 */
dup1
dataOffset(sub_0)
/* "object_compiler/input.yul":125:126 */
/* "object_compiler/input.yul":138:139 */
0x00
/* "object_compiler/input.yul":205:260 */
/* "object_compiler/input.yul":129:167 */
codecopy
/* "object_compiler/input.yul":125:126 */
/* "object_compiler/input.yul":187:188 */
0x00
/* "object_compiler/input.yul":265:295 */
/* "object_compiler/input.yul":180:193 */
return
stop

sub_0: assembly {
/* "object_compiler/input.yul":397:398 */
/* "object_compiler/input.yul":294:295 */
0x00
/* "object_compiler/input.yul":391:399 */
/* "object_compiler/input.yul":288:296 */
sload
/* "object_compiler/input.yul":397:398 */
/* "object_compiler/input.yul":285:286 */
0x00
/* "object_compiler/input.yul":381:400 */
/* "object_compiler/input.yul":278:297 */
mstore
/* "object_compiler/input.yul":417:421 */
/* "object_compiler/input.yul":324:328 */
0x20
/* "object_compiler/input.yul":397:398 */
/* "object_compiler/input.yul":321:322 */
0x00
/* "object_compiler/input.yul":407:422 */
/* "object_compiler/input.yul":314:329 */
return
}
142 changes: 71 additions & 71 deletions test/cmdlineTests/standard_irOptimized_ast_requested/output.json

Large diffs are not rendered by default.

10 changes: 5 additions & 5 deletions test/cmdlineTests/standard_yul/output.json
Original file line number Diff line number Diff line change
@@ -3,17 +3,17 @@
"A": {
"object": {
"evm": {
"assembly": " /* \"A\":38:39 */
"assembly": " /* \"A\":99:100 */
0x00
/* \"A\":11:19 */
/* \"A\":60:68 */
dup1
dup1
mload
/* \"A\":27:36 */
/* \"A\":88:97 */
add
/* \"A\":20:40 */
/* \"A\":81:101 */
sstore
/* \"A\":0:42 */
/* \"A\":27:117 */
stop
",
"bytecode": {
10 changes: 5 additions & 5 deletions test/cmdlineTests/standard_yul_object/output.json
Original file line number Diff line number Diff line change
@@ -3,16 +3,16 @@
"A": {
"NamedObject": {
"evm": {
"assembly": " /* \"A\":80:81 */
"assembly": " /* \"A\":118:119 */
0x00
/* \"A\":39:61 */
/* \"A\":65:87 */
dup1
data_4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45
/* \"A\":69:78 */
/* \"A\":107:116 */
add
/* \"A\":62:82 */
/* \"A\":100:120 */
sstore
/* \"A\":28:84 */
/* \"A\":32:136 */
stop
stop
data_4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45 616263
14 changes: 7 additions & 7 deletions test/cmdlineTests/standard_yul_object_name/output.json
Original file line number Diff line number Diff line change
@@ -3,24 +3,24 @@
"A": {
"NamedObject": {
"evm": {
"assembly": " /* \"A\":80:81 */
"assembly": " /* \"A\":118:119 */
0x00
/* \"A\":39:61 */
/* \"A\":65:87 */
dup1
data_4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45
/* \"A\":69:78 */
/* \"A\":107:116 */
add
/* \"A\":62:82 */
/* \"A\":100:120 */
sstore
/* \"A\":28:84 */
/* \"A\":32:136 */
stop
stop
data_4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45 616263

sub_0: assembly {
/* \"A\":147:148 */
/* \"A\":223:224 */
0x00
/* \"A\":137:149 */
/* \"A\":213:225 */
dup1
revert
}
8 changes: 4 additions & 4 deletions test/cmdlineTests/standard_yul_optimiserSteps/output.json
Original file line number Diff line number Diff line change
@@ -3,14 +3,14 @@
"A": {
"object": {
"evm": {
"assembly": " /* \"A\":38:39 */
"assembly": " /* \"A\":99:100 */
0x00
/* \"A\":11:19 */
/* \"A\":60:68 */
dup1
mload
/* \"A\":20:40 */
/* \"A\":81:101 */
sstore
/* \"A\":0:42 */
/* \"A\":27:117 */
stop
",
"bytecode": {
8 changes: 4 additions & 4 deletions test/cmdlineTests/standard_yul_optimized/output.json
Original file line number Diff line number Diff line change
@@ -3,14 +3,14 @@
"A": {
"object": {
"evm": {
"assembly": " /* \"A\":17:18 */
"assembly": " /* \"A\":48:49 */
0x00
/* \"A\":11:19 */
/* \"A\":38:46 */
dup1
mload
/* \"A\":20:40 */
/* \"A\":31:50 */
sstore
/* \"A\":0:42 */
/* \"A\":27:54 */
stop
",
"bytecode": {
14 changes: 7 additions & 7 deletions test/cmdlineTests/standard_yul_stack_opt/output.json
Original file line number Diff line number Diff line change
@@ -3,19 +3,19 @@
"A": {
"object": {
"evm": {
"assembly": " /* \"A\":16:17 */
"assembly": " /* \"A\":61:62 */
0x01
/* \"A\":27:28 */
/* \"A\":58:59 */
0x00
/* \"A\":20:32 */
/* \"A\":51:63 */
sstore
/* \"A\":50:51 */
/* \"A\":87:88 */
0x02
/* \"A\":61:63 */
/* \"A\":83:85 */
0x20
/* \"A\":54:67 */
/* \"A\":76:89 */
sstore
/* \"A\":0:72 */
/* \"A\":27:105 */
stop
"
}
12 changes: 6 additions & 6 deletions test/cmdlineTests/standard_yul_stack_opt_disabled/output.json
Original file line number Diff line number Diff line change
@@ -3,17 +3,17 @@
"A": {
"object": {
"evm": {
"assembly": " /* \"A\":16:17 */
"assembly": " /* \"A\":61:62 */
0x01
/* \"A\":27:28 */
/* \"A\":58:59 */
0x00
/* \"A\":20:32 */
/* \"A\":51:63 */
sstore
/* \"A\":50:51 */
/* \"A\":87:88 */
0x02
/* \"A\":61:63 */
/* \"A\":83:85 */
0x20
/* \"A\":54:67 */
/* \"A\":76:89 */
sstore
"
}
Original file line number Diff line number Diff line change
@@ -171,207 +171,207 @@ EVM assembly:
".auxdata": "1234abcd",
".code": [
{
"begin": 469,
"end": 486,
"begin": 468,
"end": 485,
"name": "PUSH",
"source": -1,
"value": "80"
},
{
"begin": 503,
"end": 517,
"begin": 502,
"end": 516,
"name": "DUP1",
"source": -1
},
{
"begin": 510,
"end": 512,
"begin": 509,
"end": 511,
"name": "PUSH",
"source": -1,
"value": "40"
},
{
"begin": 503,
"end": 517,
"begin": 502,
"end": 516,
"name": "MSTORE",
"source": -1
},
{
"begin": 563,
"end": 564,
"begin": 562,
"end": 563,
"name": "PUSH",
"source": -1,
"value": "4"
},
{
"begin": 547,
"end": 561,
"begin": 546,
"end": 560,
"name": "CALLDATASIZE",
"source": -1
},
{
"begin": 544,
"end": 565,
"begin": 543,
"end": 564,
"name": "LT",
"source": -1
},
{
"begin": 537,
"end": 566,
"begin": 536,
"end": 565,
"name": "ISZERO",
"source": -1
},
{
"begin": 534,
"end": 832,
"begin": 533,
"end": 831,
"name": "PUSH [tag]",
"source": -1,
"value": "1"
},
{
"begin": 534,
"end": 832,
"begin": 533,
"end": 831,
"name": "JUMPI",
"source": -1
},
{
"begin": 427,
"end": 885,
"begin": 426,
"end": 884,
"name": "tag",
"source": -1,
"value": "2"
},
{
"begin": 427,
"end": 885,
"begin": 426,
"end": 884,
"name": "JUMPDEST",
"source": -1
},
{
"begin": 859,
"end": 860,
"begin": 858,
"end": 859,
"name": "PUSH",
"source": -1,
"value": "0"
},
{
"begin": 849,
"end": 861,
"begin": 848,
"end": 860,
"name": "DUP1",
"source": -1
},
{
"begin": 849,
"end": 861,
"begin": 848,
"end": 860,
"name": "REVERT",
"source": -1
},
{
"begin": 583,
"end": 832,
"begin": 582,
"end": 831,
"name": "tag",
"source": -1,
"value": "1"
},
{
"begin": 583,
"end": 832,
"begin": 582,
"end": 831,
"name": "JUMPDEST",
"source": -1
},
{
"begin": 615,
"end": 616,
"begin": 614,
"end": 615,
"name": "PUSH",
"source": -1,
"value": "0"
},
{
"begin": 653,
"end": 669,
"begin": 652,
"end": 668,
"name": "CALLDATALOAD",
"source": -1
},
{
"begin": 648,
"end": 651,
"begin": 647,
"end": 650,
"name": "PUSH",
"source": -1,
"value": "E0"
},
{
"begin": 644,
"end": 670,
"begin": 643,
"end": 669,
"name": "SHR",
"source": -1
},
{
"begin": 696,
"end": 706,
"begin": 695,
"end": 705,
"name": "PUSH",
"source": -1,
"value": "B4F40C61"
},
{
"begin": 691,
"end": 814,
"begin": 690,
"end": 813,
"name": "SUB",
"source": -1
},
{
"begin": 583,
"end": 832,
"begin": 582,
"end": 831,
"name": "PUSH [tag]",
"source": -1,
"value": "2"
},
{
"begin": 691,
"end": 814,
"begin": 690,
"end": 813,
"name": "JUMPI",
"source": -1
},
{
"begin": 789,
"end": 791,
"begin": 788,
"end": 790,
"name": "PUSH",
"source": -1,
"value": "20"
},
{
"begin": 744,
"end": 752,
"begin": 743,
"end": 751,
"name": "SWAP1",
"source": -1
},
{
"begin": 750,
"end": 751,
"begin": 749,
"end": 750,
"name": "PUSH",
"source": -1,
"value": "1"
},
{
"begin": 744,
"end": 752,
"begin": 743,
"end": 751,
"name": "SLOAD",
"source": -1
},
{
"begin": 733,
"end": 753,
"begin": 732,
"end": 752,
"name": "DUP2",
"source": -1
},
{
"begin": 733,
"end": 753,
"begin": 732,
"end": 752,
"name": "MSTORE",
"source": -1
},
{
"begin": 778,
"end": 792,
"begin": 777,
"end": 791,
"name": "RETURN",
"source": -1
}
14 changes: 7 additions & 7 deletions test/cmdlineTests/strict_asm_ast_compact_json/output
Original file line number Diff line number Diff line change
@@ -5,12 +5,12 @@ AST:
{
"code": {
"block": {
"nativeSrc": "60:246:0",
"nativeSrc": "60:85:0",
"nodeType": "YulBlock",
"src": "-1:-1:0",
"statements": [
{
"nativeSrc": "60:246:0",
"nativeSrc": "70:69:0",
"nodeType": "YulBlock",
"src": "-1:-1:0",
"statements": [
@@ -19,15 +19,15 @@ AST:
"arguments": [
{
"kind": "number",
"nativeSrc": "122:2:0",
"nativeSrc": "121:2:0",
"nodeType": "YulLiteral",
"src": "60:41:0",
"type": "",
"value": "64"
},
{
"kind": "number",
"nativeSrc": "126:3:0",
"nativeSrc": "125:3:0",
"nodeType": "YulLiteral",
"src": "60:41:0",
"type": "",
@@ -36,15 +36,15 @@ AST:
],
"functionName": {
"name": "mstore",
"nativeSrc": "115:6:0",
"nativeSrc": "114:6:0",
"nodeType": "YulIdentifier",
"src": "60:41:0"
},
"nativeSrc": "115:15:0",
"nativeSrc": "114:15:0",
"nodeType": "YulFunctionCall",
"src": "60:41:0"
},
"nativeSrc": "115:15:0",
"nativeSrc": "114:15:0",
"nodeType": "YulExpressionStatement",
"src": "60:41:0"
}
2 changes: 1 addition & 1 deletion test/cmdlineTests/strict_asm_evm_version_byzantium/output
Original file line number Diff line number Diff line change
@@ -11,5 +11,5 @@ Binary representation:
00

Text representation:
/* "strict_asm_evm_version_byzantium/input.yul":0:2 */
/* "strict_asm_evm_version_byzantium/input.yul":27:34 */
stop
Original file line number Diff line number Diff line change
@@ -11,5 +11,5 @@ Binary representation:
00

Text representation:
/* "strict_asm_evm_version_constantinople/input.yul":0:2 */
/* "strict_asm_evm_version_constantinople/input.yul":27:34 */
stop
48 changes: 24 additions & 24 deletions test/cmdlineTests/strict_asm_optimizer_steps/output
Original file line number Diff line number Diff line change
@@ -27,58 +27,58 @@ Binary representation:
608060405234601357600c60185f39600c5ff35b5f80fdfe608060405236155f555f80fd

Text representation:
/* "strict_asm_optimizer_steps/input.yul":45:48 */
/* "strict_asm_optimizer_steps/input.yul":59:62 */
0x80
/* "strict_asm_optimizer_steps/input.yul":41:43 */
/* "strict_asm_optimizer_steps/input.yul":55:57 */
0x40
/* "strict_asm_optimizer_steps/input.yul":34:49 */
/* "strict_asm_optimizer_steps/input.yul":48:63 */
mstore
/* "strict_asm_optimizer_steps/input.yul":61:72 */
/* "strict_asm_optimizer_steps/input.yul":79:90 */
callvalue
/* "strict_asm_optimizer_steps/input.yul":58:89 */
/* "strict_asm_optimizer_steps/input.yul":76:107 */
tag_1
jumpi
/* "strict_asm_optimizer_steps/input.yul":138:162 */
/* "strict_asm_optimizer_steps/input.yul":160:184 */
dataSize(sub_0)
/* "strict_asm_optimizer_steps/input.yul":110:136 */
/* "strict_asm_optimizer_steps/input.yul":132:158 */
dataOffset(sub_0)
/* "strict_asm_optimizer_steps/input.yul":107:108 */
/* "strict_asm_optimizer_steps/input.yul":129:130 */
0x00
/* "strict_asm_optimizer_steps/input.yul":98:163 */
/* "strict_asm_optimizer_steps/input.yul":120:185 */
codecopy
/* "strict_asm_optimizer_steps/input.yul":182:206 */
/* "strict_asm_optimizer_steps/input.yul":208:232 */
dataSize(sub_0)
/* "strict_asm_optimizer_steps/input.yul":179:180 */
/* "strict_asm_optimizer_steps/input.yul":205:206 */
0x00
/* "strict_asm_optimizer_steps/input.yul":172:207 */
/* "strict_asm_optimizer_steps/input.yul":198:233 */
return
/* "strict_asm_optimizer_steps/input.yul":73:89 */
/* "strict_asm_optimizer_steps/input.yul":91:107 */
tag_1:
/* "strict_asm_optimizer_steps/input.yul":85:86 */
/* "strict_asm_optimizer_steps/input.yul":103:104 */
0x00
/* "strict_asm_optimizer_steps/input.yul":75:87 */
/* "strict_asm_optimizer_steps/input.yul":93:105 */
dup1
revert
stop

sub_0: assembly {
/* "strict_asm_optimizer_steps/input.yul":298:301 */
/* "strict_asm_optimizer_steps/input.yul":334:337 */
0x80
/* "strict_asm_optimizer_steps/input.yul":294:296 */
/* "strict_asm_optimizer_steps/input.yul":330:332 */
0x40
/* "strict_asm_optimizer_steps/input.yul":287:302 */
/* "strict_asm_optimizer_steps/input.yul":323:338 */
mstore
/* "strict_asm_optimizer_steps/input.yul":533:547 */
/* "strict_asm_optimizer_steps/input.yul":372:386 */
calldatasize
/* "strict_asm_optimizer_steps/input.yul":526:548 */
/* "strict_asm_optimizer_steps/input.yul":365:387 */
iszero
/* "strict_asm_optimizer_steps/input.yul":523:524 */
/* "strict_asm_optimizer_steps/input.yul":362:363 */
0x00
/* "strict_asm_optimizer_steps/input.yul":516:549 */
/* "strict_asm_optimizer_steps/input.yul":355:388 */
sstore
/* "strict_asm_optimizer_steps/input.yul":576:577 */
/* "strict_asm_optimizer_steps/input.yul":415:416 */
0x00
/* "strict_asm_optimizer_steps/input.yul":566:578 */
/* "strict_asm_optimizer_steps/input.yul":405:417 */
dup1
revert
}
8 changes: 4 additions & 4 deletions test/cmdlineTests/strict_asm_output_selection_asm_only/output
Original file line number Diff line number Diff line change
@@ -2,11 +2,11 @@
======= strict_asm_output_selection_asm_only/input.yul (EVM) =======

Text representation:
/* "strict_asm_output_selection_asm_only/input.yul":15:17 */
/* "strict_asm_output_selection_asm_only/input.yul":41:43 */
0x2a
/* "strict_asm_output_selection_asm_only/input.yul":29:30 */
/* "strict_asm_output_selection_asm_only/input.yul":38:39 */
0x00
/* "strict_asm_output_selection_asm_only/input.yul":22:34 */
/* "strict_asm_output_selection_asm_only/input.yul":31:44 */
sstore
/* "strict_asm_output_selection_asm_only/input.yul":0:36 */
/* "strict_asm_output_selection_asm_only/input.yul":27:48 */
stop
6 changes: 0 additions & 6 deletions test/cmdlineTests/strict_asm_warning/err
Original file line number Diff line number Diff line change
@@ -3,9 +3,3 @@ Warning: "selfdestruct" has been deprecated. Note that, starting from the Cancun
|
4 | selfdestruct(0)
| ^^^^^^^^^^^^

Warning: "selfdestruct" has been deprecated. Note that, starting from the Cancun hard fork, the underlying opcode no longer deletes the code and data associated with an account and only transfers its Ether to the beneficiary, unless executed in the same transaction in which the contract was created (see EIP-6780). Any use in newly deployed contracts is strongly discouraged even if the new behavior is taken into account. Future changes to the EVM might further reduce the functionality of the opcode.
--> strict_asm_warning/input.yul:4:5:
|
4 | selfdestruct(0)
| ^^^^^^^^^^^^
6 changes: 0 additions & 6 deletions test/cmdlineTests/strict_asm_warning_optimize/err
Original file line number Diff line number Diff line change
@@ -3,9 +3,3 @@ Warning: "selfdestruct" has been deprecated. Note that, starting from the Cancun
|
4 | selfdestruct(0)
| ^^^^^^^^^^^^

Warning: "selfdestruct" has been deprecated. Note that, starting from the Cancun hard fork, the underlying opcode no longer deletes the code and data associated with an account and only transfers its Ether to the beneficiary, unless executed in the same transaction in which the contract was created (see EIP-6780). Any use in newly deployed contracts is strongly discouraged even if the new behavior is taken into account. Future changes to the EVM might further reduce the functionality of the opcode.
--> strict_asm_warning_optimize/input.yul:4:5:
|
4 | selfdestruct(0)
| ^^^^^^^^^^^^
26 changes: 13 additions & 13 deletions test/cmdlineTests/yul_function_name_clashes_different_params/output
Original file line number Diff line number Diff line change
@@ -23,37 +23,37 @@ Binary representation:
60056011565b600d60706016565b9055005b5f3590565b359056

Text representation:
/* "yul_function_name_clashes_different_params/input.yul":151:154 */
/* "yul_function_name_clashes_different_params/input.yul":92:95 */
tag_3
tag_1
jump // in
tag_3:
/* "yul_function_name_clashes_different_params/input.yul":260:267 */
/* "yul_function_name_clashes_different_params/input.yul":113:122 */
tag_4
/* "yul_function_name_clashes_different_params/input.yul":262:266 */
/* "yul_function_name_clashes_different_params/input.yul":117:121 */
0x70
/* "yul_function_name_clashes_different_params/input.yul":260:267 */
/* "yul_function_name_clashes_different_params/input.yul":113:122 */
tag_2
jump // in
tag_4:
/* "yul_function_name_clashes_different_params/input.yul":286:298 */
/* "yul_function_name_clashes_different_params/input.yul":135:147 */
swap1
sstore
/* "yul_function_name_clashes_different_params/input.yul":27:304 */
/* "yul_function_name_clashes_different_params/input.yul":27:284 */
stop
/* "yul_function_name_clashes_different_params/input.yul":79:133 */
/* "yul_function_name_clashes_different_params/input.yul":166:216 */
tag_1:
/* "yul_function_name_clashes_different_params/input.yul":129:130 */
/* "yul_function_name_clashes_different_params/input.yul":212:213 */
0x00
/* "yul_function_name_clashes_different_params/input.yul":116:131 */
/* "yul_function_name_clashes_different_params/input.yul":199:214 */
calldataload
/* "yul_function_name_clashes_different_params/input.yul":79:133 */
/* "yul_function_name_clashes_different_params/input.yul":166:216 */
swap1
jump // out
/* "yul_function_name_clashes_different_params/input.yul":187:242 */
/* "yul_function_name_clashes_different_params/input.yul":225:278 */
tag_2:
/* "yul_function_name_clashes_different_params/input.yul":225:240 */
/* "yul_function_name_clashes_different_params/input.yul":261:276 */
calldataload
/* "yul_function_name_clashes_different_params/input.yul":187:242 */
/* "yul_function_name_clashes_different_params/input.yul":225:278 */
swap1
jump // out
20 changes: 10 additions & 10 deletions test/cmdlineTests/yul_optimize_runs/output
Original file line number Diff line number Diff line change
@@ -24,28 +24,28 @@ Binary representation:
602480600a5f395ff3fe7fabc12345000000000000000000000000000000000000000000000000000000005f5500

Text representation:
/* "yul_optimize_runs/input.yul":115:143 */
/* "yul_optimize_runs/input.yul":64:92 */
dataSize(sub_0)
/* "yul_optimize_runs/input.yul":83:113 */
/* "yul_optimize_runs/input.yul":117:147 */
dup1
dataOffset(sub_0)
/* "yul_optimize_runs/input.yul":80:81 */
/* "yul_optimize_runs/input.yul":114:115 */
0x00
/* "yul_optimize_runs/input.yul":71:144 */
/* "yul_optimize_runs/input.yul":105:152 */
codecopy
/* "yul_optimize_runs/input.yul":80:81 */
/* "yul_optimize_runs/input.yul":172:173 */
0x00
/* "yul_optimize_runs/input.yul":153:192 */
/* "yul_optimize_runs/input.yul":165:178 */
return
stop

sub_0: assembly {
/* "yul_optimize_runs/input.yul":273:293 */
/* "yul_optimize_runs/input.yul":282:348 */
0xabc1234500000000000000000000000000000000000000000000000000000000
/* "yul_optimize_runs/input.yul":313:314 */
/* "yul_optimize_runs/input.yul":279:280 */
0x00
/* "yul_optimize_runs/input.yul":306:324 */
/* "yul_optimize_runs/input.yul":272:349 */
sstore
/* "yul_optimize_runs/input.yul":244:334 */
/* "yul_optimize_runs/input.yul":240:373 */
stop
}
15 changes: 8 additions & 7 deletions test/cmdlineTests/yul_verbatim_msize/output
Original file line number Diff line number Diff line change
@@ -17,18 +17,19 @@ Binary representation:
6120005150616160025f5500

Text representation:
/* "yul_verbatim_msize/input.yul":125:131 */
/* "yul_verbatim_msize/input.yul":61:67 */
0x2000
/* "yul_verbatim_msize/input.yul":119:132 */
/* "yul_verbatim_msize/input.yul":55:68 */
mload
/* "yul_verbatim_msize/input.yul":51:69 */
pop
/* "yul_verbatim_msize/input.yul":137:157 */
/* "yul_verbatim_msize/input.yul":82:102 */
verbatimbytecode_6161
/* "yul_verbatim_msize/input.yul":172:173 */
/* "yul_verbatim_msize/input.yul":125:126 */
0x02
/* "yul_verbatim_msize/input.yul":169:170 */
/* "yul_verbatim_msize/input.yul":122:123 */
0x00
/* "yul_verbatim_msize/input.yul":162:174 */
/* "yul_verbatim_msize/input.yul":115:127 */
sstore
/* "yul_verbatim_msize/input.yul":0:176 */
/* "yul_verbatim_msize/input.yul":27:143 */
stop
4 changes: 2 additions & 2 deletions test/libyul/objectCompiler/data.yul
Original file line number Diff line number Diff line change
@@ -5,10 +5,10 @@ object "a" {
}
// ----
// Assembly:
// /* "source":20:22 */
// /* "source":22:29 */
// stop
// stop
// data_acaf3289d7b601cbd114fb36c4d29c85bbfd5e133f14cb355c3fd8d99367964f 48656c6c6f2c20576f726c6421
// Bytecode: 00fe
// Opcodes: STOP INVALID
// SourceMappings: 20:2:0:-:0
// SourceMappings: 22:7:0:-:0
30 changes: 15 additions & 15 deletions test/libyul/objectCompiler/datacopy.yul
Original file line number Diff line number Diff line change
@@ -13,40 +13,40 @@ object "a" {
}
// ----
// Assembly:
// /* "source":57:72 */
// /* "source":77:92 */
// dataSize(sub_0)
// /* "source":38:55 */
// /* "source":58:75 */
// dataOffset(sub_0)
// /* "source":35:36 */
// /* "source":55:56 */
// 0x00
// /* "source":26:73 */
// /* "source":46:93 */
// codecopy
// /* "source":88:103 */
// /* "source":116:131 */
// dataSize(sub_0)
// /* "source":85:86 */
// /* "source":113:114 */
// 0x00
// /* "source":78:104 */
// /* "source":106:132 */
// return
// stop
//
// sub_0: assembly {
// /* "source":153:170 */
// /* "source":223:240 */
// 0x00
// /* "source":150:151 */
// /* "source":220:221 */
// 0x00
// /* "source":143:171 */
// /* "source":213:241 */
// sstore
// /* "source":188:205 */
// /* "source":268:285 */
// 0x0d
// /* "source":185:186 */
// /* "source":265:266 */
// 0x00
// /* "source":178:206 */
// /* "source":258:286 */
// mstore
// /* "source":135:212 */
// /* "source":181:310 */
// stop
// stop
// data_acaf3289d7b601cbd114fb36c4d29c85bbfd5e133f14cb355c3fd8d99367964f 48656c6c6f2c20576f726c6421
// }
// Bytecode: 6009600b5f3960095ff3fe5f5f55600d5f5200fe
// Opcodes: PUSH1 0x9 PUSH1 0xB PUSH0 CODECOPY PUSH1 0x9 PUSH0 RETURN INVALID PUSH0 PUSH0 SSTORE PUSH1 0xD PUSH0 MSTORE STOP INVALID
// SourceMappings: 57:15:0:-:0;38:17;35:1;26:47;88:15;85:1;78:26
// SourceMappings: 77:15:0:-:0;58:17;55:1;46:47;116:15;113:1;106:26
18 changes: 9 additions & 9 deletions test/libyul/objectCompiler/dataoffset_code.yul
Original file line number Diff line number Diff line change
@@ -7,28 +7,28 @@ object "a" {
}
// ----
// Assembly:
// /* "source":32:49 */
// /* "source":44:61 */
// dataOffset(sub_0)
// /* "source":29:30 */
// /* "source":41:42 */
// 0x00
// /* "source":22:50 */
// /* "source":34:62 */
// sstore
// /* "source":20:52 */
// /* "source":22:70 */
// stop
// stop
//
// sub_0: assembly {
// /* "source":91:92 */
// /* "source":117:118 */
// 0x08
// /* "source":88:89 */
// /* "source":114:115 */
// 0x00
// /* "source":81:93 */
// /* "source":107:119 */
// sstore
// /* "source":79:95 */
// /* "source":103:123 */
// stop
// stop
// data_acaf3289d7b601cbd114fb36c4d29c85bbfd5e133f14cb355c3fd8d99367964f 48656c6c6f2c20576f726c6421
// }
// Bytecode: 60065f5500fe60085f5500fe
// Opcodes: PUSH1 0x6 PUSH0 SSTORE STOP INVALID PUSH1 0x8 PUSH0 SSTORE STOP INVALID
// SourceMappings: 32:17:0:-:0;29:1;22:28;20:32
// SourceMappings: 44:17:0:-:0;41:1;34:28;22:48
10 changes: 5 additions & 5 deletions test/libyul/objectCompiler/dataoffset_data.yul
Original file line number Diff line number Diff line change
@@ -4,16 +4,16 @@ object "a" {
}
// ----
// Assembly:
// /* "source":32:51 */
// /* "source":56:75 */
// data_acaf3289d7b601cbd114fb36c4d29c85bbfd5e133f14cb355c3fd8d99367964f
// /* "source":29:30 */
// /* "source":53:54 */
// 0x00
// /* "source":22:52 */
// /* "source":46:76 */
// sstore
// /* "source":20:54 */
// /* "source":22:92 */
// stop
// stop
// data_acaf3289d7b601cbd114fb36c4d29c85bbfd5e133f14cb355c3fd8d99367964f 48656c6c6f2c20576f726c6421
// Bytecode: 60065f5500fe48656c6c6f2c20576f726c6421
// Opcodes: PUSH1 0x6 PUSH0 SSTORE STOP INVALID BASEFEE PUSH6 0x6C6C6F2C2057 PUSH16 0x726C6421000000000000000000000000
// SourceMappings: 32:19:0:-:0;29:1;22:30;20:34
// SourceMappings: 56:19:0:-:0;53:1;46:30;22:70
10 changes: 5 additions & 5 deletions test/libyul/objectCompiler/dataoffset_self.yul
Original file line number Diff line number Diff line change
@@ -4,16 +4,16 @@ object "a" {
}
// ----
// Assembly:
// /* "source":32:47 */
// /* "source":44:59 */
// 0x00
// /* "source":29:30 */
// /* "source":41:42 */
// 0x00
// /* "source":22:48 */
// /* "source":34:60 */
// sstore
// /* "source":20:50 */
// /* "source":22:68 */
// stop
// stop
// data_acaf3289d7b601cbd114fb36c4d29c85bbfd5e133f14cb355c3fd8d99367964f 48656c6c6f2c20576f726c6421
// Bytecode: 5f5f5500fe
// Opcodes: PUSH0 PUSH0 SSTORE STOP INVALID
// SourceMappings: 32:15:0:-:0;29:1;22:26;20:30
// SourceMappings: 44:15:0:-:0;41:1;34:26;22:46
18 changes: 9 additions & 9 deletions test/libyul/objectCompiler/datasize_code.yul
Original file line number Diff line number Diff line change
@@ -7,28 +7,28 @@ object "a" {
}
// ----
// Assembly:
// /* "source":32:47 */
// /* "source":44:59 */
// dataSize(sub_0)
// /* "source":29:30 */
// /* "source":41:42 */
// 0x00
// /* "source":22:48 */
// /* "source":34:60 */
// sstore
// /* "source":20:50 */
// /* "source":22:68 */
// stop
// stop
//
// sub_0: assembly {
// /* "source":89:90 */
// /* "source":115:116 */
// 0x08
// /* "source":86:87 */
// /* "source":112:113 */
// 0x00
// /* "source":79:91 */
// /* "source":105:117 */
// sstore
// /* "source":77:93 */
// /* "source":101:121 */
// stop
// stop
// data_acaf3289d7b601cbd114fb36c4d29c85bbfd5e133f14cb355c3fd8d99367964f 48656c6c6f2c20576f726c6421
// }
// Bytecode: 60065f5500fe
// Opcodes: PUSH1 0x6 PUSH0 SSTORE STOP INVALID
// SourceMappings: 32:15:0:-:0;29:1;22:26;20:30
// SourceMappings: 44:15:0:-:0;41:1;34:26;22:46
10 changes: 5 additions & 5 deletions test/libyul/objectCompiler/datasize_data.yul
Original file line number Diff line number Diff line change
@@ -4,16 +4,16 @@ object "a" {
}
// ----
// Assembly:
// /* "source":32:49 */
// /* "source":44:61 */
// 0x0d
// /* "source":29:30 */
// /* "source":41:42 */
// 0x00
// /* "source":22:50 */
// /* "source":34:62 */
// sstore
// /* "source":20:52 */
// /* "source":22:70 */
// stop
// stop
// data_acaf3289d7b601cbd114fb36c4d29c85bbfd5e133f14cb355c3fd8d99367964f 48656c6c6f2c20576f726c6421
// Bytecode: 600d5f5500fe
// Opcodes: PUSH1 0xD PUSH0 SSTORE STOP INVALID
// SourceMappings: 32:17:0:-:0;29:1;22:28;20:32
// SourceMappings: 44:17:0:-:0;41:1;34:28;22:48
10 changes: 5 additions & 5 deletions test/libyul/objectCompiler/datasize_self.yul
Original file line number Diff line number Diff line change
@@ -4,16 +4,16 @@ object "a" {
}
// ----
// Assembly:
// /* "source":32:45 */
// /* "source":36:49 */
// bytecodeSize
// /* "source":29:30 */
// /* "source":33:34 */
// 0x00
// /* "source":22:46 */
// /* "source":26:50 */
// sstore
// /* "source":20:48 */
// /* "source":22:54 */
// stop
// stop
// data_acaf3289d7b601cbd114fb36c4d29c85bbfd5e133f14cb355c3fd8d99367964f 48656c6c6f2c20576f726c6421
// Bytecode: 60065f5500fe
// Opcodes: PUSH1 0x6 PUSH0 SSTORE STOP INVALID
// SourceMappings: 32:13:0:-:0;29:1;22:24;20:28
// SourceMappings: 36:13:0:-:0;33:1;26:24;22:32
Original file line number Diff line number Diff line change
@@ -9,14 +9,14 @@ object "a" {
}
// ----
// Assembly:
// /* "source":167:209 */
// /* "source":143:185 */
// 0x1234567890123456789012345678901234567890
// /* "source":58:59 */
// /* "source":59:60 */
// 0x00
// /* "source":32:219 */
// /* "source":46:186 */
// assignImmutable("0x85a5b1db611c82c46f5fa18e39ae218397536256c451e5de155a86de843a9ad6")
// /* "source":22:225 */
// /* "source":22:202 */
// stop
// Bytecode: 7312345678901234567890123456789012345678905f505000
// Opcodes: PUSH20 0x1234567890123456789012345678901234567890 PUSH0 POP POP STOP
// SourceMappings: 167:42:0:-:0;58:1;32:187;;22:203
// SourceMappings: 143:42:0:-:0;59:1;46:140;;22:180
22 changes: 11 additions & 11 deletions test/libyul/objectCompiler/leading_and_trailing_dots.yul
Original file line number Diff line number Diff line change
@@ -14,29 +14,29 @@
}
// ----
// Assembly:
// /* "source":49:50 */
// /* "source":53:54 */
// 0x02
// /* "source":6:42 */
// /* "source":108:140 */
// tag_1:
// /* "source":34:35 */
// /* "source":136:137 */
// 0x00
// /* "source":32:36 */
// /* "source":134:138 */
// tag_1
// jump // in
// /* "source":56:92 */
// /* "source":149:181 */
// tag_2:
// /* "source":84:85 */
// /* "source":177:178 */
// 0x00
// /* "source":82:86 */
// /* "source":175:179 */
// tag_2
// jump // in
// /* "source":106:142 */
// /* "source":190:222 */
// tag_3:
// /* "source":134:135 */
// /* "source":218:219 */
// 0x00
// /* "source":132:136 */
// /* "source":216:220 */
// tag_3
// jump // in
// Bytecode: 60025b5f6002565b5f6007565b5f600c56
// Opcodes: PUSH1 0x2 JUMPDEST PUSH0 PUSH1 0x2 JUMP JUMPDEST PUSH0 PUSH1 0x7 JUMP JUMPDEST PUSH0 PUSH1 0xC JUMP
// SourceMappings: 49:1:0:-:0;6:36;34:1;32:4;:::i;56:36::-;84:1;82:4;:::i;106:36::-;134:1;132:4;:::i
// SourceMappings: 53:1:0:-:0;108:32;136:1;134:4;:::i;149:32::-;177:1;175:4;:::i;190:32::-;218:1;216:4;:::i
24 changes: 12 additions & 12 deletions test/libyul/objectCompiler/linkersymbol.yul
Original file line number Diff line number Diff line change
@@ -7,31 +7,31 @@ object "a" {
}
// ----
// Assembly:
// /* "source":179:180 */
// /* "source":190:191 */
// 0x00
// /* "source":174:177 */
// /* "source":185:188 */
// 0x80
// /* "source":171:172 */
// /* "source":182:183 */
// 0x04
// /* "source":44:79 */
// /* "source":58:93 */
// dup2
// dup4
// linkerSymbol("f919ba91ac99f96129544b80b9516b27a80e376b9dc693819d0b18b7e0395612")
// /* "source":109:119 */
// /* "source":127:137 */
// 0x18530aaf
// /* "source":104:107 */
// /* "source":122:125 */
// 0xe3
// /* "source":100:120 */
// /* "source":118:138 */
// shl
// /* "source":88:121 */
// /* "source":106:139 */
// dup4
// mstore
// /* "source":150:155 */
// /* "source":161:166 */
// gas
// /* "source":145:181 */
// /* "source":156:192 */
// call
// /* "source":130:181 */
// /* "source":152:193 */
// stop
// Bytecode: 5f6080600481837300000000000000000000000000000000000000006318530aaf60e31b83525af100
// Opcodes: PUSH0 PUSH1 0x80 PUSH1 0x4 DUP2 DUP4 PUSH20 0x0 PUSH4 0x18530AAF PUSH1 0xE3 SHL DUP4 MSTORE GAS CALL STOP
// SourceMappings: 179:1:0:-:0;174:3;171:1;44:35;;;109:10;104:3;100:20;88:33;;150:5;145:36;130:51
// SourceMappings: 190:1:0:-:0;185:3;182:1;58:35;;;127:10;122:3;118:20;106:33;;161:5;156:36;152:41
12 changes: 6 additions & 6 deletions test/libyul/objectCompiler/long_object_name.yul
Original file line number Diff line number Diff line change
@@ -10,20 +10,20 @@ object "t" {
// optimizationPreset: full
// ----
// Assembly:
// /* "source":33:146 */
// /* "source":56:169 */
// dataSize(sub_0)
// /* "source":30:31 */
// /* "source":53:54 */
// 0x00
// /* "source":23:147 */
// /* "source":46:170 */
// sstore
// /* "source":19:150 */
// /* "source":22:186 */
// stop
// stop
//
// sub_0: assembly {
// /* "source":272:274 */
// /* "source":317:324 */
// stop
// }
// Bytecode: 60015f5500fe
// Opcodes: PUSH1 0x1 PUSH0 SSTORE STOP INVALID
// SourceMappings: 33:113:0:-:0;30:1;23:124;19:131
// SourceMappings: 56:113:0:-:0;53:1;46:124;22:164
276 changes: 138 additions & 138 deletions test/libyul/objectCompiler/manySubObjects.yul

Large diffs are not rendered by default.

26 changes: 13 additions & 13 deletions test/libyul/objectCompiler/metadata.yul
Original file line number Diff line number Diff line change
@@ -21,34 +21,34 @@ object "A" {
}
// ----
// Assembly:
// /* "source":35:48 */
// /* "source":55:68 */
// 0x0e
// /* "source":62:75 */
// /* "source":90:103 */
// 0x03
// /* "source":80:92 */
// /* "source":116:128 */
// swap1
// /* "source":87:88 */
// /* "source":123:124 */
// 0x00
// /* "source":80:92 */
// /* "source":116:128 */
// sstore
// /* "source":104:106 */
// /* "source":148:150 */
// 0x20
// /* "source":97:110 */
// /* "source":141:154 */
// sstore
// /* "source":20:114 */
// /* "source":22:170 */
// stop
// stop
// data_211450822d7f8c345093893187e7e1fbebc4ec67af72601920194be14104e336 48656c6c6f2c20576f726c643221
// data_e1629b9dda060bb30c7908346f6af189c16773fa148d3366701fbaa35d54f3c8 414243
//
// sub_0: assembly {
// /* "source":157:176 */
// /* "source":242:261 */
// data_211450822d7f8c345093893187e7e1fbebc4ec67af72601920194be14104e336
// /* "source":190:191 */
// /* "source":285:286 */
// 0x00
// /* "source":183:195 */
// /* "source":278:290 */
// sstore
// /* "source":140:201 */
// /* "source":201:314 */
// stop
// stop
// data_211450822d7f8c345093893187e7e1fbebc4ec67af72601920194be14104e336 48656c6c6f2c20576f726c643221
@@ -59,4 +59,4 @@ object "A" {
// auxdata: 0x4d32
// Bytecode: 600e6003905f5560205500fe4d32
// Opcodes: PUSH1 0xE PUSH1 0x3 SWAP1 PUSH0 SSTORE PUSH1 0x20 SSTORE STOP INVALID 0x4D ORIGIN
// SourceMappings: 35:13:0:-:0;62;80:12;87:1;80:12;104:2;97:13;20:94
// SourceMappings: 55:13:0:-:0;90;116:12;123:1;116:12;148:2;141:13;22:148
4 changes: 2 additions & 2 deletions test/libyul/objectCompiler/namedObject.yul
Original file line number Diff line number Diff line change
@@ -3,8 +3,8 @@ object "a" {
}
// ----
// Assembly:
// /* "source":20:22 */
// /* "source":22:29 */
// stop
// Bytecode: 00
// Opcodes: STOP
// SourceMappings: 20:2:0:-:0
// SourceMappings: 22:7:0:-:0
10 changes: 5 additions & 5 deletions test/libyul/objectCompiler/namedObjectCode.yul
Original file line number Diff line number Diff line change
@@ -3,14 +3,14 @@ object "a" {
}
// ----
// Assembly:
// /* "source":32:33 */
// /* "source":36:37 */
// 0x01
// /* "source":29:30 */
// /* "source":33:34 */
// 0x00
// /* "source":22:34 */
// /* "source":26:38 */
// sstore
// /* "source":20:36 */
// /* "source":22:42 */
// stop
// Bytecode: 60015f5500
// Opcodes: PUSH1 0x1 PUSH0 SSTORE STOP
// SourceMappings: 32:1:0:-:0;29;22:12;20:16
// SourceMappings: 36:1:0:-:0;33;26:12;22:20
18 changes: 9 additions & 9 deletions test/libyul/objectCompiler/nested_optimizer.yul
Original file line number Diff line number Diff line change
@@ -18,28 +18,28 @@ object "a" {
// optimizationPreset: full
// ----
// Assembly:
// /* "source":48:49 */
// /* "source":58:59 */
// 0x00
// /* "source":35:50 */
// /* "source":41:56 */
// dup1
// calldataload
// /* "source":107:127 */
// /* "source":34:60 */
// sstore
// /* "source":20:131 */
// /* "source":22:68 */
// stop
// stop
//
// sub_0: assembly {
// /* "source":188:189 */
// /* "source":141:142 */
// 0x00
// /* "source":175:190 */
// /* "source":124:139 */
// dup1
// calldataload
// /* "source":253:273 */
// /* "source":117:143 */
// sstore
// /* "source":158:279 */
// /* "source":101:155 */
// stop
// }
// Bytecode: 5f80355500fe
// Opcodes: PUSH0 DUP1 CALLDATALOAD SSTORE STOP INVALID
// SourceMappings: 48:1:0:-:0;35:15;;107:20;20:111
// SourceMappings: 58:1:0:-:0;41:15;;34:26;22:46
10 changes: 5 additions & 5 deletions test/libyul/objectCompiler/simple.yul
Original file line number Diff line number Diff line change
@@ -3,14 +3,14 @@
}
// ----
// Assembly:
// /* "source":14:15 */
// /* "source":41:42 */
// 0x01
// /* "source":11:12 */
// /* "source":38:39 */
// 0x00
// /* "source":4:16 */
// /* "source":31:43 */
// sstore
// /* "source":0:18 */
// /* "source":27:47 */
// stop
// Bytecode: 60015f5500
// Opcodes: PUSH1 0x1 PUSH0 SSTORE STOP
// SourceMappings: 14:1:0:-:0;11;4:12;0:18
// SourceMappings: 41:1:0:-:0;38;31:12;27:20
10 changes: 5 additions & 5 deletions test/libyul/objectCompiler/simple_optimizer.yul
Original file line number Diff line number Diff line change
@@ -8,15 +8,15 @@
// optimizationPreset: full
// ----
// Assembly:
// /* "source":26:27 */
// /* "source":63:64 */
// 0x00
// /* "source":13:28 */
// /* "source":46:61 */
// dup1
// calldataload
// /* "source":79:99 */
// /* "source":39:65 */
// sstore
// /* "source":0:101 */
// /* "source":27:73 */
// stop
// Bytecode: 5f80355500
// Opcodes: PUSH0 DUP1 CALLDATALOAD SSTORE STOP
// SourceMappings: 26:1:0:-:0;13:15;;79:20;0:101
// SourceMappings: 63:1:0:-:0;46:15;;39:26;27:46
4 changes: 2 additions & 2 deletions test/libyul/objectCompiler/smoke.yul
Original file line number Diff line number Diff line change
@@ -2,8 +2,8 @@
}
// ----
// Assembly:
// /* "source":0:3 */
// /* "source":27:34 */
// stop
// Bytecode: 00
// Opcodes: STOP
// SourceMappings: 0:3:0:-:0
// SourceMappings: 27:7:0:-:0
12 changes: 6 additions & 6 deletions test/libyul/objectCompiler/subObject.yul
Original file line number Diff line number Diff line change
@@ -6,21 +6,21 @@ object "a" {
}
// ----
// Assembly:
// /* "source":20:22 */
// /* "source":22:29 */
// stop
// stop
// data_acaf3289d7b601cbd114fb36c4d29c85bbfd5e133f14cb355c3fd8d99367964f 48656c6c6f2c20576f726c6421
//
// sub_0: assembly {
// /* "source":149:150 */
// /* "source":123:124 */
// 0x01
// /* "source":146:147 */
// /* "source":120:121 */
// 0x00
// /* "source":139:151 */
// /* "source":113:125 */
// sstore
// /* "source":137:153 */
// /* "source":109:129 */
// stop
// }
// Bytecode: 00fe
// Opcodes: STOP INVALID
// SourceMappings: 20:2:0:-:0
// SourceMappings: 22:7:0:-:0
138 changes: 69 additions & 69 deletions test/libyul/objectCompiler/subObjectAccess.yul
Original file line number Diff line number Diff line change
@@ -67,164 +67,164 @@ object "A" {
}
// ----
// Assembly:
// /* "source":37:52 */
// /* "source":57:72 */
// 0x00
// /* "source":68:81 */
// /* "source":96:109 */
// bytecodeSize
// /* "source":97:112 */
// /* "source":133:148 */
// dataOffset(sub_0)
// /* "source":128:141 */
// /* "source":172:185 */
// dataSize(sub_0)
// /* "source":158:175 */
// /* "source":210:227 */
// dataOffset(sub_0.sub_0)
// /* "source":192:207 */
// /* "source":252:267 */
// dataSize(sub_0.sub_0)
// /* "source":224:241 */
// /* "source":292:309 */
// swap1
// dataOffset(sub_0.sub_1)
// /* "source":258:273 */
// /* "source":334:349 */
// swap3
// dataSize(sub_0.sub_1)
// /* "source":291:310 */
// /* "source":375:394 */
// swap5
// dataOffset(sub_0.sub_0.sub_0)
// /* "source":328:345 */
// /* "source":420:437 */
// swap7
// dataSize(sub_0.sub_0.sub_0)
// /* "source":351:365 */
// /* "source":450:464 */
// swap9
// /* "source":358:359 */
// /* "source":457:458 */
// 0x00
// /* "source":351:365 */
// /* "source":450:464 */
// sstore
// /* "source":377:379 */
// /* "source":484:486 */
// 0x20
// /* "source":370:385 */
// /* "source":477:492 */
// sstore
// /* "source":397:399 */
// /* "source":512:514 */
// 0x40
// /* "source":390:405 */
// /* "source":505:520 */
// sstore
// /* "source":417:419 */
// /* "source":540:542 */
// 0x60
// /* "source":410:425 */
// /* "source":533:548 */
// sstore
// /* "source":437:440 */
// /* "source":568:571 */
// 0x80
// /* "source":430:447 */
// /* "source":561:578 */
// sstore
// /* "source":459:462 */
// /* "source":598:601 */
// 0xa0
// /* "source":452:469 */
// /* "source":591:608 */
// sstore
// /* "source":481:484 */
// /* "source":628:631 */
// 0xc0
// /* "source":474:491 */
// /* "source":621:638 */
// sstore
// /* "source":503:506 */
// /* "source":658:661 */
// 0xe0
// /* "source":496:513 */
// /* "source":651:668 */
// sstore
// /* "source":525:528 */
// /* "source":688:691 */
// 0x0100
// /* "source":518:536 */
// /* "source":681:699 */
// sstore
// /* "source":548:551 */
// /* "source":719:722 */
// 0x0120
// /* "source":541:559 */
// /* "source":712:730 */
// sstore
// /* "source":574:577 */
// /* "source":753:756 */
// 0x0140
// /* "source":571:572 */
// /* "source":750:751 */
// 0x00
// /* "source":564:578 */
// /* "source":743:757 */
// return
// stop
// data_acaf3289d7b601cbd114fb36c4d29c85bbfd5e133f14cb355c3fd8d99367964f 48656c6c6f2c20576f726c6421
//
// sub_0: assembly {
// /* "source":659:674 */
// /* "source":896:911 */
// dataOffset(sub_0)
// /* "source":692:705 */
// /* "source":939:952 */
// dataSize(sub_0)
// /* "source":723:738 */
// /* "source":980:995 */
// dataOffset(sub_1)
// /* "source":756:769 */
// /* "source":1023:1036 */
// dataSize(sub_1)
// /* "source":788:805 */
// /* "source":1065:1082 */
// swap1
// dataOffset(sub_0.sub_0)
// /* "source":824:839 */
// /* "source":1111:1126 */
// swap3
// dataSize(sub_0.sub_0)
// /* "source":847:861 */
// /* "source":1143:1157 */
// swap5
// /* "source":854:855 */
// /* "source":1150:1151 */
// 0x00
// /* "source":847:861 */
// /* "source":1143:1157 */
// sstore
// /* "source":875:877 */
// /* "source":1181:1183 */
// 0x20
// /* "source":868:883 */
// /* "source":1174:1189 */
// sstore
// /* "source":897:899 */
// /* "source":1213:1215 */
// 0x40
// /* "source":890:905 */
// /* "source":1206:1221 */
// sstore
// /* "source":919:921 */
// /* "source":1245:1247 */
// 0x60
// /* "source":912:927 */
// /* "source":1238:1253 */
// sstore
// /* "source":941:944 */
// /* "source":1277:1280 */
// 0x80
// /* "source":934:951 */
// /* "source":1270:1287 */
// sstore
// /* "source":965:968 */
// /* "source":1311:1314 */
// 0xa0
// /* "source":958:975 */
// /* "source":1304:1321 */
// sstore
// /* "source":992:995 */
// /* "source":1348:1351 */
// 0xc0
// /* "source":989:990 */
// /* "source":1345:1346 */
// 0x00
// /* "source":982:996 */
// /* "source":1338:1352 */
// return
// stop
//
// sub_0: assembly {
// /* "source":1052:1067 */
// /* "source":1466:1481 */
// dataOffset(sub_0)
// /* "source":1087:1100 */
// /* "source":1513:1526 */
// dataSize(sub_0)
// /* "source":1110:1124 */
// /* "source":1547:1561 */
// swap1
// /* "source":1117:1118 */
// /* "source":1554:1555 */
// 0x00
// /* "source":1110:1124 */
// /* "source":1547:1561 */
// sstore
// /* "source":1140:1142 */
// /* "source":1589:1591 */
// 0x20
// /* "source":1133:1148 */
// /* "source":1582:1597 */
// sstore
// /* "source":1167:1169 */
// /* "source":1628:1630 */
// 0x40
// /* "source":1164:1165 */
// /* "source":1625:1626 */
// 0x00
// /* "source":1157:1170 */
// /* "source":1618:1631 */
// return
// stop
//
// sub_0: assembly {
// /* "source":1223:1232 */
// /* "source":1714:1723 */
// invalid
// }
// }
//
// sub_1: assembly {
// /* "source":1295:1304 */
// /* "source":1794:1803 */
// invalid
// }
// }
// Bytecode: 5f6084603d603660746010906073926001946073966001985f5560205560405560605560805560a05560c05560e05561010055610120556101405ff3fe6025601060356001906035926001945f5560205560405560605560805560a05560c05ff3fe600f6001905f5560205560405ff3fefefefe600f6001905f5560205560405ff3fefe
// Opcodes: PUSH0 PUSH1 0x84 PUSH1 0x3D PUSH1 0x36 PUSH1 0x74 PUSH1 0x10 SWAP1 PUSH1 0x73 SWAP3 PUSH1 0x1 SWAP5 PUSH1 0x73 SWAP7 PUSH1 0x1 SWAP9 PUSH0 SSTORE PUSH1 0x20 SSTORE PUSH1 0x40 SSTORE PUSH1 0x60 SSTORE PUSH1 0x80 SSTORE PUSH1 0xA0 SSTORE PUSH1 0xC0 SSTORE PUSH1 0xE0 SSTORE PUSH2 0x100 SSTORE PUSH2 0x120 SSTORE PUSH2 0x140 PUSH0 RETURN INVALID PUSH1 0x25 PUSH1 0x10 PUSH1 0x35 PUSH1 0x1 SWAP1 PUSH1 0x35 SWAP3 PUSH1 0x1 SWAP5 PUSH0 SSTORE PUSH1 0x20 SSTORE PUSH1 0x40 SSTORE PUSH1 0x60 SSTORE PUSH1 0x80 SSTORE PUSH1 0xA0 SSTORE PUSH1 0xC0 PUSH0 RETURN INVALID PUSH1 0xF PUSH1 0x1 SWAP1 PUSH0 SSTORE PUSH1 0x20 SSTORE PUSH1 0x40 PUSH0 RETURN INVALID INVALID INVALID INVALID PUSH1 0xF PUSH1 0x1 SWAP1 PUSH0 SSTORE PUSH1 0x20 SSTORE PUSH1 0x40 PUSH0 RETURN INVALID INVALID
// SourceMappings: 37:15:0:-:0;68:13;97:15;128:13;158:17;192:15;224:17;;258:15;;291:19;;328:17;;351:14;358:1;351:14;377:2;370:15;397:2;390:15;417:2;410:15;437:3;430:17;459:3;452:17;481:3;474:17;503:3;496:17;525:3;518:18;548:3;541:18;574:3;571:1;564:14
// SourceMappings: 57:15:0:-:0;96:13;133:15;172:13;210:17;252:15;292:17;;334:15;;375:19;;420:17;;450:14;457:1;450:14;484:2;477:15;512:2;505:15;540:2;533:15;568:3;561:17;598:3;591:17;628:3;621:17;658:3;651:17;688:3;681:18;719:3;712:18;753:3;750:1;743:14
20 changes: 10 additions & 10 deletions test/libyul/objectCompiler/subSubObject.yul
Original file line number Diff line number Diff line change
@@ -12,35 +12,35 @@ object "a" {
}
// ----
// Assembly:
// /* "source":20:22 */
// /* "source":22:29 */
// stop
// stop
// data_acaf3289d7b601cbd114fb36c4d29c85bbfd5e133f14cb355c3fd8d99367964f 48656c6c6f2c20576f726c6421
//
// sub_0: assembly {
// /* "source":153:154 */
// /* "source":123:124 */
// 0x01
// /* "source":150:151 */
// /* "source":120:121 */
// 0x00
// /* "source":143:155 */
// /* "source":113:125 */
// sstore
// /* "source":141:157 */
// /* "source":109:129 */
// stop
// stop
//
// sub_0: assembly {
// /* "source":203:204 */
// /* "source":187:188 */
// 0x03
// /* "source":200:201 */
// /* "source":184:185 */
// 0x02
// /* "source":193:205 */
// /* "source":177:189 */
// sstore
// /* "source":191:207 */
// /* "source":173:193 */
// stop
// stop
// data_6adf031833174bbe4c85eafe59ddb54e6584648c2c962c6f94791ab49caa0ad4 123456
// }
// }
// Bytecode: 00fe
// Opcodes: STOP INVALID
// SourceMappings: 20:2:0:-:0
// SourceMappings: 22:7:0:-:0
82 changes: 41 additions & 41 deletions test/libyul/objectCompiler/verbatim_bug.yul
Original file line number Diff line number Diff line change
@@ -26,99 +26,99 @@ object "a" {
// optimizationPreset: full
// ----
// Assembly:
// /* "source":87:88 */
// /* "source":65:66 */
// 0x00
// /* "source":81:89 */
// /* "source":59:67 */
// dup1
// sload
// /* "source":139:307 */
// /* "source":133:225 */
// dup1
// iszero
// tag_1
// jumpi
// /* "source":316:361 */
// /* "source":238:263 */
// dup1
// /* "source":321:325 */
// /* "source":243:247 */
// 0x01
// /* "source":316:361 */
// /* "source":238:263 */
// eq
// tag_3
// jumpi
// /* "source":370:448 */
// /* "source":276:368 */
// dup1
// /* "source":375:379 */
// /* "source":281:285 */
// 0x02
// /* "source":370:448 */
// /* "source":276:368 */
// eq
// tag_5
// jumpi
// /* "source":462:466 */
// /* "source":386:390 */
// 0x03
// /* "source":457:502 */
// /* "source":381:406 */
// eq
// tag_7
// jumpi
// /* "source":87:88 */
// /* "source":426:427 */
// 0x00
// /* "source":512:529 */
// /* "source":419:436 */
// sstore
// /* "source":118:502 */
// /* "source":108:406 */
// stop
// /* "source":467:502 */
// /* "source":391:406 */
// tag_7:
// /* "source":481:492 */
// /* "source":393:404 */
// pop
// /* "source":491:492 */
// /* "source":403:404 */
// 0x03
// /* "source":87:88 */
// /* "source":426:427 */
// 0x00
// /* "source":512:529 */
// /* "source":419:436 */
// sstore
// /* "source":118:502 */
// /* "source":108:406 */
// stop
// /* "source":380:448 */
// /* "source":286:368 */
// tag_5:
// /* "source":404:438 */
// /* "source":314:354 */
// pop
// pop
// /* "source":45:59 */
// /* "source":339:353 */
// 0xaabbccddeeff
// /* "source":404:438 */
// /* "source":314:354 */
// verbatimbytecode_506002
// /* "source":87:88 */
// /* "source":426:427 */
// 0x00
// /* "source":512:529 */
// /* "source":419:436 */
// sstore
// /* "source":118:502 */
// /* "source":108:406 */
// stop
// /* "source":326:361 */
// /* "source":248:263 */
// tag_3:
// /* "source":340:351 */
// /* "source":250:261 */
// pop
// pop
// /* "source":350:351 */
// /* "source":260:261 */
// 0x01
// /* "source":87:88 */
// /* "source":426:427 */
// 0x00
// /* "source":512:529 */
// /* "source":419:436 */
// sstore
// /* "source":118:502 */
// /* "source":108:406 */
// stop
// /* "source":149:307 */
// /* "source":143:225 */
// tag_1:
// /* "source":263:297 */
// /* "source":171:211 */
// pop
// pop
// /* "source":45:59 */
// /* "source":196:210 */
// 0xaabbccddeeff
// /* "source":263:297 */
// /* "source":171:211 */
// verbatimbytecode_506000
// /* "source":87:88 */
// /* "source":426:427 */
// 0x00
// /* "source":512:529 */
// /* "source":419:436 */
// sstore
// /* "source":118:502 */
// /* "source":108:406 */
// stop
// Bytecode: 5f80548015603e578060011460365780600214602657600314601f575f55005b5060035f55005b505065aabbccddeeff5060025f55005b505060015f55005b505065aabbccddeeff5060005f5500
// Opcodes: PUSH0 DUP1 SLOAD DUP1 ISZERO PUSH1 0x3E JUMPI DUP1 PUSH1 0x1 EQ PUSH1 0x36 JUMPI DUP1 PUSH1 0x2 EQ PUSH1 0x26 JUMPI PUSH1 0x3 EQ PUSH1 0x1F JUMPI PUSH0 SSTORE STOP JUMPDEST POP PUSH1 0x3 PUSH0 SSTORE STOP JUMPDEST POP POP PUSH6 0xAABBCCDDEEFF POP PUSH1 0x2 PUSH0 SSTORE STOP JUMPDEST POP POP PUSH1 0x1 PUSH0 SSTORE STOP JUMPDEST POP POP PUSH6 0xAABBCCDDEEFF POP PUSH1 0x0 PUSH0 SSTORE STOP
// SourceMappings: 87:1:0:-:0;81:8;;139:168;;;;316:45;321:4;316:45;;;370:78;375:4;370:78;;;462:4;457:45;;;87:1;512:17;118:384;467:35;481:11;491:1;87;512:17;118:384;380:68;404:34;;45:14;404:34;87:1;512:17;118:384;326:35;340:11;;350:1;87;512:17;118:384;149:158;263:34;;45:14;263:34;87:1;512:17;118:384
// SourceMappings: 65:1:0:-:0;59:8;;133:92;;;;238:25;243:4;238:25;;;276:92;281:4;276:92;;;386:4;381:25;;;426:1;419:17;108:298;391:15;393:11;403:1;426;419:17;108:298;286:82;314:40;;339:14;314:40;426:1;419:17;108:298;248:15;250:11;;260:1;426;419:17;108:298;143:82;171:40;;196:14;171:40;426:1;419:17;108:298