diff --git a/artifact/docker/Dockerfile b/artifact/docker/Dockerfile index 568a227..e123120 100644 --- a/artifact/docker/Dockerfile +++ b/artifact/docker/Dockerfile @@ -3,15 +3,15 @@ WORKDIR /src RUN apt update && apt upgrade -y RUN apt install -y sudo \ - git \ - tcl \ - tcl-dev \ - vim \ - build-essential \ - cmake \ - ninja-build \ - python3 \ - python3-venv + git \ + tcl \ + tcl-dev \ + vim \ + build-essential \ + cmake \ + ninja-build \ + python3 \ + python3-venv RUN python3 -m venv /src/venv-py ENV PATH="/src/venv-py/bin:$PATH" @@ -22,11 +22,11 @@ RUN git clone --depth 100 -b merge-functions-pass https://github.com/Casperento/ WORKDIR llvm-project RUN mkdir -p build RUN cmake -G Ninja \ - -DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld' \ - -DCMAKE_BUILD_TYPE="Release" \ - -DLLVM_TARGETS_TO_BUILD=X86 \ - -DLLVM_ENABLE_ASSERTIONS=On \ - -S llvm -B build + -DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld' \ + -DCMAKE_BUILD_TYPE="Release" \ + -DLLVM_TARGETS_TO_BUILD=X86 \ + -DLLVM_ENABLE_ASSERTIONS=On \ + -S llvm -B build RUN cmake --build build -- -j 10 ENV PATH="/src/llvm-project/build/bin:$PATH" @@ -45,46 +45,28 @@ WORKDIR llvm-test-suite RUN mkdir -p build RUN mkdir -p /lit-results -RUN cmake -G "Ninja" \ - -DCMAKE_C_COMPILER=clang \ - -DCMAKE_CXX_COMPILER=clang++ \ - -DCMAKE_C_FLAGS="-flto" \ - -DCMAKE_CXX_FLAGS="-flto" \ - -DTEST_SUITE_COLLECT_INSTCOUNT=ON \ - -DTEST_SUITE_SELECTED_PASSES= \ - -DTEST_SUITE_PASSES_ARGS= \ - -DTEST_SUITE_COLLECT_COMPILE_TIME=OFF \ - -DCMAKE_EXE_LINKER_FLAGS="-flto -fuse-ld=lld -Wl,--plugin-opt=-lto-embed-bitcode=post-merge-pre-opt" \ - "-DTEST_SUITE_SUBDIRS=SingleSource;MultiSource" \ - -C "cmake/caches/Os.cmake" \ - -S . -B build -RUN cmake --build build -- -j 10 || exit 0 -RUN llvm-lit \ - --timeout 200 \ - -j 10 \ - -s \ - -o /lit-results/baseline.json build || exit 0 - -RUN rm -rf build/* - -RUN cmake -G "Ninja" \ - -DCMAKE_C_COMPILER=clang \ - -DCMAKE_CXX_COMPILER=clang++ \ - -DCMAKE_C_FLAGS="-flto" \ - -DCMAKE_CXX_FLAGS="-flto" \ - -DTEST_SUITE_COLLECT_INSTCOUNT=ON \ - -DTEST_SUITE_SELECTED_PASSES=daedalus \ - "-DTEST_SUITE_PASSES_ARGS=-load-pass-plugin=/src/Daedalus/build/lib/libdaedalus.so" \ - -DTEST_SUITE_COLLECT_COMPILE_TIME=OFF \ - -DCMAKE_EXE_LINKER_FLAGS="-flto -fuse-ld=lld -Wl,--plugin-opt=-lto-embed-bitcode=post-merge-pre-opt" \ - "-DTEST_SUITE_SUBDIRS=SingleSource;MultiSource" \ - -C "cmake/caches/Os.cmake" \ - -S . -B build -RUN cmake --build build -- -k 0 -j 10 || exit 0 -RUN llvm-lit \ - --timeout 200 \ - -j 10 \ - -s \ - -o /lit-results/daedalus.json build || exit 0 +# Clone daedalus-dbg-toolkit to run the experiment +WORKDIR /src +RUN git clone https://github.com/Casperento/daedalus-dbg-toolkit.git +RUN python3 -m pip install -r /src/daedalus-dbg-toolkit/requirements.txt -RUN python3 utils/compare.py --full --diff -m instcount -m size..text /lit-results/baseline.json /lit-results/daedalus.json > /lit-results/comparison_results.txt +# Build llvm with func-merging pass +RUN git clone --depth 100 -b code-size https://github.com/rcorcs/llvm-project.git code-size +WORKDIR code-size +RUN mkdir -p build +RUN cmake -G Ninja \ + -DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld' \ + -DCMAKE_BUILD_TYPE="Release" \ + -DLLVM_TARGETS_TO_BUILD=X86 \ + -DLLVM_ENABLE_ASSERTIONS=On \ + -S llvm -B build +RUN cmake --build build -- -j 10 +WORKDIR /src/daedalus-dbg-toolkit +RUN ./run-experiment.sh -w 10 \ + -t 120 \ + --llvm-project /src/llvm-project \ + --code-size /src/code-size \ + --llvm-test-suite /src/llvm-test-suite \ + --daedalus /src/Daedalus \ + --lit-results /lit-results \ + --errors-dbg /src/daedalus-dbg-toolkit