You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
1.0 KiB
26 lines
1.0 KiB
---
|
|
title: "Loop Hoisting"
|
|
description: "Detect opportunities to hoist function calls that are invariant outside of loop bodies for efficiency."
|
|
---
|
|
|
|
Detect opportunities to hoist function calls that are invariant outside of loop bodies for efficiency.
|
|
|
|
Activate with `--loop-hoisting`.
|
|
|
|
Supported languages:
|
|
- C/C++/ObjC: Yes
|
|
- C#/.Net: Yes
|
|
- Erlang: Yes
|
|
- Java: Yes
|
|
|
|
This checker detects opportunities to hoist function calls that are invariant to outside of loop bodies. The hoisting analysis relies on [purity](/docs/next/checker-purity) analysis to determine whather a function is pure or not.
|
|
|
|
It has an additional mode that reports [loop-invariant functions that are expensive](/docs/next/all-issue-types#expensive_loop_invariant_call) (i.e. at least linear). This is enabled by the flag `--hoisting-report-only-expensive`.
|
|
|
|
|
|
## List of Issue Types
|
|
|
|
The following issue types are reported by this checker:
|
|
- [EXPENSIVE_LOOP_INVARIANT_CALL](/docs/next/all-issue-types#expensive_loop_invariant_call)
|
|
- [INVARIANT_CALL](/docs/next/all-issue-types#invariant_call)
|