name: PGO Build on: workflow_dispatch: schedule: - cron: '0 2 * * 0' jobs: pgo-build: name: Profile-Guided Optimization Build runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y gcc make python3 - name: Clean previous builds run: make clean - name: Generate profile data run: make test_benchmark_pgo_gen - name: Run profiling passes run: | ./test_benchmark_pgo ./test_benchmark_pgo ./test_benchmark_pgo - name: Build with PGO run: | gcc -Wall -Wextra -std=gnu99 -O3 -march=native -I. -fprofile-use -fprofile-correction \ -o test_benchmark_pgo \ lexer/lexer_tokenizer.c lexer/lexer_keywords.c lexer/lexer_literals.c \ parser/parser.c parser/parser_expressions.c parser/parser_statements.c parser/parser_declarations.c parser/parser_printer.c \ types/types.c \ semantic/symbol_table.c semantic/semantic.c \ ir/ir.c ir/ir_gen.c \ runtime/runtime.c runtime/labeltable.c runtime/methodcache.c runtime/fastframe.c runtime/superinst.c \ tests/test_benchmark.c \ -ldl - name: Run PGO benchmark run: ./test_benchmark_pgo - name: Upload PGO binary uses: actions/upload-artifact@v4 with: name: rava-pgo path: test_benchmark_pgo