Files
swift-mirror/utils/pass-pipeline/scripts/libjenkins.pipelines.sh

78 lines
3.3 KiB
Bash

#!/bin/bash
set +x
set +u
# This is a file which defines helper routines based off of libjenkins for
# working with pipelines. You must source libjenkins before you call this.
###########
# Helpers #
###########
map_array() {
local ARRAY=( $1 )
local PATTERN="$2"
for p in ${ARRAY[@]}; do
echo $p
done | xargs -I elt printf "$PATTERN" elt
}
#################
# Main Routines #
#################
PIPELINES=( "PreSpecialize" "HighLevel" "EarlyLoopOpt" "MidLevelOpt" "Lower" "LowLevel" "LateLoopOpt" )
build_bni_with_slice_pipelines_disabled() {
local SCRIPT=$1
local OUTPUT_DIR=$2
local PIPELINE_LENGTH="${#PIPELINES[@]}"
local SEQ_END_POINT=$(($PIPELINE_LENGTH-1))
for i in $(seq $SEQ_END_POINT); do
PIPELINE_SLICE="${PIPELINES[@]:$i}"
DATA_FILE=$(printf "$OUTPUT_DIR/pipeline-slice-%.2d-disabled-pipeline.json" $i)
PIPELINE_SLICE_OPTIONS=$(map_array "${PIPELINE_SLICE[@]}" " --disable-passpipeline %s ")
$SCRIPT $PIPELINE_SLICE_OPTIONS > $DATA_FILE
local EXTRA_FLAGS="-DSWIFT_EXTRA_FLAGS='-Xfrontend;-external-pass-pipeline-filename;-Xfrontend;$DATA_FILE'"
echo "Building Stdlib with Slice: ${PIPELINES[@]::$i}..."
build_swift_stdlib SWIFT_USE_OPTIMIZED=1 SWIFT_USE_ASSERTIONS=1 SWIFT_EXTRA_CMAKE_FLAGS="$EXTRA_FLAGS" SWIFT_STDLIB_PLATFORMS=macosx-10.9-internal-x86_64
done
}
build_bni_with_individual_pipelines_disabled() {
local SCRIPT=$1
local OUTPUT_DIR=$2
local PIPELINE_LENGTH="${#PIPELINES[@]}"
local SEQ_END_POINT=$(($PIPELINE_LENGTH-1))
for pipeline in "${PIPELINES[@]}"; do
DATA_FILE=$(printf "$OUTPUT_DIR/%s-disabled-pipeline.json" $pipeline)
$SCRIPT --disable-passpipeline "$pipeline" > $DATA_FILE
local EXTRA_FLAGS="-DSWIFT_EXTRA_FLAGS='-Xfrontend;-external-pass-pipeline-filename;-Xfrontend;$DATA_FILE'"
echo "Building Stdlib with pass manager $pipeline disabled."
build_swift_stdlib SWIFT_USE_OPTIMIZED=1 SWIFT_USE_ASSERTIONS=1 SWIFT_EXTRA_CMAKE_FLAGS="$EXTRA_FLAGS" SWIFT_STDLIB_PLATFORMS=macosx-10.9-internal-x86_64
done
}
PASSES=( "ABCOpt" "AllocBoxToStack" "COWArrayOpts" "CSE" "CapturePromotion" "CapturePropagation" "ClosureSpecializer" "CodeMotion" "CopyForwarding" "DCE" "DeadFunctionElimination" "DeadObjectElimination" "Devirtualizer" "EarlyInliner" "FunctionSignatureOpts" "GenericSpecializer" "GlobalARCOpts" "GlobalLoadStoreOpts" "GlobalOpt" "InlineCaches" "InstCount" "LICM" "LateInliner" "LoopRotate" "LowerAggregateInstrs" "MandatoryInlining" "Mem2Reg" "NoReturnFolding" "PerfInliner" "PerformanceConstantPropagation" "SILCleanup" "SILCombine" "SILLinker" "SROA" "SimplifyCFG" "SwiftArrayOpts" )
build_bni_with_individual_passes_disabled() {
local SCRIPT=$1
local OUTPUT_DIR=$2
local PIPELINE_LENGTH="${#PIPELINES[@]}"
local SEQ_END_POINT=$(($PIPELINE_LENGTH-1))
for pass in "${PASSES[@]}"; do
DATA_FILE=$(printf "$OUTPUT_DIR/%s-disabled-pass.json" $pass)
$SCRIPT --disable-pass "$pass" > $DATA_FILE
local EXTRA_FLAGS="-DSWIFT_EXTRA_FLAGS='-Xfrontend;-external-pass-pipeline-filename;-Xfrontend;$DATA_FILE'"
echo "Building Stdlib with pass $pass disabled."
build_swift_stdlib SWIFT_USE_OPTIMIZED=1 SWIFT_USE_ASSERTIONS=1 SWIFT_EXTRA_CMAKE_FLAGS="$EXTRA_FLAGS" SWIFT_STDLIB_PLATFORMS=macosx-10.9-internal-x86_64
done
}
set -u
set -x