solidity/test/cmdlineTests/~name_dependent_cse_bug/test.sh

29 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -eo pipefail
# This is a regression test against https://github.com/ethereum/solidity/issues/14494
# Due to the bug, a decision about which variable to use to replace a subexpression in CSE would
# depend on sorting order of variable names. A variable not being used as a replacement could lead
# to it being unused in general and removed by Unused Pruner. This would show up as a difference
# in the bytecode.
# shellcheck source=scripts/common.sh
source "${REPO_ROOT}/scripts/common.sh"
# shellcheck source=scripts/common_cmdline.sh
source "${REPO_ROOT}/scripts/common_cmdline.sh"
SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
function assemble_with_variable_name {
local input_file="$1"
local variable_name="$2"
sed -e "s|__placeholder__|${variable_name}|g" "$input_file" | msg_on_error --no-stderr \
"$SOLC" --strict-assembly - --optimize --debug-info none |
stripCLIDecorations
}
diff_values \
"$(assemble_with_variable_name "${SCRIPT_DIR}/cse_bug.yul" _1)" \
"$(assemble_with_variable_name "${SCRIPT_DIR}/cse_bug.yul" _2)"