![]() |
![]() |
2756 | ![]() |
||||
![]() | |||||||
| Dataflow recovery | |||||||
The
-po df::inter=<level> option controls how big the current function will be allowed to grow relative to its current size when expanding called functions.
If level is set to zero, then no calls will be expanded. For levels 1 to 5, the function can grow by:
-po df::inter=5 a called function will not be expanded if this would result in the caller exceeding 200,000 simple statements. For any such function call, this message will be generated. Note that subsequent calls to smaller functions may still be expanded.
Example:
int large_function(void) { ... }
int small_function(void) { return 0; }
void caller(void)
{
/* Function body too large to expand large_function, but small enough to expand small_function */
...
1 / large_function(); /* 'large_function' not expanded and message 2756 generated. */
1 / small_function(); /* 'small_function' is exapnded and 2831 generated. */
}
Finally, as the size of the calling function increases, the maximum size of called functions that can be expanded reduces.
For Example:
int large_function(void)
{
/* Function body that just fits within the maximum expanded function size */
...
}
int small_function(void) { return 0; }
void a(void)
{
1 / large_function(); /* 'a' is empty, 'large_function' will be expanded */
}
void b(void)
{
1 / small_function(); /* 'b' is empty, 'small_function' will be expanded */
1 / large_function(); /* 'large_function' not expanded as 'small_function' + 'large_function' exceeds maximum size */
}
See also:
![]() | ||
| QA·C Source Code Analyser 8.1.2
© 2013 Programming Research. www.programmingresearch.com | Personality Groups | Glossary | Message Index | Contents |