# it from finding a problem unless the set of failing optimizations are
# known and given to it on the command line.
#
-# Given a bytecode file that produces correct output (or return code),
+# Given a bitcode file that produces correct output (or return code),
# this script will run through all the optimizations passes that gccas
# uses (in the same order) and will narrow down which optimizations
# cause the program either generate different output or return a
#
# Where:
# bcfile
-# is the bytecode file input (the unoptimized working case)
+# is the bitcode file input (the unoptimized working case)
# outdir
# is a directory into which intermediate results are placed
# progargs
echo "Unoptimized program: $prog"
echo " Optimized program: $optprog"
+# Define the list of optimizations to run. This comprises the same set of
+# optimizations that opt -O3 runs, in the same order.
+opt_switches=`llvm-as < /dev/null -o - | opt -O3 -disable-output -debug-pass=Arguments 2>&1 | sed 's/Pass Arguments: //'`
+all_switches="$opt_switches"
+echo "Passes : $all_switches"
+
# Create output directory if it doesn't exist
if [ -f "$outdir" ] ; then
echo "$outdir is not a directory"
"$prog" $args > "$out" 2>&1 <$input
ex1=$?
-# Define the list of optimizations to run. This comprises the same set of
-# optimizations that opt -std-compile-opts and gccld run, in the same order.
-opt_switches=`llvm-as < /dev/null -o - | opt -std-compile-opts -disable-output -debug-pass=Arguments 2>&1 | sed 's/Pass Arguments: //'`
-gccld_switches="-internalize -ipsccp -globalopt -constmerge -deadargelim -inline -prune-eh -globalopt -globaldce -argpromotion -instcombine -predsimplify -scalarrepl -globalsmodref-aa -licm -load-vn -gcse -dse -instcombine -simplifycfg -verify"
-all_switches="$opt_switches $gccld_switches"
-echo "Passes : $all_switches"
-
# Current set of switches is empty
function tryit {
switches_to_use="$1"