From 0ce5e4c94d4fc2d5373eb2251c191b32a3c1f7a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20=C5=9Aliwak?= Date: Tue, 23 May 2023 15:10:01 +0200 Subject: [PATCH 1/4] test_via_ir_equivalence(): Use assertions for precondition checks --- test/cmdlineTests.sh | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/test/cmdlineTests.sh b/test/cmdlineTests.sh index c492f5290..110199c09 100755 --- a/test/cmdlineTests.sh +++ b/test/cmdlineTests.sh @@ -317,14 +317,9 @@ function test_via_ir_equivalence() pushd "$SOLTMPDIR" > /dev/null (( $# <= 2 )) || fail "This function accepts at most two arguments." - - if [[ $2 != --optimize ]] && [[ $2 != "" ]] - then - fail "The second argument must be --optimize if present." - fi - local solidity_file="$1" local optimize_flag="$2" + [[ $optimize_flag == --optimize || $optimize_flag == "" ]] || assertFail "The second argument must be --optimize if present." output_file_prefix=$(basename "$1" .sol) From 17aacfdb6aabda73b08146a475b8dcb07c453636 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20=C5=9Aliwak?= Date: Tue, 23 May 2023 15:25:48 +0200 Subject: [PATCH 2/4] test_via_ir_equivalence(): Fix quoting and locals --- test/cmdlineTests.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/cmdlineTests.sh b/test/cmdlineTests.sh index 110199c09..69ae6e46b 100755 --- a/test/cmdlineTests.sh +++ b/test/cmdlineTests.sh @@ -321,6 +321,7 @@ function test_via_ir_equivalence() local optimize_flag="$2" [[ $optimize_flag == --optimize || $optimize_flag == "" ]] || assertFail "The second argument must be --optimize if present." + local output_file_prefix output_file_prefix=$(basename "$1" .sol) local optimizer_flags=() @@ -329,7 +330,7 @@ function test_via_ir_equivalence() msg_on_error --no-stderr "$SOLC" --ir-optimized --debug-info location "${optimizer_flags[@]}" "$solidity_file" | sed '/^Optimized IR:$/d' | - split_on_empty_lines_into_numbered_files $output_file_prefix ".yul" + split_on_empty_lines_into_numbered_files "$output_file_prefix" ".yul" for yul_file in $(find . -name "${output_file_prefix}*.yul" | sort -V); do msg_on_error --no-stderr "$SOLC" --strict-assembly --asm "${optimizer_flags[@]}" "$yul_file" | From bcdb41f743256a9bd8630829cc2f56bf733c3446 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20=C5=9Aliwak?= Date: Tue, 23 May 2023 15:28:18 +0200 Subject: [PATCH 3/4] test_via_ir_equivalence(): Remove unnecessary filter for `asm_output_two_stage` - This bit will never actually appear in the output file. --- test/cmdlineTests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/cmdlineTests.sh b/test/cmdlineTests.sh index 69ae6e46b..8f4be1140 100755 --- a/test/cmdlineTests.sh +++ b/test/cmdlineTests.sh @@ -339,7 +339,7 @@ function test_via_ir_equivalence() local asm_output_two_stage asm_output_via_ir for asm_file in $(find . -name "${output_file_prefix}*.asm" | sort -V); do - asm_output_two_stage+=$(sed '/^asm_output_two_stage:$/d' "$asm_file" | sed '/^=======/d') + asm_output_two_stage+=$(sed '/^=======/d') done asm_output_via_ir=$( From 8c5304368d5b8da36046fd501408629716a71819 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20=C5=9Aliwak?= Date: Tue, 23 May 2023 15:30:07 +0200 Subject: [PATCH 4/4] test_via_ir_equivalence(): Simplify by merging the asm loops - And fix indentation --- test/cmdlineTests.sh | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/test/cmdlineTests.sh b/test/cmdlineTests.sh index 8f4be1140..416b97b32 100755 --- a/test/cmdlineTests.sh +++ b/test/cmdlineTests.sh @@ -332,14 +332,14 @@ function test_via_ir_equivalence() sed '/^Optimized IR:$/d' | split_on_empty_lines_into_numbered_files "$output_file_prefix" ".yul" - for yul_file in $(find . -name "${output_file_prefix}*.yul" | sort -V); do - msg_on_error --no-stderr "$SOLC" --strict-assembly --asm "${optimizer_flags[@]}" "$yul_file" | - sed '/^Text representation:$/d' > "${yul_file/.yul/.asm}" - done - local asm_output_two_stage asm_output_via_ir - for asm_file in $(find . -name "${output_file_prefix}*.asm" | sort -V); do - asm_output_two_stage+=$(sed '/^=======/d') + + for yul_file in $(find . -name "${output_file_prefix}*.yul" | sort -V); do + asm_output_two_stage+=$( + msg_on_error --no-stderr "$SOLC" --strict-assembly --asm "${optimizer_flags[@]}" "$yul_file" | + sed '/^Text representation:$/d' | + sed '/^=======/d' + ) done asm_output_via_ir=$( @@ -354,7 +354,7 @@ function test_via_ir_equivalence() for yul_file in $(find . -name "${output_file_prefix}*.yul" | sort -V); do bin_output_two_stage+=$( - msg_on_error --no-stderr "$SOLC" --strict-assembly --bin "${optimizer_flags[@]}" "$yul_file" | + msg_on_error --no-stderr "$SOLC" --strict-assembly --bin "${optimizer_flags[@]}" "$yul_file" | sed '/^Binary representation:$/d' | sed '/^=======/d' ) @@ -362,8 +362,8 @@ function test_via_ir_equivalence() bin_output_via_ir=$( msg_on_error --no-stderr "$SOLC" --via-ir --bin "${optimizer_flags[@]}" "$solidity_file" | - sed '/^Binary:$/d' | - sed '/^=======/d' + sed '/^Binary:$/d' | + sed '/^=======/d' ) diff_values "$bin_output_two_stage" "$bin_output_via_ir" --ignore-space-change --ignore-blank-lines