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

Skip to content

Commit a16ed7d

Browse files
committed
C++ IR: getAnyDef -> getDef in ValueNumbering
This change seems more in line with what users would expect.
1 parent 2ce8612 commit a16ed7d

3 files changed

Lines changed: 24 additions & 12 deletions

File tree

cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/gvn/ValueNumbering.qll

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,12 @@ class ValueNumber extends TValueNumber {
8686
instr order by instr.getBlock().getDisplayIndex(), instr.getDisplayIndexInBlock()
8787
)
8888
}
89-
89+
90+
/**
91+
* Gets an `Operand` whose definition is exact and has this value number.
92+
*/
9093
final Operand getAUse() {
91-
this = valueNumber(result.getAnyDef())
94+
this = valueNumber(result.getDef())
9295
}
9396
}
9497

@@ -227,10 +230,11 @@ cached ValueNumber valueNumber(Instruction instr) {
227230
}
228231

229232
/**
230-
* Gets the value number assigned to `instr`, if any. Returns at most one result.
233+
* Gets the value number assigned to the exact definition of `op`, if any.
234+
* Returns at most one result.
231235
*/
232236
ValueNumber valueNumberOfOperand(Operand op) {
233-
result = valueNumber(op.getAnyDef())
237+
result = valueNumber(op.getDef())
234238
}
235239

236240
/**

cpp/ql/src/semmle/code/cpp/ir/implementation/raw/gvn/ValueNumbering.qll

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,12 @@ class ValueNumber extends TValueNumber {
8686
instr order by instr.getBlock().getDisplayIndex(), instr.getDisplayIndexInBlock()
8787
)
8888
}
89-
89+
90+
/**
91+
* Gets an `Operand` whose definition is exact and has this value number.
92+
*/
9093
final Operand getAUse() {
91-
this = valueNumber(result.getAnyDef())
94+
this = valueNumber(result.getDef())
9295
}
9396
}
9497

@@ -227,10 +230,11 @@ cached ValueNumber valueNumber(Instruction instr) {
227230
}
228231

229232
/**
230-
* Gets the value number assigned to `instr`, if any. Returns at most one result.
233+
* Gets the value number assigned to the exact definition of `op`, if any.
234+
* Returns at most one result.
231235
*/
232236
ValueNumber valueNumberOfOperand(Operand op) {
233-
result = valueNumber(op.getAnyDef())
237+
result = valueNumber(op.getDef())
234238
}
235239

236240
/**

cpp/ql/src/semmle/code/cpp/ir/implementation/unaliased_ssa/gvn/ValueNumbering.qll

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,12 @@ class ValueNumber extends TValueNumber {
8686
instr order by instr.getBlock().getDisplayIndex(), instr.getDisplayIndexInBlock()
8787
)
8888
}
89-
89+
90+
/**
91+
* Gets an `Operand` whose definition is exact and has this value number.
92+
*/
9093
final Operand getAUse() {
91-
this = valueNumber(result.getAnyDef())
94+
this = valueNumber(result.getDef())
9295
}
9396
}
9497

@@ -227,10 +230,11 @@ cached ValueNumber valueNumber(Instruction instr) {
227230
}
228231

229232
/**
230-
* Gets the value number assigned to `instr`, if any. Returns at most one result.
233+
* Gets the value number assigned to the exact definition of `op`, if any.
234+
* Returns at most one result.
231235
*/
232236
ValueNumber valueNumberOfOperand(Operand op) {
233-
result = valueNumber(op.getAnyDef())
237+
result = valueNumber(op.getDef())
234238
}
235239

236240
/**

0 commit comments

Comments
 (0)