Skip to content

Commit 46b68ab

Browse files
committed
Extarct to predicate for RTJO
1 parent 33ecb9b commit 46b68ab

File tree

1 file changed

+18
-16
lines changed

1 file changed

+18
-16
lines changed

cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedGlobalVar.qll

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -117,26 +117,28 @@ class TranslatedStaticStorageDurationVarInit extends TranslatedRootElement,
117117
* directly accessed by the function.
118118
*/
119119
final predicate hasUserVariable(Variable varUsed, CppType type) {
120+
this.hasUserVariable1(varUsed) and
121+
type = getTypeForPRValue(getVariableType(varUsed))
122+
}
123+
124+
private predicate hasUserVariable1(Variable varUsed) {
120125
(
121-
(
122-
varUsed instanceof GlobalOrNamespaceVariable
123-
or
124-
varUsed instanceof StaticLocalVariable
125-
or
126-
varUsed instanceof MemberVariable and not varUsed instanceof Field
127-
) and
128-
exists(VariableAccess access |
129-
access.getTarget() = varUsed and
130-
getEnclosingVariable(access) = var
131-
)
126+
varUsed instanceof GlobalOrNamespaceVariable
132127
or
133-
var = varUsed
128+
varUsed instanceof StaticLocalVariable
134129
or
135-
varUsed.(LocalScopeVariable).getEnclosingElement*() = var
136-
or
137-
varUsed.(Parameter).getCatchBlock().getEnclosingElement*() = var
130+
varUsed instanceof MemberVariable and not varUsed instanceof Field
138131
) and
139-
type = getTypeForPRValue(getVariableType(varUsed))
132+
exists(VariableAccess access |
133+
access.getTarget() = varUsed and
134+
getEnclosingVariable(access) = var
135+
)
136+
or
137+
var = varUsed
138+
or
139+
varUsed.(LocalScopeVariable).getEnclosingElement*() = var
140+
or
141+
varUsed.(Parameter).getCatchBlock().getEnclosingElement*() = var
140142
}
141143
}
142144

0 commit comments

Comments
 (0)