Merge pull request #12370 from mejsiej/dont-select-any-outputs

Removed the initiation of default outputs in assembler mode
This commit is contained in:
chriseth 2021-12-14 18:53:41 +01:00 committed by GitHub
commit b12c1997b1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
36 changed files with 34 additions and 281 deletions

View File

@ -5,6 +5,7 @@ Breaking changes:
* Disallow ``delete`` on types that contain nested mappings. * Disallow ``delete`` on types that contain nested mappings.
* Inline Assembly: Consider functions, function parameters and return variables for shadowing checks. * Inline Assembly: Consider functions, function parameters and return variables for shadowing checks.
* Commandline Interface: Remapping targets are not automatically added to allowed paths. * Commandline Interface: Remapping targets are not automatically added to allowed paths.
* Commandline Interface: Assembler mode no longer enables all outputs by default.
### 0.8.11 (unreleased) ### 0.8.11 (unreleased)

View File

@ -68,8 +68,9 @@ function compileFull
"$SOLC" "${args[@]}" "${files[@]}" >/dev/null 2>"$stderr_path" "$SOLC" "${args[@]}" "${files[@]}" >/dev/null 2>"$stderr_path"
local exit_code=$? local exit_code=$?
local errors; errors=$(grep -v -E \ local errors; errors=$(grep -v -E \
-e 'Warning: This is a pre-release compiler version|Warning: Experimental features are turned on|pragma experimental ABIEncoderV2|^ +--> |^ +\||^[0-9]+ +\| ' \ -e '^Warning: This is a pre-release compiler version|Warning: Experimental features are turned on|pragma experimental ABIEncoderV2|^ +--> |^ +\||^[0-9]+ +\| $' \
-e 'Warning: Yul is still experimental. Please use the output with care.' \ -e '^Warning: Yul is still experimental. Please use the output with care.$' \
-e '^Assembler run successful, no output requested.$' \
-e '^No text representation found.$' < "$stderr_path" -e '^No text representation found.$' < "$stderr_path"
) )

View File

@ -1085,6 +1085,9 @@ void CommandLineInterface::assemble(yul::AssemblyStack::Language _language, yul:
serr() << "No text representation found." << endl; serr() << "No text representation found." << endl;
} }
} }
if (m_options.compiler.outputs == CompilerOutputs{})
serr() << "Assembler run successful, no output requested." << endl;
} }
void CommandLineInterface::outputCompilationResults() void CommandLineInterface::outputCompilationResults()

View File

@ -460,17 +460,6 @@ void CommandLineParser::parseOutputSelection()
for (auto&& [optionName, outputComponent]: CompilerOutputs::componentMap()) for (auto&& [optionName, outputComponent]: CompilerOutputs::componentMap())
m_options.compiler.outputs.*outputComponent = (m_args.count(optionName) > 0); m_options.compiler.outputs.*outputComponent = (m_args.count(optionName) > 0);
if (m_options.input.mode == InputMode::Assembler && m_options.compiler.outputs == CompilerOutputs{})
{
// In assembly mode keep the default outputs enabled for backwards-compatibility.
// TODO: Remove this (must be done in a breaking release).
m_options.compiler.outputs.asm_ = true;
m_options.compiler.outputs.binary = true;
m_options.compiler.outputs.irOptimized = true;
m_options.compiler.outputs.ewasm = true;
m_options.compiler.outputs.ewasmIR = true;
}
vector<string> unsupportedOutputs; vector<string> unsupportedOutputs;
for (auto&& [optionName, outputComponent]: CompilerOutputs::componentMap()) for (auto&& [optionName, outputComponent]: CompilerOutputs::componentMap())
if (m_options.compiler.outputs.*outputComponent && !outputSupported(m_options.input.mode, optionName)) if (m_options.compiler.outputs.*outputComponent && !outputSupported(m_options.input.mode, optionName))

View File

@ -581,11 +581,11 @@ printTask "Testing assemble, yul, strict-assembly and optimize..."
# Test yul and strict assembly output # Test yul and strict assembly output
# Non-empty code results in non-empty binary representation with optimizations turned off, # Non-empty code results in non-empty binary representation with optimizations turned off,
# while it results in empty binary representation with optimizations turned on. # while it results in empty binary representation with optimizations turned on.
test_solc_assembly_output "{ let x:u256 := 0:u256 }" "{ let x := 0 }" "--yul" test_solc_assembly_output "{ let x:u256 := 0:u256 }" "{ let x := 0 }" "--yul --ir-optimized"
test_solc_assembly_output "{ let x:u256 := bitnot(7:u256) }" "{ let x := bitnot(7) }" "--yul" test_solc_assembly_output "{ let x:u256 := bitnot(7:u256) }" "{ let x := bitnot(7) }" "--yul --ir-optimized"
test_solc_assembly_output "{ let t:bool := not(true) }" "{ let t:bool := not(true) }" "--yul" test_solc_assembly_output "{ let t:bool := not(true) }" "{ let t:bool := not(true) }" "--yul --ir-optimized"
test_solc_assembly_output "{ let x := 0 }" "{ let x := 0 }" "--strict-assembly" test_solc_assembly_output "{ let x := 0 }" "{ let x := 0 }" "--strict-assembly --ir-optimized"
test_solc_assembly_output "{ let x := 0 }" "{ { } }" "--strict-assembly --optimize" test_solc_assembly_output "{ let x := 0 }" "{ { } }" "--strict-assembly --optimize --ir-optimized"
) )
printTask "Testing the eqivalence of --experimental-via-ir and a two-stage compilation..." printTask "Testing the eqivalence of --experimental-via-ir and a two-stage compilation..."

View File

@ -1 +1 @@
--assemble --optimize --yul-dialect evm --machine ewasm --assemble --optimize --yul-dialect evm --machine ewasm --bin --asm --ewasm --ewasm-ir --ir-optimized

View File

@ -1 +1 @@
--assemble --optimize --yul-dialect evm --machine ewasm --assemble --optimize --yul-dialect evm --machine ewasm --bin --asm --ewasm --ewasm-ir --ir-optimized

View File

@ -1 +1 @@
--strict-assembly --libraries contract/test.sol:L=0x1234567890123456789012345678901234567890 --strict-assembly --bin --libraries contract/test.sol:L=0x1234567890123456789012345678901234567890

View File

@ -1,26 +1,6 @@
======= linking_strict_assembly/input.yul (EVM) ======= ======= linking_strict_assembly/input.yul (EVM) =======
Pretty printed source:
object "a" {
code {
let addr := linkersymbol("contract/test.sol:L")
sstore(0, addr)
}
}
Binary representation: Binary representation:
7312345678901234567890123456789012345678908060005550 7312345678901234567890123456789012345678908060005550
Text representation:
/* "linking_strict_assembly/input.yul":44:79 */
linkerSymbol("f919ba91ac99f96129544b80b9516b27a80e376b9dc693819d0b18b7e0395612")
/* "linking_strict_assembly/input.yul":98:102 */
dup1
/* "linking_strict_assembly/input.yul":95:96 */
0x00
/* "linking_strict_assembly/input.yul":88:103 */
sstore
/* "linking_strict_assembly/input.yul":22:109 */
pop

View File

@ -1 +1 @@
--strict-assembly --libraries :L=0x1234567890123456789012345678901234567890 --debug-info none --strict-assembly --bin --libraries :L=0x1234567890123456789012345678901234567890 --debug-info none

View File

@ -1,21 +1,5 @@
======= linking_strict_assembly_qualified_library_qualified_reference/input.yul (EVM) ======= ======= linking_strict_assembly_qualified_library_qualified_reference/input.yul (EVM) =======
Pretty printed source:
object "a" {
code {
let addr := linkersymbol(":L")
sstore(0, addr)
}
}
Binary representation: Binary representation:
7312345678901234567890123456789012345678908060005550 7312345678901234567890123456789012345678908060005550
Text representation:
linkerSymbol("20a18a9bf97d889dcf77111b674da319a4e9e3e05d3f4df9e0bf5c588dd4f0f8")
dup1
0x00
sstore
pop

View File

@ -1 +1 @@
--strict-assembly --libraries :L=0x1234567890123456789012345678901234567890 --debug-info none --strict-assembly --bin --libraries :L=0x1234567890123456789012345678901234567890 --debug-info none

View File

@ -1,21 +1,5 @@
======= linking_strict_assembly_qualified_library_unqualified_reference/input.yul (EVM) ======= ======= linking_strict_assembly_qualified_library_unqualified_reference/input.yul (EVM) =======
Pretty printed source:
object "a" {
code {
let addr := linkersymbol("L")
sstore(0, addr)
}
}
Binary representation: Binary representation:
73__$8aa64f937099b65a4febc243a5ae0f2d64$__8060005550 73__$8aa64f937099b65a4febc243a5ae0f2d64$__8060005550
Text representation:
linkerSymbol("8aa64f937099b65a4febc243a5ae0f2d6416bb9e473c30dd29c1ee498fb7c5a8")
dup1
0x00
sstore
pop

View File

@ -1 +1 @@
--strict-assembly --libraries library1.sol:L=0x1111111111111111111111111111111111111111,library2.sol:L=0x2222222222222222222222222222222222222222 --strict-assembly --bin --libraries library1.sol:L=0x1111111111111111111111111111111111111111,library2.sol:L=0x2222222222222222222222222222222222222222

View File

@ -1,37 +1,5 @@
======= linking_strict_assembly_same_library_name_different_files/input.yul (EVM) ======= ======= linking_strict_assembly_same_library_name_different_files/input.yul (EVM) =======
Pretty printed source:
object "a" {
code {
let addr1 := linkersymbol("library1.sol:L")
let addr2 := linkersymbol("library2.sol:L")
sstore(0, addr1)
sstore(1, addr2)
}
}
Binary representation: Binary representation:
73111111111111111111111111111111111111111173222222222222222222222222222222222222222281600055806001555050 73111111111111111111111111111111111111111173222222222222222222222222222222222222222281600055806001555050
Text representation:
/* "linking_strict_assembly_same_library_name_different_files/input.yul":45:75 */
linkerSymbol("f3ffc10c396a7cc41ae954b050792839d20947bf73497d30c49a9fda1ea477ec")
/* "linking_strict_assembly_same_library_name_different_files/input.yul":97:127 */
linkerSymbol("c3523432985587641d17c68161d2f700c57aaf4ed21cda4f25d76193c831f97f")
/* "linking_strict_assembly_same_library_name_different_files/input.yul":146:151 */
dup2
/* "linking_strict_assembly_same_library_name_different_files/input.yul":143:144 */
0x00
/* "linking_strict_assembly_same_library_name_different_files/input.yul":136:152 */
sstore
/* "linking_strict_assembly_same_library_name_different_files/input.yul":171:176 */
dup1
/* "linking_strict_assembly_same_library_name_different_files/input.yul":168:169 */
0x01
/* "linking_strict_assembly_same_library_name_different_files/input.yul":161:177 */
sstore
/* "linking_strict_assembly_same_library_name_different_files/input.yul":22:183 */
pop
pop

View File

@ -1 +1 @@
--strict-assembly --libraries library1.sol:L=0x1234567890123456789012345678901234567890 --strict-assembly --bin --libraries library1.sol:L=0x1234567890123456789012345678901234567890

View File

@ -1,37 +1,5 @@
======= linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul (EVM) ======= ======= linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul (EVM) =======
Pretty printed source:
object "a" {
code {
let addr1 := linkersymbol("library1.sol:L")
let addr2 := linkersymbol("library2.sol:L")
sstore(0, addr1)
sstore(1, addr2)
}
}
Binary representation: Binary representation:
73123456789012345678901234567890123456789073__$c3523432985587641d17c68161d2f700c5$__81600055806001555050 73123456789012345678901234567890123456789073__$c3523432985587641d17c68161d2f700c5$__81600055806001555050
Text representation:
/* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":45:75 */
linkerSymbol("f3ffc10c396a7cc41ae954b050792839d20947bf73497d30c49a9fda1ea477ec")
/* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":97:127 */
linkerSymbol("c3523432985587641d17c68161d2f700c57aaf4ed21cda4f25d76193c831f97f")
/* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":146:151 */
dup2
/* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":143:144 */
0x00
/* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":136:152 */
sstore
/* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":171:176 */
dup1
/* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":168:169 */
0x01
/* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":161:177 */
sstore
/* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":22:183 */
pop
pop

View File

@ -1 +1 @@
--strict-assembly --libraries L=0x1234567890123456789012345678901234567890 --debug-info none --strict-assembly --bin --libraries L=0x1234567890123456789012345678901234567890 --debug-info none

View File

@ -1,21 +1,5 @@
======= linking_strict_assembly_unqualified_library_qualified_reference/input.yul (EVM) ======= ======= linking_strict_assembly_unqualified_library_qualified_reference/input.yul (EVM) =======
Pretty printed source:
object "a" {
code {
let addr := linkersymbol(":L")
sstore(0, addr)
}
}
Binary representation: Binary representation:
73__$20a18a9bf97d889dcf77111b674da319a4$__8060005550 73__$20a18a9bf97d889dcf77111b674da319a4$__8060005550
Text representation:
linkerSymbol("20a18a9bf97d889dcf77111b674da319a4e9e3e05d3f4df9e0bf5c588dd4f0f8")
dup1
0x00
sstore
pop

View File

@ -1 +1 @@
--strict-assembly --libraries L=0x1234567890123456789012345678901234567890 --debug-info none --strict-assembly --bin --libraries L=0x1234567890123456789012345678901234567890 --debug-info none

View File

@ -1,21 +1,5 @@
======= linking_strict_assembly_unqualified_library_unqualified_reference/input.yul (EVM) ======= ======= linking_strict_assembly_unqualified_library_unqualified_reference/input.yul (EVM) =======
Pretty printed source:
object "a" {
code {
let addr := linkersymbol("L")
sstore(0, addr)
}
}
Binary representation: Binary representation:
7312345678901234567890123456789012345678908060005550 7312345678901234567890123456789012345678908060005550
Text representation:
linkerSymbol("8aa64f937099b65a4febc243a5ae0f2d6416bb9e473c30dd29c1ee498fb7c5a8")
dup1
0x00
sstore
pop

View File

@ -1 +1 @@
--strict-assembly --libraries contract/test.sol:L1=0x1234567890123456789012345678901234567890 --strict-assembly --bin --libraries contract/test.sol:L1=0x1234567890123456789012345678901234567890

View File

@ -1,37 +1,5 @@
======= linking_strict_assembly_unresolved_references/input.yul (EVM) ======= ======= linking_strict_assembly_unresolved_references/input.yul (EVM) =======
Pretty printed source:
object "a" {
code {
let addr1 := linkersymbol("contract/test.sol:L1")
let addr2 := linkersymbol("contract/test.sol:L2")
sstore(0, addr1)
sstore(1, addr2)
}
}
Binary representation: Binary representation:
73123456789012345678901234567890123456789073__$fb58009a6b1ecea3b9d99bedd645df4ec3$__81600055806001555050 73123456789012345678901234567890123456789073__$fb58009a6b1ecea3b9d99bedd645df4ec3$__81600055806001555050
Text representation:
/* "linking_strict_assembly_unresolved_references/input.yul":45:81 */
linkerSymbol("05b0326038374a21e0895480a58bda0768cdcc04c8d18f154362d1ca5223d245")
/* "linking_strict_assembly_unresolved_references/input.yul":103:139 */
linkerSymbol("fb58009a6b1ecea3b9d99bedd645df4ec308f17bc0087e5f39d078f77f809177")
/* "linking_strict_assembly_unresolved_references/input.yul":158:163 */
dup2
/* "linking_strict_assembly_unresolved_references/input.yul":155:156 */
0x00
/* "linking_strict_assembly_unresolved_references/input.yul":148:164 */
sstore
/* "linking_strict_assembly_unresolved_references/input.yul":183:188 */
dup1
/* "linking_strict_assembly_unresolved_references/input.yul":180:181 */
0x01
/* "linking_strict_assembly_unresolved_references/input.yul":173:189 */
sstore
/* "linking_strict_assembly_unresolved_references/input.yul":22:195 */
pop
pop

View File

@ -1 +1 @@
--strict-assembly --optimize --strict-assembly --optimize --bin --asm --ir-optimized

View File

@ -1 +1 @@
--strict-assembly --debug-info all --strict-assembly --debug-info all --bin --asm --ewasm --ewasm-ir --ir-optimized

View File

@ -1 +1 @@
--strict-assembly --debug-info location --strict-assembly --debug-info location --bin --asm --ewasm --ewasm-ir --ir-optimized

View File

@ -1 +1 @@
--strict-assembly --debug-info none --strict-assembly --debug-info none --bin --asm --ewasm --ewasm-ir --ir-optimized

View File

@ -1 +1 @@
--strict-assembly --optimize --yul-optimizations dhfoDgvulfnTUtnIf --strict-assembly --optimize --ir-optimized --yul-optimizations dhfoDgvulfnTUtnIf

View File

@ -22,64 +22,3 @@ object "C_6" {
} }
} }
} }
Binary representation:
608060405234601557600e601b600039600e6000f35b600080fdfe60806040523615600055600080fd
Text representation:
/* "strict_asm_optimizer_steps/input.yul":45:48 */
0x80
/* "strict_asm_optimizer_steps/input.yul":41:43 */
0x40
/* "strict_asm_optimizer_steps/input.yul":34:49 */
mstore
/* "strict_asm_optimizer_steps/input.yul":61:72 */
callvalue
/* "strict_asm_optimizer_steps/input.yul":58:89 */
tag_1
jumpi
/* "strict_asm_optimizer_steps/input.yul":138:162 */
dataSize(sub_0)
/* "strict_asm_optimizer_steps/input.yul":110:136 */
dataOffset(sub_0)
/* "strict_asm_optimizer_steps/input.yul":107:108 */
0x00
/* "strict_asm_optimizer_steps/input.yul":98:163 */
codecopy
/* "strict_asm_optimizer_steps/input.yul":182:206 */
dataSize(sub_0)
/* "strict_asm_optimizer_steps/input.yul":179:180 */
0x00
/* "strict_asm_optimizer_steps/input.yul":172:207 */
return
/* "strict_asm_optimizer_steps/input.yul":73:89 */
tag_1:
/* "strict_asm_optimizer_steps/input.yul":85:86 */
0x00
/* "strict_asm_optimizer_steps/input.yul":75:87 */
dup1
revert
stop
sub_0: assembly {
/* "strict_asm_optimizer_steps/input.yul":298:301 */
0x80
/* "strict_asm_optimizer_steps/input.yul":294:296 */
0x40
/* "strict_asm_optimizer_steps/input.yul":287:302 */
mstore
/* "strict_asm_optimizer_steps/input.yul":533:547 */
calldatasize
/* "strict_asm_optimizer_steps/input.yul":526:548 */
iszero
/* "strict_asm_optimizer_steps/input.yul":523:524 */
0x00
/* "strict_asm_optimizer_steps/input.yul":516:549 */
sstore
/* "strict_asm_optimizer_steps/input.yul":576:577 */
0x00
/* "strict_asm_optimizer_steps/input.yul":566:578 */
dup1
revert
}

View File

@ -1 +1 @@
--yul --yul-dialect ewasm --machine ewasm --yul --yul-dialect ewasm --machine ewasm --bin --ewasm --ewasm-ir --ir-optimized

View File

@ -1 +1 @@
--yul --yul-dialect ewasm --machine ewasm --yul --yul-dialect ewasm --machine ewasm --bin --ewasm --ewasm-ir --ir-optimized

View File

@ -1 +1 @@
--strict-assembly --debug-info none --strict-assembly --debug-info none --bin --asm --ir-optimized

View File

@ -1 +1 @@
--strict-assembly --strict-assembly --bin --asm --ir-optimized

View File

@ -1 +1 @@
--yul --yul-dialect evm --optimize --optimize-runs 10000 --yul --yul-dialect evm --optimize --bin --asm --ir-optimized --optimize-runs 10000

View File

@ -1 +1 @@
--strict-assembly --strict-assembly --bin --asm --ir-optimized

View File

@ -1 +1 @@
--strict-assembly --optimize --strict-assembly --bin --asm --ir-optimized --optimize