Skip to content

Commit 065f3d1

Browse files
committed
cpp: locations in range analysis
1 parent cd5509a commit 065f3d1

File tree

6 files changed

+13
-8
lines changed

6 files changed

+13
-8
lines changed

cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticExpr.qll

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
*/
44

55
private import Semantic
6+
private import SemanticLocation
67
private import SemanticExprSpecific::SemanticExprConfig as Specific
78
private import SemanticType
89

@@ -15,7 +16,7 @@ private import SemanticType
1516
class SemExpr instanceof Specific::Expr {
1617
final string toString() { result = super.toString() }
1718

18-
final Specific::Location getLocation() { result = super.getLocation() }
19+
SemLocation getLocation() { result = super.getLocation() }
1920

2021
Opcode getOpcode() { result instanceof Opcode::Unknown }
2122

cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/FloatDelta.qll

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ private import RangeAnalysisImpl
22
private import codeql.rangeanalysis.RangeAnalysis
33
private import semmle.code.cpp.rangeanalysis.new.internal.semantic.SemanticExpr
44
private import semmle.code.cpp.rangeanalysis.new.internal.semantic.SemanticType
5+
private import semmle.code.cpp.rangeanalysis.new.internal.semantic.SemanticLocation
56

67
module FloatDelta implements DeltaSig {
78
class Delta = float;
@@ -22,7 +23,7 @@ module FloatDelta implements DeltaSig {
2223
Delta fromFloat(float f) { result = f }
2324
}
2425

25-
module FloatOverflow implements OverflowSig<Sem, FloatDelta> {
26+
module FloatOverflow implements OverflowSig<SemLocation, Sem, FloatDelta> {
2627
predicate semExprDoesNotOverflow(boolean positively, SemExpr expr) {
2728
exists(float lb, float ub, float delta |
2829
typeBounds(expr.getSemType(), lb, ub) and

cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/RangeAnalysisConstantSpecific.qll

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@
33
*/
44

55
private import semmle.code.cpp.rangeanalysis.new.internal.semantic.Semantic
6+
private import semmle.code.cpp.rangeanalysis.new.internal.semantic.SemanticLocation
67
private import semmle.code.cpp.rangeanalysis.new.internal.semantic.analysis.FloatDelta
78
private import RangeAnalysisImpl
89
private import codeql.rangeanalysis.RangeAnalysis
910

10-
module CppLangImplConstant implements LangSig<Sem, FloatDelta> {
11+
module CppLangImplConstant implements LangSig<SemLocation, Sem, FloatDelta> {
1112
/**
1213
* Ignore the bound on this expression.
1314
*

cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/RangeAnalysisImpl.qll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ private import SemanticType
1212
private import codeql.rangeanalysis.RangeAnalysis
1313
private import ConstantAnalysis as ConstantAnalysis
1414

15-
module Sem implements Semantic {
15+
module Sem implements Semantic<SemLocation> {
1616
class Expr = SemExpr;
1717

1818
class ConstantIntegerExpr = ConstantAnalysis::SemConstantIntegerExpr;
@@ -104,7 +104,7 @@ module Sem implements Semantic {
104104
}
105105
}
106106

107-
module SignAnalysis implements SignAnalysisSig<Sem> {
107+
module SignAnalysis implements SignAnalysisSig<SemLocation, Sem> {
108108
private import SignAnalysisCommon as SA
109109
import SA::SignAnalysis<FloatDelta>
110110
}
@@ -165,7 +165,7 @@ module AllBounds implements BoundSig<SemLocation, Sem, FloatDelta> {
165165
}
166166
}
167167

168-
private module ModulusAnalysisInstantiated implements ModulusAnalysisSig<Sem> {
168+
private module ModulusAnalysisInstantiated implements ModulusAnalysisSig<SemLocation, Sem> {
169169
class ModBound = AllBounds::SemBound;
170170

171171
private import codeql.rangeanalysis.ModulusAnalysis as MA

cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/RangeAnalysisRelativeSpecific.qll

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@
33
*/
44

55
private import semmle.code.cpp.rangeanalysis.new.internal.semantic.Semantic
6+
private import semmle.code.cpp.rangeanalysis.new.internal.semantic.SemanticLocation
67
private import semmle.code.cpp.rangeanalysis.new.internal.semantic.analysis.FloatDelta
78
private import RangeAnalysisImpl
89
private import semmle.code.cpp.rangeanalysis.RangeAnalysisUtils
910
private import codeql.rangeanalysis.RangeAnalysis
1011

11-
module CppLangImplRelative implements LangSig<Sem, FloatDelta> {
12+
module CppLangImplRelative implements LangSig<SemLocation, Sem, FloatDelta> {
1213
/**
1314
* Ignore the bound on this expression.
1415
*

cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/analysis/SignAnalysisCommon.qll

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,12 @@ private import codeql.rangeanalysis.RangeAnalysis
1010
private import RangeAnalysisImpl
1111
private import SignAnalysisSpecific as Specific
1212
private import semmle.code.cpp.rangeanalysis.new.internal.semantic.Semantic
13+
private import semmle.code.cpp.rangeanalysis.new.internal.semantic.SemanticLocation
1314
private import ConstantAnalysis
1415
private import Sign
1516

1617
module SignAnalysis<DeltaSig D> {
17-
private import codeql.rangeanalysis.internal.RangeUtils::MakeUtils<Sem, D>
18+
private import codeql.rangeanalysis.internal.RangeUtils::MakeUtils<SemLocation, Sem, D>
1819

1920
/**
2021
* An SSA definition for which the analysis can compute the sign.

0 commit comments

Comments
 (0)