Skip to content

Commit b8f7cfd

Browse files
committed
[libjenkins] Add libjenkins.pipelines.sh, an extension that is sourced after libjenkins that provides the ability to run various pipelines.
Swift SVN r24120
1 parent b3253f7 commit b8f7cfd

File tree

1 file changed

+88
-0
lines changed

1 file changed

+88
-0
lines changed
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
#!/bin/bash
2+
3+
set -x
4+
set -u
5+
6+
# This is a file which defines helper routines based off of libjenkins for
7+
# working with pipelines. You must source libjenkins before you call this.
8+
9+
###########
10+
# Helpers #
11+
###########
12+
13+
map_array() {
14+
local ARRAY=( $1 )
15+
local PATTERN="$2"
16+
17+
for p in ${ARRAY[@]}; do
18+
echo $p
19+
done | xargs -I elt printf "$PATTERN" elt
20+
}
21+
22+
#################
23+
# Main Routines #
24+
#################
25+
26+
PIPELINES=( "PreSpecialize" "HighLevel" "EarlyLoopOpt" "MidLevelOpt" "Lower" "LowLevel" "LateLoopOpt" )
27+
build_bni_with_slice_pipelines_disabled() {
28+
local SCRIPT=$1
29+
local OUTPUT_DIR=$2
30+
local PIPELINE_LENGTH="${#PIPELINES[@]}"
31+
local SEQ_END_POINT=$(($PIPELINE_LENGTH-1))
32+
33+
for i in $(seq $SEQ_END_POINT); do
34+
PIPELINE_SLICE="${PIPELINES[@]:$i}"
35+
DATA_FILE=$(printf "$OUTPUT_DIR/pipeline-slice-%.2d-disabled-pipeline.json" $i)
36+
PIPELINE_SLICE_OPTIONS=$(map_array "${PIPELINE_SLICE[@]}" " --disable-passpipeline %s ")
37+
$SCRIPT $PIPELINE_SLICE_OPTIONS > $DATA_FILE
38+
local EXTRA_FLAGS="-DSWIFT_EXTRA_FLAGS='-Xfrontend;-external-pass-pipeline-filename;-Xfrontend;$DATA_FILE'"
39+
echo "Building Stdlib with Slice: ${PIPELINES[@]::$i}..."
40+
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
41+
done
42+
}
43+
44+
build_bni_with_individual_pipelines_disabled() {
45+
local SCRIPT=$1
46+
local OUTPUT_DIR=$2
47+
local PIPELINE_LENGTH="${#PIPELINES[@]}"
48+
local SEQ_END_POINT=$(($PIPELINE_LENGTH-1))
49+
50+
for pipeline in "${PIPELINES[@]}"; do
51+
DATA_FILE=$(printf "$OUTPUT_DIR/%s-disabled-pipeline.json" $pipeline)
52+
$SCRIPT --disable-passpipeline "$pipeline" > $DATA_FILE
53+
local EXTRA_FLAGS="-DSWIFT_EXTRA_FLAGS='-Xfrontend;-external-pass-pipeline-filename;-Xfrontend;$DATA_FILE'"
54+
echo "Building Stdlib with pass manager $pipeline disabled."
55+
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
56+
done
57+
}
58+
59+
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" )
60+
61+
build_bni_with_individual_passes_disabled() {
62+
local SCRIPT=$1
63+
local OUTPUT_DIR=$2
64+
local PIPELINE_LENGTH="${#PIPELINES[@]}"
65+
local SEQ_END_POINT=$(($PIPELINE_LENGTH-1))
66+
67+
for pass in "${PASSES[@]}"; do
68+
DATA_FILE=$(printf "$OUTPUT_DIR/%s-disabled-pass.json" $pass)
69+
$SCRIPT --disable-pass "$pass" > $DATA_FILE
70+
local EXTRA_FLAGS="-DSWIFT_EXTRA_FLAGS='-Xfrontend;-external-pass-pipeline-filename;-Xfrontend;$DATA_FILE'"
71+
echo "Building Stdlib with pass $pass disabled."
72+
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
73+
done
74+
}
75+
76+
PIPELINE_SCRIPT=$PWD/swift/src/tools/swift/utils/pass-pipeline/scripts/normal_pipeline.py
77+
OUTPUT_DIR=$PWD/pipeline_dir
78+
rm -rfv $OUTPUT_DIR
79+
mkdir -p $OUTPUT_DIR
80+
81+
build_bni_with_slice_pipelines_disabled "$PIPELINE_SCRIPT" "$OUTPUT_DIR"
82+
build_bni_with_individual_pipelines_disabled "$PIPELINE_SCRIPT" "$OUTPUT_DIR"
83+
build_bni_with_individual_passes_disabled "$PIPELINE_SCRIPT" "$OUTPUT_DIR"
84+
85+
time clear_workspace
86+
87+
set +u
88+
set +x

0 commit comments

Comments
 (0)