Skip to content

Commit 881b3c8

Browse files
author
Dave Bartolomeo
committed
C#: Fix IR consistency errors
We were creating a `TranslatedFunction` even for functions that were not from source code, but then telling the IR package that those functions didn't have IR. This resulted in having prologue/epilogue instructions (e.g. `EnterFunction`, `ExitFunction`) with no enclosing `IRFunction`.
1 parent fecffab commit 881b3c8

File tree

3 files changed

+2
-10
lines changed

3 files changed

+2
-10
lines changed

csharp/ql/src/experimental/ir/implementation/raw/internal/IRConstruction.qll

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,7 @@ import Cached
2525
cached
2626
private module Cached {
2727
cached
28-
predicate functionHasIR(Callable callable) {
29-
exists(getTranslatedFunction(callable)) and
30-
callable.fromSource()
31-
}
28+
predicate functionHasIR(Callable callable) { exists(getTranslatedFunction(callable)) }
3229

3330
cached
3431
newtype TInstruction =

csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedElement.qll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ private predicate ignoreExpr(Expr expr) {
117117
private predicate translateFunction(Callable callable) {
118118
// not isInvalidFunction(callable)
119119
exists(callable.getEntryPoint()) and
120+
callable.fromSource() and
120121
exists(IRConfiguration config | config.shouldCreateIRForFunction(callable))
121122
}
122123

csharp/ql/test/experimental/ir/ir/raw_ir_consistency.expected

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,6 @@ notMarkedAsConflated
2121
wronglyMarkedAsConflated
2222
invalidOverlap
2323
nonUniqueEnclosingIRFunction
24-
| indexers.cs:3:18:3:24 | AliasedDefinition: MyClass | Instruction 'AliasedDefinition: MyClass' has 0 results for `getEnclosingIRFunction()` in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
25-
| indexers.cs:3:18:3:24 | AliasedUse: MyClass | Instruction 'AliasedUse: MyClass' has 0 results for `getEnclosingIRFunction()` in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
26-
| indexers.cs:3:18:3:24 | EnterFunction: MyClass | Instruction 'EnterFunction: MyClass' has 0 results for `getEnclosingIRFunction()` in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
27-
| indexers.cs:3:18:3:24 | ExitFunction: MyClass | Instruction 'ExitFunction: MyClass' has 0 results for `getEnclosingIRFunction()` in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
28-
| indexers.cs:3:18:3:24 | InitializeThis: MyClass | Instruction 'InitializeThis: MyClass' has 0 results for `getEnclosingIRFunction()` in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
29-
| indexers.cs:3:18:3:24 | ReturnVoid: MyClass | Instruction 'ReturnVoid: MyClass' has 0 results for `getEnclosingIRFunction()` in function '$@'. | file://:0:0:0:0 | <Missing IRFunction> | <Missing IRFunction> |
3024
missingCanonicalLanguageType
3125
multipleCanonicalLanguageTypes
3226
missingIRType

0 commit comments

Comments
 (0)