Bisheng-compiler-flagsBisheng C/C++/Fortran Compiler Suite SPEC CPU2017 Flag DescriptionUsing numactl to bind processes and memory to cores ]]>
ulimit -s <n>
Sets the stack size to n kbytes, or unlimited to allow the stack size to grow without limit.
]]>
Compilers: Bisheng Compiler Suite ]]>
-O0
Mean no optimization: this level compiles the fastest and generates the most debuggable code. ]]>
-O1
Somewhere between -O0 and -O2. ]]>
-O2
Moderate level of optimization which enables most optimizations. ]]>
-O3
Like -O2, except that it enables optimizations that take longer to perform or that may generate larger code (in an attempt to make the program run faster). ]]>
-Ofast
Enable all the optimizations from -O3 along with other aggressive optimizations that may violate strict compliance with language standards. ]]>
-ffast-math
Yield faster code for programs that do not require the guarantees of IEEE or ISO rules/specifications. ]]>
-Wl,-mllvm,option-name
-Wl,-mllvm passes the named option to the linker, which in turn will pass it to LLVM. ]]>
-Wl,option-name
-Wl passes the named option to the linker. ]]>
-mllvm -option-name
-mllvm passes the named option to LLVM. ]]>
-std=c++03
Specify the language standard to compile for. ]]>
-mcpu=tsv110
Specify the name of the target processor. ]]>
-mrecip=div
Perform approximate reciprocal on div or sqrt. ]]>
-flto=full
Generate output files in LLVM bitcode format, suitable for link time optimization. ]]>
-Mallocatable=03
Select Fortran 95/03 semantics for assignments to allocatable objects. ]]>
-fgnu89-inline
Use the gnu89 inline semantics. ]]>
-fno-strict-aliasing
Prohibit the compiler to assume the strictest aliasing rules applicable to the language being compiled. ]]>
-ljemalloc
Use the jemalloc library. ]]>
-lmathlib
Use the mathlib library. ]]>
-lpgmath
Link the Flang runtime library libpgmath.so. This is only needed explicitly when a C/C++ linker is used to link Fortran object files. ]]>
-lflangmain
Link the Flang runtime library libflangmain.so. This is only needed explicitly when a C/C++ linker is used to link Fortran object files. ]]>
-lflangrti
Link the Flang runtime library libflangrti.so. This is only needed explicitly when a C/C++ linker is used to link Fortran object files. ]]>
-lflang
Link the Flang runtime library libflang.so. This is only needed explicitly when a C/C++ linker is used to link Fortran object files. ]]>
-z muldefs
Allows links to proceed even if there are multiple definitions of some symbols. ]]>
--build-id
Request creation of ".note.gnu.build-id" ELF note section. ]]>
-Kieee
Instructs the compiler to conform to the IEEE-754 specifications. ]]>
-fno-finite-math-only
Prohibit optimizations for floating-point arithmetic that assume that arguments and results are not NaNs or +-Infs. ]]>
-fno-unsafe-math-optimizations=
Do not allow optimizations for floating-point arithmetic that (a) assume that arguments and results are valid, or (b) may violate IEEE or ANSI standards. ]]>
-enable-struct-padding=false
Enable padding of structures shortened by pointer compression. ]]>
-enable-struct-repacking=false
Enable repacking of structure elements. ]]>
-enable-loopinterchange-boole=true
Enable the LoopInterchange Pass. ]]>
-enable-loop-fusion=true
Enable the LoopFusion Pass for the Bisheng Compiler pipeline. ]]>
-insert-guard-for-residual-loop=true
Determine whether to activate the optimization in loop vectorization that inserts a guard block for the residual loop. ]]>
-licm-safe-hoist=true
When the flag is disable,the loop invariant instructions will be seen as safe to hoist, and be hoisted to preheader without cost considered. When flag is enable, hoist will be executed only when invariant instruction is guaranteed to be executed. ]]>
-enable-diamond-load-hoist=true
Enable optimization that hoists expressions from branches to a common dominator, using GVN (global value numbering) to discover expressions computing the same values. ]]>
-disable-extra-gate-for-loop-heuristic=false
Determine whether to apply the loop branch heuristic optimization without checks or apply it only when the loop count is large enough and the loop contains float point operators. ]]>
-enable-loop-load-widen=true
Enable wide load on certain loops with conditional breaks. ]]>
-enable-large-loop-bp-enhancement=true
Enable branch probability enhancement for large loops with small trip counts. ]]>
-hot-cold-split=true
Enable hot/cold splitting optimization to improve the memory locality of code. The splitting pass does this by identifying cold blocks and moving them into separate functions. ]]>
-enable-split-machine-functions=true
Splits functions into hot and cold parts. ]]>
-nonconstant-prefetch-stride=true
Support the nonconstant stride to add prefetches. ]]>
-aarch64-optimize-vector-mul=true
Enable NEON vector multiplication simplification. ]]>
-inline-threshold=1000
Control the amount of inlining to perform. ]]>
-force-vector-interleave=1
Control the unroll factor instead of using a cost model to decide it. ]]>
-unroll-force-peel-count=
Force a peel count regardless of profiling information. ]]>
-fopenmp
Enable handling of OpenMP directives #pragma omp in C/C++ and !$omp in Fortran. ]]>
-fcommon
Place uninitialized global variables in a common block. ]]>
-fprofile-generate=pathname
Generate instrumented code to collect execution counts into pathname/default.profraw. ]]>
-fcs-profile-generate=pathname
generate the same profile as in the -fprofile-generate and -fprofile-generate= flags.The difference is that the instrumentation is performed after inlining so that the resulted profile has a better context sensitive information. ]]>
-fprofile-use=pathname
Use instrumentation data for profile-guided optimization. If pathname is a directory, it reads from pathname/default.profdata. Otherwise, it reads from file pathname. ]]>
-Mbyteswapio
Swap byte-order for unformatted input/output. ]]>
-funsigned-char
Let the type char be unsigned, like unsigned char. ]]>
clang
Bisheng C compiler. ]]>
clang++
Bisheng C++ compiler. ]]>
flang
Bisheng Fortran compiler. ]]>
-Wno-return-type
Do not warn if a non-void function does not return a value. ]]>
-v
Show commands to run and use verbose output. ]]>
-fuse-ld=lld
Tells the compiler to use a different linker instead of the default linker (ld). ]]>