]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/testsuite/gdb.perf/gmonster2.exp
Automatic Copyright Year update after running gdb/copyright.py
[thirdparty/binutils-gdb.git] / gdb / testsuite / gdb.perf / gmonster2.exp
CommitLineData
4a94e368 1# Copyright (C) 2015-2022 Free Software Foundation, Inc.
7fecd1b4
DE
2
3# This program is free software; you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by
5# the Free Software Foundation; either version 3 of the License, or
6# (at your option) any later version.
7#
8# This program is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY; without even the implied warranty of
10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11# GNU General Public License for more details.
12#
13# You should have received a copy of the GNU General Public License
14# along with this program. If not, see <http://www.gnu.org/licenses/>.
15
16# Perftest description file for building the "gmonster2" benchmark.
17# Where does the name come from? The benchmark is derived from one of the
18# monster programs at Google.
19#
20# Perftest descriptions are loaded thrice:
21# 1) To generate the build .exp files
22# GDB_PERFTEST_MODE=gen-build-exps
23# This step allows for parallel builds of the majority of pieces of the
24# test binary and shlibs.
25# 2) To compile the "pieces" of the binary and shlibs.
26# "Pieces" are the bulk of the machine-generated sources of the test.
27# This step is driven by lib/build-piece.exp.
28# GDB_PERFTEST_MODE=build-pieces
29# 3) To perform the final link of the binary and shlibs.
30# GDB_PERFTEST_MODE=compile
31#
32# Example usage:
33# bash$ make -j5 build-perf RUNTESTFLAGS="gmonster1.exp gmonster2.exp"
34# bash$ make check-perf RUNTESTFLAGS="gdb.perf/gm*-*.exp GDB=/path/to/gdb"
35
36load_lib perftest.exp
37load_lib gen-perf-test.exp
38
39if [skip_perf_tests] {
40 return 0
41}
42
43if ![info exists MONSTER] {
44 set MONSTER "n"
45}
46
47proc make_testcase_config { } {
48 global MONSTER
49
50 set program_name "gmonster2"
51 array set testcase [GenPerfTest::init_testcase $program_name]
52
53 set testcase(language) c++
54
55 # *_{sources,headers} need to be embedded in an outer list
56 # because remember each element of the outer list is for each run, and
57 # here we want to use the same value for all runs.
58 set testcase(binary_extra_sources) { { gmonster2.cc gm-hello.cc gm-use-cerr.cc } }
59 set testcase(binary_extra_headers) { { gm-utils.h gm-std.h } }
60 set testcase(gen_shlib_extra_sources) { { gm-hello.cc gm-use-cerr.cc } }
61 set testcase(gen_shlib_extra_headers) { { gm-utils.h gm-std.h } }
62 set testcase(tail_shlib_sources) { { gm-std.cc } }
63 set testcase(tail_shlib_headers) { { gm-std.h } }
64
65 if { $MONSTER == "y" } {
66 set testcase(run_names) { 10-sos 100-sos 1000-sos }
67 set testcase(nr_gen_shlibs) { 10 100 1000 }
68 } else {
69 set testcase(run_names) { 1-so 10-sos 100-sos }
70 set testcase(nr_gen_shlibs) { 1 10 100 }
71 }
72 set testcase(nr_compunits) 10
73
74 set testcase(nr_extern_globals) 10
75 set testcase(nr_static_globals) 10
76 set testcase(nr_extern_functions) 10
77 set testcase(nr_static_functions) 10
78
79 # class_specs needs to be embedded in an outer list because remember
80 # each element of the outer list is for each run, and here we want to use
81 # the same value for all runs.
82 set testcase(class_specs) { {
83 {
84 count 1 name { class }
85 nr_members 10 nr_static_members 10
86 nr_methods 10 nr_static_methods 10
87 nr_inline_methods 10 nr_static_inline_methods 10
88 }
89 {
90 count 1 name { ns0 class }
91 nr_members 10 nr_static_members 10
92 nr_methods 10 nr_static_methods 10
93 nr_inline_methods 10 nr_static_inline_methods 10
94 }
95 {
96 count 1 name { ns0 anonymous aclass }
97 nr_members 10 nr_static_members 10
98 nr_methods 10 nr_static_methods 10
99 nr_inline_methods 10 nr_static_inline_methods 10
100 }
101 {
102 count 1 name { ns0 ns1 class }
103 nr_members 10 nr_static_members 10
104 nr_methods 10 nr_static_methods 10
105 nr_inline_methods 10 nr_static_inline_methods 10
106 }
107 {
108 count 1 name { ns0 anonymous ns1 aclass }
109 nr_members 10 nr_static_members 10
110 nr_methods 10 nr_static_methods 10
111 nr_inline_methods 10 nr_static_inline_methods 10
112 }
113 } }
114
115 return [array get testcase]
116}
117
118GenPerfTest::standard_compile_driver gmonster2.exp make_testcase_config