On Dec 5, 2005, at 2:33 PM, Jack Howarth wrote:
Do you mean using -fno-threadsafe-statics or do you have any other
inlining changes in mind?
That option mentions the word inline 0 times, while interesting and
worthwhile to test, I did mean these (from the man page):
-finline-limit=n
and --params:
max-inline-insns-single
Several parameters control the tree inliner used in
gcc. This
number sets the maximum number of instructions
(counted in
GCC's internal representation) in a single function
that the
tree inliner will consider for inlining. This only
affects
functions declared inline and methods implemented in
a class
declaration (C++). The default value is 450.
max-inline-insns-auto
When you use -finline-functions (included in -O3), a
lot of
functions that would otherwise not be considered for
inlining
by the compiler will be investigated. To those
functions, a
different (more restrictive) limit compared to functions
declared inline can be applied. The default value is
90.
inline-unit-growth
Specifies maximal overall growth of the compilation
unit caused
by inlining. This parameter is ignored when -funit-
at-a-time
is not used. The default value is 50 which limits
unit growth
to 1.5 times the original size.
max-inline-insns-recursive
max-inline-insns-recursive-auto
Specifies maximum number of instructions out-of-line
copy of
self recursive inline function can grow into by
performing
recursive inlining.
For functions declared inline --param max-inline-
insns-recur-
sive is taken into acount. For function not declared
inline,
recursive inlining happens only when -finline-functions
(included in -O3) is enabled and --param max-inline-
insns-
recursive-auto is used. The default value is 450.
max-inline-recursive-depth
max-inline-recursive-depth-auto
Specifies maximum recursion depth used by the
recursive inlin-
ing.
For functions declared inline --param max-inline-
recursive-
depth is taken into acount. For function not
declared inline,
recursive inlining happens only when -finline-functions
(included in -O3) is enabled and --param max-inline-
recursive-
depth-auto is used. The default value is 450.
inline-call-cost
Specify cost of call instruction relative to simple
arithmetics
operations (having cost of 1). Increasing this cost
disqualify
inlinining of non-leaf functions and at same time
increase size
of leaf function that is believed to reduce function
size by
being inlined. In effect it increase amount of
inlining for
code having large abstraction penalty (many functions
that just
pass the argumetns to other functions) and decrease
inlining
for code with low abstraction penalty. Default value
is 16.
It is trivial to have these slightly alter codegen and show very
large differences in timings.