summaryrefslogtreecommitdiffstats
path: root/contrib/llvm/utils/findoptdiff
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm/utils/findoptdiff')
-rwxr-xr-xcontrib/llvm/utils/findoptdiff101
1 files changed, 0 insertions, 101 deletions
diff --git a/contrib/llvm/utils/findoptdiff b/contrib/llvm/utils/findoptdiff
deleted file mode 100755
index 4f8d08d..0000000
--- a/contrib/llvm/utils/findoptdiff
+++ /dev/null
@@ -1,101 +0,0 @@
-#!/bin/bash
-#
-# findoptdiff
-#
-# This script helps find the optimization difference between two llvm
-# builds. It is useful when you have a build that is known to work and
-# one that exhibits an optimization problem. Identifying the difference
-# between the two builds can lead to discovery of the source of a
-# mis-optimization.
-#
-# The script takes two llvm build paths as arguments. These specify the
-# the two llvm builds to compare. It is generally expected that they
-# are "close cousins". That is, they are the same except that the
-# second build contains some experimental optimization features that
-# are suspected of producing a misoptimization.
-#
-# The script takes two bytecode files, one from each build. They are
-# presumed to be a compilation of the same program or program fragment
-# with the only difference being the builds.
-#
-# The script operates by iteratively applying the optimizations that gccas
-# and gccld run until there is a difference in the assembly resulting
-# from the optimization. The difference is then reported with the set of
-# optimization passes that produce the difference. The processing
-# continues until all optimization passes have been tried. The differences
-# for each pass, if they do differ, are placed in a diffs.# file.
-#
-# To work around differences in the assembly language format, the script
-# can also take two filter arguments that post-process the assembly
-# so they can be differenced without making false positives for known
-# differences in the two builds. These filters are optional.
-#
-# Usage:
-# findoptdiff llvm1 llvm2 bc1 bc2 filter1 filter2
-#
-# Where:
-# llvm1
-# is the path to the first llvm build dir
-# llvm2
-# is the path to the second llvm build dir
-# bc1
-# is the bytecode file for the first llvm environment
-# bc2
-# is the bytecode file for the second llvm environment
-# filter1
-# is an optional filter for filtering the llvm1 generated assembly
-# filter2
-# is an optional filter for filtering the llvm2 generated assembly
-#
-llvm1=$1
-llvm2=$2
-bc1=$3
-bc2=$4
-filt1=$5
-filt2=$6
-if [ -z "$filt1" ] ; then
- filt1="cat"
-fi
-if [ -z "$filt2" ] ; then
- filt2="cat"
-fi
-opt1="${bc1}.opt"
-opt2="${bc2}.opt"
-ll1="${bc1}.ll"
-ll2="${bc2}.ll"
-opt1ll="${bc1}.opt.ll"
-opt2ll="${bc2}.opt.ll"
-dis1="$llvm1/Debug/bin/llvm-dis"
-dis2="$llvm2/Debug/bin/llvm-dis"
-opt1="$llvm1/Debug/bin/opt"
-opt2="$llvm2/Debug/bin/opt"
-
-all_switches="-verify -lowersetjmp -simplifycfg -mem2reg -globalopt -globaldce -ipconstprop -deadargelim -instcombine -simplifycfg -prune-eh -inline -simplify-libcalls -argpromotion -tailduplicate -simplifycfg -scalarrepl -instcombine -predsimplify -condprop -tailcallelim -simplifycfg -reassociate -licm -loop-unswitch -instcombine -indvars -loop-unroll -instcombine -load-vn -gcse -sccp -instcombine -condprop -dse -dce -simplifycfg -deadtypeelim -constmerge -internalize -ipsccp -globalopt -constmerge -deadargelim -inline -prune-eh -globalopt -globaldce -argpromotion -instcombine -predsimplify -scalarrepl -globalsmodref-aa -licm -load-vn -gcse -dse -instcombine -simplifycfg -verify"
-
-#counter=0
-function tryit {
- switches_to_use="$1"
- $opt1 $switches_to_use "$bc1" -o - | $dis1 | $filt1 > "$opt1ll"
- $opt2 $switches_to_use "$bc2" -o - | $dis2 | $filt2 > "$opt2ll"
- diffs="diffs."$((counter++))
- diff "$opt1ll" "$opt2ll" > $diffs
- if [ $? -ne 0 ] ; then
- echo
- echo "Diff fails with these switches:"
- echo $switches
- echo "Differences:"
- head $diffs
- echo 'Switches:' $switches_to_use >> $diffs
- else
- rm $diffs
- fi
- return 1
-}
-
-for sw in $all_switches ; do
- echo -n " $sw"
- switches="$switches $sw"
- if tryit "$switches" ; then
- break;
- fi
-done
OpenPOWER on IntegriCloud