mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
[libjenkins] Add libjenkins.pipelines.sh, an extension that is sourced after libjenkins that provides the ability to run various pipelines.
Swift SVN r24120
This commit is contained in:
88
utils/pass-pipeline/scripts/libjenkins.pipelines.sh
Normal file
88
utils/pass-pipeline/scripts/libjenkins.pipelines.sh
Normal file
@@ -0,0 +1,88 @@
|
||||
#!/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
|
||||
}
|
||||
|
||||
PIPELINE_SCRIPT=$PWD/swift/src/tools/swift/utils/pass-pipeline/scripts/normal_pipeline.py
|
||||
OUTPUT_DIR=$PWD/pipeline_dir
|
||||
rm -rfv $OUTPUT_DIR
|
||||
mkdir -p $OUTPUT_DIR
|
||||
|
||||
build_bni_with_slice_pipelines_disabled "$PIPELINE_SCRIPT" "$OUTPUT_DIR"
|
||||
build_bni_with_individual_pipelines_disabled "$PIPELINE_SCRIPT" "$OUTPUT_DIR"
|
||||
build_bni_with_individual_passes_disabled "$PIPELINE_SCRIPT" "$OUTPUT_DIR"
|
||||
|
||||
time clear_workspace
|
||||
|
||||
set +u
|
||||
set +x
|
||||
Reference in New Issue
Block a user