821.gcc_s
C Language optimizing compiler
Richard Stallman and a large cast of contributors.
For a full list, see
http://gcc.gnu.org/onlinedocs/gcc/Contributors.html.
The benchmark is based on GCC Version 11.2.0. It generates code for an x86_64 processor. The benchmark runs as a compiler with many of its optimization flags enabled.
The benchmark has altered inlining heuristics, so as to inline more code than may be typical of Unix systems as of the time that the porting work was done for the benchmark. This was first done in CPU 2017 502.gcc_r so that it would spend more time analyzing its source code inputs, which consumes more memory.
The inputs to the SPECrate® benchmark 721.gcc_r are C source code files coming from SPEC CPU 2017 502.gcc. The large files for the ref workloads are GCC itself, after preprocessing. The presentation of the entire (preprocessed) source set at one time reduces I/O and allows the benchmark compiler a wide scope as it considers optimizations. There are several optimizations used, which can be found in the file control in each of the input directories. For example, the brief 'test' workload uses -O3 -finline-limit=50000 to simply compile "hello world".
The SPECspeed® benchmark 821.gcc_s runs a multi-tasking batch flow, mimicking a "make -j" scenario. The input consists of 2800 pre-processed C files that are run using "nthreads" worker jobs simultaneously. The 2800 inputs come from other SPEC CPU benchmark sources, along with some other inputs offered by the University of Alberta's workloads analysis on 502.gcc and Stephen McCaman's single compilation-unit programs. These are pre-processed source files from RocksDB, 505.mcf, 777.zstd, gcc, 735.gem5, 709.cactus, oggenc, bzip2, and 519.lbm.
New inputs can be generated by writing C source code and preprocessing it.
The 721.gcc_r (SPECrate) output files are x86_64 assembly code files. These are validated in total without any tolerance.
The 821.gcc_s (SPECspeed) output files are also x86_64 assembly code files; however in order to save time the validation does not occur on the full output of the files, but rather the sha256sum of each file is printed out into a file which is alphabetically sorted when all tasks are complete. This accomodates out-of-order completion of each task, as well as quick validation of 2800 output files.
C / C++
The SPECrate version is single-threaded. The SPECspeed version runs several processes with different inputs concurrently.
None
721.gcc_r and 821.gcc_s are based on the GNU C compiler version 11.2.
The input data for gcc uses a variety of applications which are licensed separately from the gcc sources, as detailed below:
Copyright © 2026 Standard Performance Evaluation Corporation (SPEC®)