Skip to content

Commit 304f869

Browse files
committed
[CPP-435] Re-worked IR query. Not yet functional.
1 parent 932b73c commit 304f869

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

cpp/ql/src/Likely Bugs/Memory Management/MemsetMayBeDeleted.ql

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,14 @@ private predicate insnDominates(Instruction i1, Instruction i2) {
3030
i1.getBlock() = i2.getBlock() and insnSuccessor+(i1) = i2
3131
}
3232

33+
Instruction getAUseInstruction(Instruction insn) {
34+
result= insn.getAUse().getUse()
35+
}
36+
3337
//insnDominates(memset, deref) and
3438
//vn.getAnInstruction() = memset.getAnArgument() and
3539
//vn.getAnInstruction() = deref.getSourceAddress()
36-
from MemsetCallInstruction memset
37-
where not exists(LoadInstruction deref | memset.getBlock().dominates(deref.getBlock())) // insnDominates(memset, deref))
40+
from MemsetCallInstruction memset, SizedBufferMustWriteSideEffectInstruction sei
41+
where sei.getPrimaryInstruction() = memset // and forall(Instruction use | use = getAUseInstruction+(sei) | use instanceof ChiInstruction)
3842
select memset,
3943
"Call to " + memset.getStaticCallTarget().getName() + " may be deleted by the compiler."

0 commit comments

Comments
 (0)