![]() |
![]() |
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.
-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.
For 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 */
}
No MISRA-C:2004 Rules applicable to message 2756
See also:
![]() | ||
| QA·C Source Code Analyser 8.1
MISRA-C:2004 Compliance Module 3.2 © 2012 Programming Research. www.programmingresearch.com | Personality Groups | Glossary | Message Index | MISRA-C:2004 Rule Index | Contents |