mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
78 lines
3.3 KiB
Bash
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
|