Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 5dfe04a

Browse files
author
Robert Marsh
committed
C++: Respond to PR comments
1 parent 7d7b0ea commit 5dfe04a

1 file changed

Lines changed: 9 additions & 12 deletions

File tree

  • cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/internal

cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasedSSA.qll

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ private newtype TMemoryLocation =
8383
} or
8484
TAllAliasedMemory(IRFunction irFunc, boolean isMayAccess, boolean canDefineReadOnly) {
8585
isMayAccess = false and
86-
(canDefineReadOnly = true or canDefineReadOnly = false)
86+
canDefineReadOnly = [true, false]
8787
or
8888
isMayAccess = true and canDefineReadOnly = false
8989
}
@@ -287,7 +287,9 @@ class UnknownMemoryLocation extends TUnknownMemoryLocation, MemoryLocation {
287287

288288
final override string toStringInternal() { result = "{Unknown}" }
289289

290-
final override VirtualVariable getVirtualVariable() { result = TAllAliasedMemory(irFunc, false, true) }
290+
final override VirtualVariable getVirtualVariable() {
291+
result = TAllAliasedMemory(irFunc, false, true)
292+
}
291293

292294
final override Language::LanguageType getType() {
293295
result = any(IRUnknownType type).getCanonicalLanguageType()
@@ -328,13 +330,7 @@ class AllNonLocalMemory extends TAllNonLocalMemory, MemoryLocation {
328330

329331
final override predicate isMayAccess() { isMayAccess = true }
330332

331-
override predicate canDefineReadOnly() {
332-
// A "must" access that defines all non-local memory appears only on the `InitializeNonLocal`
333-
// instruction, which provides the initial definition for all memory outside of the current
334-
// function's stack frame. This memory includes string literals and other read-only globals, so
335-
// we allow such an access to be the definition for a use of a read-only location.
336-
not isMayAccess()
337-
}
333+
override predicate canDefineReadOnly() { none() }
338334
}
339335

340336
/**
@@ -359,12 +355,13 @@ class AllAliasedMemory extends TAllAliasedMemory, MemoryLocation {
359355

360356
final override string getUniqueId() { result = " " + toString() }
361357

362-
final override VirtualVariable getVirtualVariable() { result = TAllAliasedMemory(irFunc, false, true) }
358+
final override VirtualVariable getVirtualVariable() {
359+
result = TAllAliasedMemory(irFunc, false, true)
360+
}
363361

364362
final override predicate isMayAccess() { isMayAccess = true }
365-
366-
final override predicate canDefineReadOnly() { canDefineReadOnly = true }
367363

364+
final override predicate canDefineReadOnly() { canDefineReadOnly = true }
368365
}
369366

370367
/** A virtual variable that groups all escaped memory within a function. */

0 commit comments

Comments
 (0)