Note: The LLVM compilers provide a wide array of compiler options, occasionally described in detail and readily available at https://clang.llvm.org/docs/ClangCommandLineReference.html and https://flang.llvm.org/docs/FlangCommandLineReference.html. This SPEC CPU flags file contains excerpts from and brief summaries of portions of that documentation.
SPEC's modifications are:
Copyright 2026 Standard Performance Evaluation Corporation
Permission is granted to copy, distribute and/or modify this document under the terms of the Apache v2.0 License with LLVM Exceptions.
![[benchmark]](https://www.spec.org/auto/cpu2026/images/benchmark.png)
When SPEC CPU compiles 714.cpython_r, it automatically adds the flag -DHAVE_PTHREAD_STUBS, which provides "stubs": that is, minimal pthreads routines that return immediately without actually doing anything. On some systems, the stubs may cause conflicts with system-supplied libraries. In such cases, you can avoid the conflict by undefining the option in your SPEC CPU config file:
714.cpython_r:
PORTABILITY=-UHAVE_PTHREAD_STUBS
![[user]](https://www.spec.org/auto/cpu2026/images/user.png)
Increases optimization levels: the higher the number, the more optimization is done. Higher levels of optimization may
require additional compilation time, in the hopes of reducing execution time. At -O, basic optimizations are performed,
such as constant merging and elimination of dead code. At -O2, additional optimizations are added, such as common
subexpression elimination and strict aliasing. At -O3, even more optimizations are performed, such as function inlining and
vectorization.
Many more details are available.
![[user]](https://www.spec.org/auto/cpu2026/images/user.png)
Increases optimization levels: the higher the number, the more optimization is done. Higher levels of optimization may
require additional compilation time, in the hopes of reducing execution time. At -O, basic optimizations are performed,
such as constant merging and elimination of dead code. At -O2, additional optimizations are added, such as common
subexpression elimination and strict aliasing. At -O3, even more optimizations are performed, such as function inlining and
vectorization.
Many more details are available.
![[user]](https://www.spec.org/auto/cpu2026/images/user.png)
Increases optimization levels: the higher the number, the more optimization is done. Higher levels of optimization may
require additional compilation time, in the hopes of reducing execution time. At -O, basic optimizations are performed,
such as constant merging and elimination of dead code. At -O2, additional optimizations are added, such as common
subexpression elimination and strict aliasing. At -O3, even more optimizations are performed, such as function inlining and
vectorization.
Many more details are available.
SPECrate runs might use one of these methods to bind processes to specific processors, depending on the config file.
Linux systems: the numactl command is commonly used. Here is a brief guide to understanding the specific command which will be found in the config file:
macOS systems: processes are not bound.
No special commands are needed for feedback-directed optimization, other than the compiler profile flags.
One or more of the following may have been used in the run. If so, it will be listed in the notes sections. Here is a brief guide to understanding them:
LD_LIBRARY_PATH=<directories> (set via config file preENV)
LD_LIBRARY_PATH controls the search order for libraries. Often, it can be defaulted. Sometimes, it is
explicitly set (as documented in the notes in the submission) in order to ensure that the correct versions of
libraries are picked up.
OMP_STACKSIZE=N (set via config file preENV)
Set the stack size for subordinate OpenMP threads.
ulimit -s N
ulimit -s unlimited
'ulimit' is a Unix command, entered prior to the run. It sets the stack size for the main process and its children,
either to N kbytes or to no limit.
MALLOC_CONF=thp:always,metadata_thp:always (set via config file preENV)
MALLOC_CONF controls jemalloc behavior.
The "thp" option controls whether heap allocations jemalloc does use transparent huge pages, if THP is supported by the operating system. The "always" setting enables transparent hugepage for all user memory mappings with MADV_HUGEPAGE; "never" ensures no transparent hugepage with MADV_NOHUGEPAGE; the default setting "default" makes no changes.
The "metadata_thp" option controls whether to allow jemalloc to use transparent huge pages (THP) for internal metadata. The "always" setting allows such usage. The "auto" setting uses no THP initially, but may begin to do so when metadata usage reaches certain level. The default is "disabled".
Flag description origin markings:
![]() |
Indicates that the flag description came from the user flags file. |
![]() |
Indicates that the flag description came from the suite-wide flags file. |
![]() |
Indicates that the flag description came from a per-benchmark flags file. |
For questions about the meanings of these flags, please contact the tester.
For other inquiries, please contact info@spec.org
Copyright 2026 Standard Performance Evaluation Corporation
Tested with SPEC CPU®2026 v1.0.0.
Report generated on 2026-05-04 23:34:43 by SPEC CPU®2026 flags formatter (5b352a85).