#!/bin/bash
set -e

passargs="$1"
input_ir="$2"
output_ir="$3"

NOELLE_NORM="noelle-norm"
NOELLE_LOAD="noelle-load"

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
ROOT="$DIR/.."

PASS_LIB_DIR="$ROOT/passes/install/lib"

echo "Using plugin: $passlib"
echo "Using plugin options: $passargs"
echo "Input IR: $input_ir"
echo "Output IR: $output_ir"

function run() {
    cmd="${1//\"/\\\"}"
    echo "pass-apply: $cmd"
    eval "$cmd" || exit_on_error "An error occured running: $cmd"
}

# Collect all the pass libraries
PASS_LIBS=""
for i in $PASS_LIB_DIR/*.so; do
    [ -f "$i" ] || break
    PASS_LIBS="$PASS_LIBS -load $(realpath $i)"
done

# Normalize
run "$NOELLE_NORM -S $input_ir -o norm-$input_ir"

# Apply the pass
run "$NOELLE_LOAD $PASS_LIBS $passargs -S norm-$input_ir -o $output_ir"
