-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnim-pgo
executable file
·47 lines (40 loc) · 1.35 KB
/
nim-pgo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/bin/sh
#shopt -s nullglob
: ${nim="nim"}
: ${prog="$1"} #Program to compile
: ${cmd="$2"} #Sample command invocation for profile-guided-optimization
: ${nimO="--cc:gcc -d:danger -d:release"} #nim optimization; e.g. -d:release
: ${nimOpts="$3"} #nim compilation options; e.g. --gc:markAndSweep
: ${nimcache="${XDG_CACHE_HOME:-$HOME/.cache}/nim/${prog}_r"}
: ${BE=c}
: ${ccC="gcc"}
: ${ccG="-g3 -ggdb"}
: ${ccI="-I/usr/lib/nim/lib"}
: ${WHOLE="-fwhole-program"}
: ${BI="-fbuiltin"}
#: ${OMP="-fopenmp"}
: ${OFP="-fomit-frame-pointer"}
: ${OLP="-momit-leaf-frame-pointer"}
: ${LTO="-flto=auto"}
: ${OLV="-O3"}
: ${ccO="$OLV $BI $OFP $OMP $WHOLE $LTO"}
: ${ccD="-D_GNU_SOURCE -std=gnu99 -fno-strict-aliasing"}
: ${ccA="-march=native -mtune=native $OLP"}
: ${ccM="-mfpmath=sse,387 -mfancy-math-387"}
: ${ccW="-w"}
: ${ccL="-ldl -lm"}
: ${ccX=""}
cc="$ccC $ccG $ccI $ccO $ccD $ccA $ccM $ccW $ccX"
rm -f $nimcache/*.[co]
echo "$nim $BE -c --nimcache:"$nimcache" $nimO $nimOpts $prog.nim"
$nim $BE -c --nimcache:"$nimcache" $nimO $nimOpts "$prog.nim" || exit 1
inputs=$(echo $nimcache/*.c*)
echo "$cc -fprofile-generate $inputs -o $prog $ccL"
$cc -fprofile-generate $inputs -o $prog $ccL || exit 1
rm -f *.gcda
echo "PWD is $PWD"
echo "$cmd"
eval "$cmd"
echo "$C1$cc -fprofile-use $inputs -o $prog $ccL$C0"
$cc -fprofile-use $inputs -o $prog $ccL || exit 1
rm -f *.gcda