...
Text file
src/cmp.bash
Documentation: Index
1#!/usr/bin/env bash
2
3# Copyright 2016 The Go Authors. All rights reserved.
4# Use of this source code is governed by a BSD-style
5# license that can be found in the LICENSE file.
6
7# A simple script to compare differences between
8# assembly listings for packages built with different
9# compiler flags. It is useful to inspect the impact
10# of a compiler change across all std lib packages.
11#
12# The script builds the std library (make.bash) once
13# with FLAGS1 and once with FLAGS2 and compares the
14# "go build <pkg>" assembly output for each package
15# and lists the packages with differences.
16#
17# For packages with differences it leaves files named
18# old.txt and new.txt.
19
20FLAGS1="-newexport=0"
21FLAGS2="-newexport=1"
22
23echo
24echo
25echo "1a) clean build using $FLAGS1"
26(export GO_GCFLAGS="$FLAGS1"; sh make.bash)
27
28echo
29echo
30echo "1b) save go build output for all packages"
31for pkg in `go list std`; do
32 echo $pkg
33 DIR=$GOROOT/src/$pkg
34 go build -gcflags "$FLAGS1 -S" -o /dev/null $pkg &> $DIR/old.txt
35done
36
37echo
38echo
39echo "2a) clean build using $FLAGS2"
40(export GO_GCFLAGS="$FLAGS2"; sh make.bash)
41
42echo
43echo
44echo "2b) save go build output for all packages"
45for pkg in `go list std`; do
46 echo $pkg
47 DIR=$GOROOT/src/$pkg
48 go build -gcflags "$FLAGS2 -S" -o /dev/null $pkg &> $DIR/new.txt
49done
50
51echo
52echo
53echo "3) compare assembly files"
54for pkg in `go list std`; do
55 DIR=$GOROOT/src/$pkg
56
57 if cmp $DIR/old.txt $DIR/new.txt &> /dev/null
58 then rm $DIR/old.txt $DIR/new.txt
59 else echo "==> $DIR"
60 fi
61done
View as plain text