Merge remote-tracking branch 'upstream/main' into igfoo/mb

This commit is contained in:
Ian Lynagh
2026-01-13 01:01:35 +00:00
1891 changed files with 180230 additions and 116717 deletions

View File

@@ -0,0 +1,4 @@
---
category: minorAnalysis
---
* Some constants will now be represented by their unfolded expression trees. The `isConstant` predicate of `Expr` will no longer yield a result for those constants.

View File

@@ -9,6 +9,14 @@ extensions:
pack: codeql/cpp-all
extensible: sinkModel
data: []
- addsTo:
pack: codeql/cpp-all
extensible: barrierModel
data: []
- addsTo:
pack: codeql/cpp-all
extensible: barrierGuardModel
data: []
- addsTo:
pack: codeql/cpp-all
extensible: summaryModel

View File

@@ -101,9 +101,10 @@ private import internal.FlowSummaryImpl
private import internal.FlowSummaryImpl::Public
private import internal.FlowSummaryImpl::Private
private import internal.FlowSummaryImpl::Private::External
private import internal.ExternalFlowExtensions as Extensions
private import internal.ExternalFlowExtensions::Extensions as Extensions
private import codeql.mad.ModelValidation as SharedModelVal
private import codeql.util.Unit
private import codeql.mad.static.ModelsAsData as SharedMaD
/**
* A unit class for adding additional source model rows.
@@ -144,134 +145,81 @@ predicate sinkModel(string row) { any(SinkModelCsv s).row(row) }
/** Holds if `row` is a summary model. */
predicate summaryModel(string row) { any(SummaryModelCsv s).row(row) }
/** Holds if a source model exists for the given parameters. */
predicate sourceModel(
string namespace, string type, boolean subtypes, string name, string signature, string ext,
string output, string kind, string provenance, string model
) {
exists(string row |
sourceModel(row) and
row.splitAt(";", 0) = namespace and
row.splitAt(";", 1) = type and
row.splitAt(";", 2) = subtypes.toString() and
subtypes = [true, false] and
row.splitAt(";", 3) = name and
row.splitAt(";", 4) = signature and
row.splitAt(";", 5) = ext and
row.splitAt(";", 6) = output and
row.splitAt(";", 7) = kind
) and
provenance = "manual" and
model = ""
or
exists(QlBuiltins::ExtensionId madId |
Extensions::sourceModel(namespace, type, subtypes, name, signature, ext, output, kind,
provenance, madId) and
model = "MaD:" + madId.toString()
)
private module MadInput implements SharedMaD::InputSig {
/** Holds if a source model exists for the given parameters. */
predicate additionalSourceModel(
string namespace, string type, boolean subtypes, string name, string signature, string ext,
string output, string kind, string provenance, string model
) {
exists(string row |
sourceModel(row) and
row.splitAt(";", 0) = namespace and
row.splitAt(";", 1) = type and
row.splitAt(";", 2) = subtypes.toString() and
subtypes = [true, false] and
row.splitAt(";", 3) = name and
row.splitAt(";", 4) = signature and
row.splitAt(";", 5) = ext and
row.splitAt(";", 6) = output and
row.splitAt(";", 7) = kind
) and
provenance = "manual" and
model = ""
}
/** Holds if a sink model exists for the given parameters. */
predicate additionalSinkModel(
string namespace, string type, boolean subtypes, string name, string signature, string ext,
string input, string kind, string provenance, string model
) {
exists(string row |
sinkModel(row) and
row.splitAt(";", 0) = namespace and
row.splitAt(";", 1) = type and
row.splitAt(";", 2) = subtypes.toString() and
subtypes = [true, false] and
row.splitAt(";", 3) = name and
row.splitAt(";", 4) = signature and
row.splitAt(";", 5) = ext and
row.splitAt(";", 6) = input and
row.splitAt(";", 7) = kind
) and
provenance = "manual" and
model = ""
}
/**
* Holds if a summary model exists for the given parameters.
*
* This predicate does not expand `@` to `*`s.
*/
predicate additionalSummaryModel(
string namespace, string type, boolean subtypes, string name, string signature, string ext,
string input, string output, string kind, string provenance, string model
) {
exists(string row |
summaryModel(row) and
row.splitAt(";", 0) = namespace and
row.splitAt(";", 1) = type and
row.splitAt(";", 2) = subtypes.toString() and
subtypes = [true, false] and
row.splitAt(";", 3) = name and
row.splitAt(";", 4) = signature and
row.splitAt(";", 5) = ext and
row.splitAt(";", 6) = input and
row.splitAt(";", 7) = output and
row.splitAt(";", 8) = kind
) and
provenance = "manual" and
model = ""
}
string namespaceSegmentSeparator() { result = "::" }
}
/** Holds if a sink model exists for the given parameters. */
predicate sinkModel(
string namespace, string type, boolean subtypes, string name, string signature, string ext,
string input, string kind, string provenance, string model
) {
exists(string row |
sinkModel(row) and
row.splitAt(";", 0) = namespace and
row.splitAt(";", 1) = type and
row.splitAt(";", 2) = subtypes.toString() and
subtypes = [true, false] and
row.splitAt(";", 3) = name and
row.splitAt(";", 4) = signature and
row.splitAt(";", 5) = ext and
row.splitAt(";", 6) = input and
row.splitAt(";", 7) = kind
) and
provenance = "manual" and
model = ""
or
exists(QlBuiltins::ExtensionId madId |
Extensions::sinkModel(namespace, type, subtypes, name, signature, ext, input, kind, provenance,
madId) and
model = "MaD:" + madId.toString()
)
}
private module MaD = SharedMaD::ModelsAsData<Extensions, MadInput>;
/**
* Holds if a summary model exists for the given parameters.
*
* This predicate does not expand `@` to `*`s.
*/
private predicate summaryModel0(
string namespace, string type, boolean subtypes, string name, string signature, string ext,
string input, string output, string kind, string provenance, string model
) {
exists(string row |
summaryModel(row) and
row.splitAt(";", 0) = namespace and
row.splitAt(";", 1) = type and
row.splitAt(";", 2) = subtypes.toString() and
subtypes = [true, false] and
row.splitAt(";", 3) = name and
row.splitAt(";", 4) = signature and
row.splitAt(";", 5) = ext and
row.splitAt(";", 6) = input and
row.splitAt(";", 7) = output and
row.splitAt(";", 8) = kind
) and
provenance = "manual" and
model = ""
or
exists(QlBuiltins::ExtensionId madId |
Extensions::summaryModel(namespace, type, subtypes, name, signature, ext, input, output, kind,
provenance, madId) and
model = "MaD:" + madId.toString()
)
}
/**
* Holds if the given extension tuple `madId` should pretty-print as `model`.
*
* This predicate should only be used in tests.
*/
predicate interpretModelForTest(QlBuiltins::ExtensionId madId, string model) {
exists(
string namespace, string type, boolean subtypes, string name, string signature, string ext,
string output, string kind, string provenance
|
Extensions::sourceModel(namespace, type, subtypes, name, signature, ext, output, kind,
provenance, madId)
|
model =
"Source: " + namespace + "; " + type + "; " + subtypes + "; " + name + "; " + signature + "; "
+ ext + "; " + output + "; " + kind + "; " + provenance
)
or
exists(
string namespace, string type, boolean subtypes, string name, string signature, string ext,
string input, string kind, string provenance
|
Extensions::sinkModel(namespace, type, subtypes, name, signature, ext, input, kind, provenance,
madId)
|
model =
"Sink: " + namespace + "; " + type + "; " + subtypes + "; " + name + "; " + signature + "; " +
ext + "; " + input + "; " + kind + "; " + provenance
)
or
exists(
string namespace, string type, boolean subtypes, string name, string signature, string ext,
string input, string output, string kind, string provenance
|
Extensions::summaryModel(namespace, type, subtypes, name, signature, ext, input, output, kind,
provenance, madId)
|
model =
"Summary: " + namespace + "; " + type + "; " + subtypes + "; " + name + "; " + signature +
"; " + ext + "; " + input + "; " + output + "; " + kind + "; " + provenance
)
}
import MaD
/**
* Holds if `input` is `input0`, but with all occurrences of `@` replaced
@@ -294,69 +242,13 @@ predicate summaryModel(
string input, string output, string kind, string provenance, string model
) {
exists(string input0, string output0 |
summaryModel0(namespace, type, subtypes, name, signature, ext, input0, output0, kind,
MaD::summaryModel(namespace, type, subtypes, name, signature, ext, input0, output0, kind,
provenance, model) and
expandInputAndOutput(input0, input, output0, output,
[0 .. Private::getMaxElementContentIndirectionIndex() - 1])
)
}
private predicate relevantNamespace(string namespace) {
sourceModel(namespace, _, _, _, _, _, _, _, _, _) or
sinkModel(namespace, _, _, _, _, _, _, _, _, _) or
summaryModel(namespace, _, _, _, _, _, _, _, _, _, _)
}
private predicate namespaceLink(string shortns, string longns) {
relevantNamespace(shortns) and
relevantNamespace(longns) and
longns.prefix(longns.indexOf("::")) = shortns
}
private predicate canonicalNamespace(string namespace) {
relevantNamespace(namespace) and not namespaceLink(_, namespace)
}
private predicate canonicalNamespaceLink(string namespace, string subns) {
canonicalNamespace(namespace) and
(subns = namespace or namespaceLink(namespace, subns))
}
/**
* Holds if MaD framework coverage of `namespace` is `n` api endpoints of the
* kind `(kind, part)`, and `namespaces` is the number of subnamespaces of
* `namespace` which have MaD framework coverage (including `namespace`
* itself).
*/
predicate modelCoverage(string namespace, int namespaces, string kind, string part, int n) {
namespaces = strictcount(string subns | canonicalNamespaceLink(namespace, subns)) and
(
part = "source" and
n =
strictcount(string subns, string type, boolean subtypes, string name, string signature,
string ext, string output, string provenance, string model |
canonicalNamespaceLink(namespace, subns) and
sourceModel(subns, type, subtypes, name, signature, ext, output, kind, provenance, model)
)
or
part = "sink" and
n =
strictcount(string subns, string type, boolean subtypes, string name, string signature,
string ext, string input, string provenance, string model |
canonicalNamespaceLink(namespace, subns) and
sinkModel(subns, type, subtypes, name, signature, ext, input, kind, provenance, model)
)
or
part = "summary" and
n =
strictcount(string subns, string type, boolean subtypes, string name, string signature,
string ext, string input, string output, string provenance |
canonicalNamespaceLink(namespace, subns) and
summaryModel(subns, type, subtypes, name, signature, ext, input, output, kind, provenance, _)
)
)
}
/** Provides a query predicate to check the CSV data for validation errors. */
module CsvValidation {
private string getInvalidModelInput() {

View File

@@ -2,6 +2,8 @@
* This module provides extensible predicates for defining MaD models.
*/
private import codeql.mad.static.ModelsAsData as SharedMaD
/**
* Holds if an external source model exists for the given parameters.
*/
@@ -18,6 +20,22 @@ extensible predicate sinkModel(
string input, string kind, string provenance, QlBuiltins::ExtensionId madId
);
/**
* Holds if a barrier model exists for the given parameters.
*/
extensible predicate barrierModel(
string namespace, string type, boolean subtypes, string name, string signature, string ext,
string output, string kind, string provenance, QlBuiltins::ExtensionId madId
);
/**
* Holds if a barrier guard model exists for the given parameters.
*/
extensible predicate barrierGuardModel(
string namespace, string type, boolean subtypes, string name, string signature, string ext,
string input, string acceptingvalue, string kind, string provenance, QlBuiltins::ExtensionId madId
);
/**
* Holds if an external summary model exists for the given parameters.
*/
@@ -25,3 +43,16 @@ extensible predicate summaryModel(
string namespace, string type, boolean subtypes, string name, string signature, string ext,
string input, string output, string kind, string provenance, QlBuiltins::ExtensionId madId
);
/**
* Holds if a neutral model exists for the given parameters.
*/
extensible predicate neutralModel(
string namespace, string type, string name, string signature, string kind, string provenance
);
module Extensions implements SharedMaD::ExtensionsSig {
import ExternalFlowExtensions
predicate namespaceGrouping(string group, string namespace) { none() }
}

View File

@@ -148,6 +148,19 @@ module SourceSinkInterpretationInput implements
)
}
predicate barrierElement(
Element n, string output, string kind, Public::Provenance provenance, string model
) {
none()
}
predicate barrierGuardElement(
Element n, string input, Public::AcceptingValue acceptingvalue, string kind,
Public::Provenance provenance, string model
) {
none()
}
private newtype TInterpretNode =
TElement_(Element n) or
TNode_(Node n)

View File

@@ -2,6 +2,8 @@
* Defines entity discard predicates for C++ overlay analysis.
*/
private import OverlayXml
/**
* Holds always for the overlay variant and never for the base variant.
* This local predicate is used to define local predicates that behave
@@ -20,9 +22,21 @@ private string getLocationFilePath(@location_default loc) {
*/
overlay[local]
private string getSingleLocationFilePath(@element e) {
// @var_decl has a direct location in the var_decls relation
exists(@location_default loc | var_decls(e, _, _, _, loc) | result = getLocationFilePath(loc))
//TODO: add other kinds of elements with single locations
exists(@location_default loc |
var_decls(e, _, _, _, loc)
or
fun_decls(e, _, _, _, loc)
or
type_decls(e, _, loc)
or
namespace_decls(e, _, loc, _)
or
macroinvocations(e, _, loc, _)
or
preprocdirects(e, _, loc)
|
result = getLocationFilePath(loc)
)
}
/**
@@ -30,11 +44,17 @@ private string getSingleLocationFilePath(@element e) {
*/
overlay[local]
private string getMultiLocationFilePath(@element e) {
// @variable gets its location(s) from its @var_decl(s)
exists(@var_decl vd, @location_default loc | var_decls(vd, e, _, _, loc) |
exists(@location_default loc |
exists(@var_decl vd | var_decls(vd, e, _, _, loc))
or
exists(@fun_decl fd | fun_decls(fd, e, _, _, loc))
or
exists(@type_decl td | type_decls(td, e, loc))
or
exists(@namespace_decl nd | namespace_decls(nd, e, loc, _))
|
result = getLocationFilePath(loc)
)
//TODO: add other kinds of elements with multiple locations
}
/**

View File

@@ -0,0 +1,46 @@
overlay[local]
module;
/**
* A local predicate that always holds for the overlay variant and never holds for the base variant.
* This is used to define local predicates that behave differently for the base and overlay variant.
*/
private predicate isOverlay() { databaseMetadata("isOverlay", "true") }
private string getXmlFile(@xmllocatable locatable) {
exists(@location_default location, @file file | xmllocations(locatable, location) |
locations_default(location, file, _, _, _, _) and
files(file, result)
)
}
private string getXmlFileInBase(@xmllocatable locatable) {
not isOverlay() and
result = getXmlFile(locatable)
}
/**
* Holds if the given `file` was extracted as part of the overlay and was extracted by the HTML/XML
* extractor.
*/
private predicate overlayXmlExtracted(string file) {
isOverlay() and
exists(@xmllocatable locatable |
not files(locatable, _) and not xmlNs(locatable, _, _, _) and file = getXmlFile(locatable)
)
}
/**
* Holds if the given XML `locatable` should be discarded, because it is part of the overlay base
* and is in a file that was also extracted as part of the overlay database.
*/
overlay[discard_entity]
private predicate discardXmlLocatable(@xmllocatable locatable) {
exists(string file | file = getXmlFileInBase(locatable) |
overlayChangedFiles(file)
or
// The HTML/XML extractor is currently not incremental and may extract more files than those
// included in overlayChangedFiles.
overlayXmlExtracted(file)
)
}

View File

@@ -1051,12 +1051,12 @@ module BarrierGuardWithIntParam<guardChecksNodeSig/4 guardChecksNode> {
}
private predicate guardChecksInstr(
IRGuards::Guards_v1::Guard g, IRGuards::GuardsInput::Expr instr, boolean branch,
IRGuards::Guards_v1::Guard g, IRGuards::GuardsInput::Expr instr, IRGuards::GuardValue gv,
int indirectionIndex
) {
exists(Node node |
nodeHasInstruction(node, instr, indirectionIndex) and
guardChecksNode(g, node, branch, indirectionIndex)
guardChecksNode(g, node, gv.asBooleanValue(), indirectionIndex)
)
}
@@ -1064,8 +1064,8 @@ module BarrierGuardWithIntParam<guardChecksNodeSig/4 guardChecksNode> {
DataFlowIntegrationInput::Guard g, SsaImpl::Definition def, IRGuards::GuardValue val,
int indirectionIndex
) {
IRGuards::Guards_v1::ValidationWrapperWithState<int, guardChecksInstr/4>::guardChecksDef(g, def,
val, indirectionIndex)
IRGuards::Guards_v1::ParameterizedValidationWrapper<int, guardChecksInstr/4>::guardChecksDef(g,
def, val, indirectionIndex)
}
Node getABarrierNode(int indirectionIndex) {

View File

@@ -688,15 +688,9 @@ private module Cached {
conversionFlow(mid, instr, false, _)
)
or
exists(int ind0 |
exists(Operand address |
isDereference(operand.getDef(), address, _) and
isUseImpl(address, base, ind0)
)
or
isUseImpl(operand.getDef().(InitializeParameterInstruction).getAnOperand(), base, ind0)
|
ind0 = ind - 1
exists(Operand address |
isDereference(operand.getDef(), address, _) and
isUseImpl(address, base, ind - 1)
)
}

View File

@@ -2679,7 +2679,7 @@ class TranslatedDestructorFieldDestruction extends TranslatedNonConstantExpr, St
final override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
tag = OnlyInstructionTag() and
operandTag instanceof UnaryOperandTag and
result = getTranslatedFunction(getEnclosingFunction(expr)).getInitializeThisInstruction()
result = getTranslatedFunction(getEnclosingFunction(expr)).getLoadThisInstruction()
}
final override Field getInstructionField(InstructionTag tag) {

View File

@@ -306,11 +306,11 @@ class TranslatedFunction extends TranslatedRootElement, TTranslatedFunction {
final predicate hasReturnValue() { hasReturnValue(func) }
/**
* Gets the single `InitializeThis` instruction for this function. Holds only
* if the function is an instance member function, constructor, or destructor.
* Gets the first load of `this` for this function. Holds only if the function
* is an instance member function, constructor, or destructor.
*/
final Instruction getInitializeThisInstruction() {
result = getTranslatedThisParameter(func).getInstruction(InitializerStoreTag())
final Instruction getLoadThisInstruction() {
result = getTranslatedThisParameter(func).getInstruction(InitializerIndirectAddressTag())
}
/**
@@ -639,7 +639,7 @@ class TranslatedConstructorInitList extends TranslatedElement, InitializationCon
}
override Instruction getTargetAddress() {
result = getTranslatedFunction(func).getInitializeThisInstruction()
result = getTranslatedFunction(func).getLoadThisInstruction()
}
override Type getTargetType() { result = getTranslatedFunction(func).getThisType() }

View File

@@ -950,7 +950,7 @@ abstract class TranslatedBaseStructorCall extends TranslatedStructorCallFromStru
final override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
tag = OnlyInstructionTag() and
operandTag instanceof UnaryOperandTag and
result = getTranslatedFunction(this.getFunction()).getInitializeThisInstruction()
result = getTranslatedFunction(this.getFunction()).getLoadThisInstruction()
}
final override predicate getInstructionInheritance(
@@ -1000,7 +1000,7 @@ class TranslatedConstructorDelegationInit extends TranslatedConstructorCallFromC
}
final override Instruction getReceiver() {
result = getTranslatedFunction(this.getFunction()).getInitializeThisInstruction()
result = getTranslatedFunction(this.getFunction()).getLoadThisInstruction()
}
}

View File

@@ -158,22 +158,6 @@ private class UnsignedBitwiseAndExpr extends BitwiseAndExpr {
}
}
/**
* Gets the floor of `v`, with additional logic to work around issues with
* large numbers.
*/
bindingset[v]
float safeFloor(float v) {
// return the floor of v
v.abs() < 2.pow(31) and
result = v.floor()
or
// `floor()` doesn't work correctly on large numbers (since it returns an integer),
// so fall back to unrounded numbers at this scale.
not v.abs() < 2.pow(31) and
result = v
}
/** A `MulExpr` where exactly one operand is constant. */
private class MulByConstantExpr extends MulExpr {
float constant;
@@ -1266,7 +1250,7 @@ private float getLowerBoundsImpl(Expr expr) {
rsExpr = expr and
left = getFullyConvertedLowerBounds(rsExpr.getLeftOperand()) and
right = getValue(rsExpr.getRightOperand().getFullyConverted()).toInt() and
result = safeFloor(left / 2.pow(right))
result = (left / 2.pow(right)).floorFloat()
)
// Not explicitly modeled by a SimpleRangeAnalysisExpr
) and
@@ -1475,7 +1459,7 @@ private float getUpperBoundsImpl(Expr expr) {
rsExpr = expr and
left = getFullyConvertedUpperBounds(rsExpr.getLeftOperand()) and
right = getValue(rsExpr.getRightOperand().getFullyConverted()).toInt() and
result = safeFloor(left / 2.pow(right))
result = (left / 2.pow(right)).floorFloat()
)
// Not explicitly modeled by a SimpleRangeAnalysisExpr
) and
@@ -1725,6 +1709,22 @@ predicate nonNanGuardedVariable(Expr guard, VariableAccess v, boolean branch) {
nanExcludingComparison(guard, branch)
}
/**
* Adjusts a lower bound to its meaning for integral types.
*
* Examples:
* `>= 3.0` becomes `3.0`
* ` > 3.0` becomes `4.0`
* `>= 3.5` becomes `4.0`
* ` > 3.5` becomes `4.0`
*/
bindingset[strictness, lb]
private float adjustLowerBoundIntegral(RelationStrictness strictness, float lb) {
if strictness = Nonstrict() and lb.floorFloat() = lb
then result = lb
else result = lb.floorFloat() + 1
}
/**
* If the guard is a comparison of the form `p*v + q <CMP> r`, then this
* predicate uses the bounds information for `r` to compute a lower bound
@@ -1736,15 +1736,29 @@ private predicate lowerBoundFromGuard(Expr guard, VariableAccess v, float lb, bo
|
if nonNanGuardedVariable(guard, v, branch)
then
if
strictness = Nonstrict() or
not getVariableRangeType(v.getTarget()) instanceof IntegralType
then lb = childLB
else lb = childLB + 1
if getVariableRangeType(v.getTarget()) instanceof IntegralType
then lb = adjustLowerBoundIntegral(strictness, childLB)
else lb = childLB
else lb = varMinVal(v.getTarget())
)
}
/**
* Adjusts an upper bound to its meaning for integral types.
*
* Examples:
* `<= 3.0` becomes `3.0`
* ` < 3.0` becomes `2.0`
* `<= 3.5` becomes `3.0`
* ` < 3.5` becomes `3.0`
*/
bindingset[strictness, ub]
private float adjustUpperBoundIntegral(RelationStrictness strictness, float ub) {
if strictness = Nonstrict() and ub.ceilFloat() = ub
then result = ub
else result = ub.ceilFloat() - 1
}
/**
* If the guard is a comparison of the form `p*v + q <CMP> r`, then this
* predicate uses the bounds information for `r` to compute a upper bound
@@ -1756,11 +1770,9 @@ private predicate upperBoundFromGuard(Expr guard, VariableAccess v, float ub, bo
|
if nonNanGuardedVariable(guard, v, branch)
then
if
strictness = Nonstrict() or
not getVariableRangeType(v.getTarget()) instanceof IntegralType
then ub = childUB
else ub = childUB - 1
if getVariableRangeType(v.getTarget()) instanceof IntegralType
then ub = adjustUpperBoundIntegral(strictness, childUB)
else ub = childUB
else ub = varMaxVal(v.getTarget())
)
}

View File

@@ -25,11 +25,16 @@ import UnsignedGEZero
//
// So to reduce the number of false positives, we do not report a result if
// the comparison is in a macro expansion. Similarly for template
// instantiations.
// instantiations, static asserts, non-type template arguments, enum constants,
// and constexprs.
from ComparisonOperation cmp, SmallSide ss, float left, float right, boolean value, string reason
where
not cmp.isInMacroExpansion() and
not cmp.isFromTemplateInstantiation(_) and
not exists(StaticAssert s | s.getCondition() = cmp.getParent*()) and
not exists(Declaration d | d.getATemplateArgument() = cmp.getParent*()) and
not exists(Variable v | v.isConstexpr() | v.getInitializer().getExpr() = cmp.getParent*()) and
not exists(EnumConstant e | e.getInitializer().getExpr() = cmp.getParent*()) and
not functionContainsDisabledCode(cmp.getEnclosingFunction()) and
reachablePointlessComparison(cmp, left, right, value, ss) and
// a comparison between an enum and zero is always valid because whether

View File

@@ -10,7 +10,7 @@ import ExternalAPIsSpecific
/** A node representing untrusted data being passed to an external API. */
class UntrustedExternalApiDataNode extends ExternalApiDataNode {
UntrustedExternalApiDataNode() { UntrustedDataToExternalApiFlow::flow(_, this) }
UntrustedExternalApiDataNode() { UntrustedDataToExternalApiFlow::flowTo(this) }
/** Gets a source of untrusted data which is passed to this external API data node. */
DataFlow::Node getAnUntrustedSource() { UntrustedDataToExternalApiFlow::flow(result, this) }

View File

@@ -10,7 +10,7 @@ import ExternalAPIsSpecific
/** A node representing untrusted data being passed to an external API. */
class UntrustedExternalApiDataNode extends ExternalApiDataNode {
UntrustedExternalApiDataNode() { UntrustedDataToExternalApiFlow::flow(_, this) }
UntrustedExternalApiDataNode() { UntrustedDataToExternalApiFlow::flowTo(this) }
/** Gets a source of untrusted data which is passed to this external API data node. */
DataFlow::Node getAnUntrustedSource() { UntrustedDataToExternalApiFlow::flow(result, this) }

View File

@@ -263,7 +263,7 @@ module FromSensitiveFlow = TaintTracking::Global<FromSensitiveConfig>;
* A taint flow configuration for flow from a sensitive expression to an encryption operation.
*/
module ToEncryptionConfig implements DataFlow::ConfigSig {
predicate isSource(DataFlow::Node source) { FromSensitiveFlow::flow(source, _) }
predicate isSource(DataFlow::Node source) { FromSensitiveFlow::flowFrom(source) }
predicate isSink(DataFlow::Node sink) { isSinkEncrypt(sink, _) }
@@ -311,7 +311,7 @@ where
FromSensitiveFlow::flowPath(source, sink) and
isSinkSendRecv(sink.getNode(), networkSendRecv) and
// no flow from sensitive -> evidence of encryption
not ToEncryptionFlow::flow(source.getNode(), _) and
not ToEncryptionFlow::flowFrom(source.getNode()) and
not FromEncryptionFlow::flowTo(sink.getNode()) and
// construct result
if networkSendRecv instanceof NetworkSend

View File

@@ -0,0 +1,4 @@
---
category: minorAnalysis
---
* The `cpp/constant-comparison` query has been updated to not produce false positives for constants that are now represented by their unfolded expression trees.

View File

@@ -129,7 +129,7 @@ module PointerArithmeticToDerefFlow = DataFlow::Global<PointerArithmeticToDerefC
predicate pointerArithOverflow(PointerArithmeticInstruction pai, int delta) {
pointerArithOverflow0(pai, delta) and
PointerArithmeticToDerefFlow::flow(DataFlow::instructionNode(pai), _)
PointerArithmeticToDerefFlow::flowFrom(DataFlow::instructionNode(pai))
}
bindingset[v]

View File

@@ -26,9 +26,7 @@ void constantAddresses(int param) {
constexpr int *array2d = &int_arr_arr[1][1] + 1;
constexpr int *const_ints = &int_arr_arr[int_const][extern_int_const];
// Commented out because clang and EDG disagree on whether this is
// constant.
//constexpr int *stmtexpr_int = &int_arr[ ({ 1; }) ];
constexpr int *stmtexpr_int = &int_arr[ ({ 1; }) ];
constexpr int *comma_int = &int_arr[ ((void)0, 1) ];
constexpr int *comma_addr = ((void)0, &int_var);

View File

@@ -0,0 +1,5 @@
| addresses.cpp:29:35:29:54 | & ... | stmtexpr_int | misclassified as NOT constant |
| addresses.cpp:31:32:31:55 | & ... | comma_int | misclassified as NOT constant |
| addresses.cpp:36:39:36:70 | ... ? ... : ... | ternary_ptr_cond | misclassified as NOT constant |
| addresses.cpp:37:35:37:69 | & ... | ptr_subtract | misclassified as NOT constant |
| addresses.cpp:39:35:39:50 | ... + ... | constexpr_va | misclassified as NOT constant |

View File

@@ -193,10 +193,10 @@ edges
| C.cpp:18:12:18:18 | call to C [s3] | C.cpp:18:12:18:18 | *new [s3] | provenance | |
| C.cpp:19:5:19:5 | *c [s1] | C.cpp:27:8:27:11 | *this [s1] | provenance | |
| C.cpp:19:5:19:5 | *c [s3] | C.cpp:27:8:27:11 | *this [s3] | provenance | |
| C.cpp:22:3:22:3 | *C [post update] [s1] | C.cpp:22:3:22:3 | *this [Return] [s1] | provenance | |
| C.cpp:22:3:22:3 | *this [Return] [s1] | C.cpp:18:12:18:18 | call to C [s1] | provenance | |
| C.cpp:22:3:22:3 | *this [Return] [s3] | C.cpp:18:12:18:18 | call to C [s3] | provenance | |
| C.cpp:22:3:22:3 | *this [post update] [s1] | C.cpp:22:3:22:3 | *this [Return] [s1] | provenance | |
| C.cpp:22:12:22:21 | new | C.cpp:22:3:22:3 | *this [post update] [s1] | provenance | |
| C.cpp:22:12:22:21 | new | C.cpp:22:3:22:3 | *C [post update] [s1] | provenance | |
| C.cpp:22:12:22:21 | new | C.cpp:22:12:22:21 | new | provenance | |
| C.cpp:24:5:24:8 | *this [post update] [s3] | C.cpp:22:3:22:3 | *this [Return] [s3] | provenance | |
| C.cpp:24:5:24:25 | ... = ... | C.cpp:24:5:24:8 | *this [post update] [s3] | provenance | |
@@ -736,12 +736,12 @@ edges
| constructors.cpp:19:22:19:23 | *this [b_] | constructors.cpp:19:22:19:23 | b_ | provenance | |
| constructors.cpp:19:22:19:23 | b_ | constructors.cpp:19:9:19:9 | *b | provenance | |
| constructors.cpp:19:22:19:23 | b_ | constructors.cpp:19:22:19:23 | b_ | provenance | |
| constructors.cpp:23:5:23:7 | *this [post update] [a_] | constructors.cpp:23:5:23:7 | *this [Return] [a_] | provenance | |
| constructors.cpp:23:5:23:7 | *this [post update] [b_] | constructors.cpp:23:5:23:7 | *this [Return] [b_] | provenance | |
| constructors.cpp:23:5:23:7 | *Foo [post update] [a_] | constructors.cpp:23:5:23:7 | *this [Return] [a_] | provenance | |
| constructors.cpp:23:5:23:7 | *Foo [post update] [b_] | constructors.cpp:23:5:23:7 | *this [Return] [b_] | provenance | |
| constructors.cpp:23:13:23:13 | a | constructors.cpp:23:28:23:28 | a | provenance | |
| constructors.cpp:23:20:23:20 | b | constructors.cpp:23:35:23:35 | b | provenance | |
| constructors.cpp:23:28:23:28 | a | constructors.cpp:23:5:23:7 | *this [post update] [a_] | provenance | |
| constructors.cpp:23:35:23:35 | b | constructors.cpp:23:5:23:7 | *this [post update] [b_] | provenance | |
| constructors.cpp:23:28:23:28 | a | constructors.cpp:23:5:23:7 | *Foo [post update] [a_] | provenance | |
| constructors.cpp:23:35:23:35 | b | constructors.cpp:23:5:23:7 | *Foo [post update] [b_] | provenance | |
| constructors.cpp:26:15:26:15 | *f [a_] | constructors.cpp:28:10:28:10 | *f [a_] | provenance | |
| constructors.cpp:26:15:26:15 | *f [b_] | constructors.cpp:29:10:29:10 | *f [b_] | provenance | |
| constructors.cpp:28:10:28:10 | *f [a_] | constructors.cpp:18:9:18:9 | *this [a_] | provenance | |
@@ -1122,9 +1122,9 @@ nodes
| C.cpp:18:12:18:18 | call to C [s3] | semmle.label | call to C [s3] |
| C.cpp:19:5:19:5 | *c [s1] | semmle.label | *c [s1] |
| C.cpp:19:5:19:5 | *c [s3] | semmle.label | *c [s3] |
| C.cpp:22:3:22:3 | *C [post update] [s1] | semmle.label | *C [post update] [s1] |
| C.cpp:22:3:22:3 | *this [Return] [s1] | semmle.label | *this [Return] [s1] |
| C.cpp:22:3:22:3 | *this [Return] [s3] | semmle.label | *this [Return] [s3] |
| C.cpp:22:3:22:3 | *this [post update] [s1] | semmle.label | *this [post update] [s1] |
| C.cpp:22:12:22:21 | new | semmle.label | new |
| C.cpp:22:12:22:21 | new | semmle.label | new |
| C.cpp:24:5:24:8 | *this [post update] [s3] | semmle.label | *this [post update] [s3] |
@@ -1678,10 +1678,10 @@ nodes
| constructors.cpp:19:22:19:23 | *this [b_] | semmle.label | *this [b_] |
| constructors.cpp:19:22:19:23 | b_ | semmle.label | b_ |
| constructors.cpp:19:22:19:23 | b_ | semmle.label | b_ |
| constructors.cpp:23:5:23:7 | *Foo [post update] [a_] | semmle.label | *Foo [post update] [a_] |
| constructors.cpp:23:5:23:7 | *Foo [post update] [b_] | semmle.label | *Foo [post update] [b_] |
| constructors.cpp:23:5:23:7 | *this [Return] [a_] | semmle.label | *this [Return] [a_] |
| constructors.cpp:23:5:23:7 | *this [Return] [b_] | semmle.label | *this [Return] [b_] |
| constructors.cpp:23:5:23:7 | *this [post update] [a_] | semmle.label | *this [post update] [a_] |
| constructors.cpp:23:5:23:7 | *this [post update] [b_] | semmle.label | *this [post update] [b_] |
| constructors.cpp:23:13:23:13 | a | semmle.label | a |
| constructors.cpp:23:20:23:20 | b | semmle.label | b |
| constructors.cpp:23:28:23:28 | a | semmle.label | a |

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -27,7 +27,7 @@ invalidOverlap
nonUniqueEnclosingIRFunction
fieldAddressOnNonPointer
thisArgumentIsNonPointer
| ir.cpp:2546:34:2546:34 | Call: call to operator bool | Call instruction 'Call: call to operator bool' has a `this` argument operand that is not an address, in function '$@'. | ir.cpp:2545:6:2545:23 | void this_inconsistency(bool) | void this_inconsistency(bool) |
| ir.cpp:2548:34:2548:34 | Call: call to operator bool | Call instruction 'Call: call to operator bool' has a `this` argument operand that is not an address, in function '$@'. | ir.cpp:2547:6:2547:23 | void this_inconsistency(bool) | void this_inconsistency(bool) |
nonUniqueIRVariable
nonBooleanOperand
missingCppType

View File

@@ -27,7 +27,7 @@ invalidOverlap
nonUniqueEnclosingIRFunction
fieldAddressOnNonPointer
thisArgumentIsNonPointer
| ir.cpp:2546:34:2546:34 | Call: call to operator bool | Call instruction 'Call: call to operator bool' has a `this` argument operand that is not an address, in function '$@'. | ir.cpp:2545:6:2545:23 | void this_inconsistency(bool) | void this_inconsistency(bool) |
| ir.cpp:2548:34:2548:34 | Call: call to operator bool | Call instruction 'Call: call to operator bool' has a `this` argument operand that is not an address, in function '$@'. | ir.cpp:2547:6:2547:23 | void this_inconsistency(bool) | void this_inconsistency(bool) |
nonUniqueIRVariable
nonBooleanOperand
missingCppType

View File

@@ -1214,6 +1214,8 @@ void VectorTypes(int i) {
vi4[i] = x;
vector(4, int) vi4_shuffle = __builtin_shufflevector(vi4, vi4, 3+0, 2, 1, 0);
vi4 = vi4 + vi4_shuffle;
vi4 = vi4 && vi4_shuffle;
vi4 = vi4 || vi4_shuffle;
}
void *memcpy(void *dst, void *src, int size);

View File

@@ -20,7 +20,7 @@ multipleIRTypes
lostReachability
backEdgeCountMismatch
useNotDominatedByDefinition
| ir.cpp:1535:8:1535:8 | Unary | Operand 'Unary' is not dominated by its definition in function '$@'. | ir.cpp:1535:8:1535:8 | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() |
| ir.cpp:1537:8:1537:8 | Unary | Operand 'Unary' is not dominated by its definition in function '$@'. | ir.cpp:1537:8:1537:8 | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() |
switchInstructionWithoutDefaultEdge
notMarkedAsConflated
wronglyMarkedAsConflated
@@ -28,7 +28,7 @@ invalidOverlap
nonUniqueEnclosingIRFunction
fieldAddressOnNonPointer
thisArgumentIsNonPointer
| ir.cpp:2546:34:2546:34 | Call: call to operator bool | Call instruction 'Call: call to operator bool' has a `this` argument operand that is not an address, in function '$@'. | ir.cpp:2545:6:2545:23 | void this_inconsistency(bool) | void this_inconsistency(bool) |
| ir.cpp:2548:34:2548:34 | Call: call to operator bool | Call instruction 'Call: call to operator bool' has a `this` argument operand that is not an address, in function '$@'. | ir.cpp:2547:6:2547:23 | void this_inconsistency(bool) | void this_inconsistency(bool) |
nonUniqueIRVariable
nonBooleanOperand
missingCppType

File diff suppressed because it is too large Load Diff

View File

@@ -27,7 +27,7 @@ invalidOverlap
nonUniqueEnclosingIRFunction
fieldAddressOnNonPointer
thisArgumentIsNonPointer
| ir.cpp:2546:34:2546:34 | Call: call to operator bool | Call instruction 'Call: call to operator bool' has a `this` argument operand that is not an address, in function '$@'. | ir.cpp:2545:6:2545:23 | void this_inconsistency(bool) | void this_inconsistency(bool) |
| ir.cpp:2548:34:2548:34 | Call: call to operator bool | Call instruction 'Call: call to operator bool' has a `this` argument operand that is not an address, in function '$@'. | ir.cpp:2547:6:2547:23 | void this_inconsistency(bool) | void this_inconsistency(bool) |
nonUniqueIRVariable
nonBooleanOperand
missingCppType

View File

@@ -27,7 +27,7 @@ invalidOverlap
nonUniqueEnclosingIRFunction
fieldAddressOnNonPointer
thisArgumentIsNonPointer
| ir.cpp:2546:34:2546:34 | Call: call to operator bool | Call instruction 'Call: call to operator bool' has a `this` argument operand that is not an address, in function '$@'. | ir.cpp:2545:6:2545:23 | void this_inconsistency(bool) | void this_inconsistency(bool) |
| ir.cpp:2548:34:2548:34 | Call: call to operator bool | Call instruction 'Call: call to operator bool' has a `this` argument operand that is not an address, in function '$@'. | ir.cpp:2547:6:2547:23 | void this_inconsistency(bool) | void this_inconsistency(bool) |
nonUniqueIRVariable
nonBooleanOperand
missingCppType

View File

@@ -1,148 +1,153 @@
| test.c:154:10:154:40 | ... ? ... : ... | -1.0 | 1.0 | -1.0 |
| test.c:357:8:357:23 | ... ? ... : ... | 0.0 | 0.0 | 10.0 |
| test.c:358:8:358:24 | ... ? ... : ... | 0.0 | 10.0 | 0.0 |
| test.c:366:10:366:15 | ... ? ... : ... | 0.0 | 0.0 | 5.0 |
| test.c:367:10:367:17 | ... ? ... : ... | 0.0 | 0.0 | 500.0 |
| test.c:368:10:368:21 | ... ? ... : ... | 1.0 | 1.0 | 500.0 |
| test.c:369:10:369:36 | ... ? ... : ... | 0.0 | 1.0 | 5.0 |
| test.c:370:10:370:38 | ... ? ... : ... | 0.0 | 1.0 | 500.0 |
| test.c:371:10:371:39 | ... ? ... : ... | 1.0 | 1.0 | 500.0 |
| test.c:379:8:379:24 | ... ? ... : ... | 101.0 | 101.0 | 110.0 |
| test.c:380:8:380:25 | ... ? ... : ... | 101.0 | 110.0 | 101.0 |
| test.c:385:10:385:21 | ... ? ... : ... | 0.0 | 0.0 | 5.0 |
| test.c:386:10:386:21 | ... ? ... : ... | 100.0 | 100.0 | 5.0 |
| test.c:387:10:387:38 | ... ? ... : ... | 0.0 | 100.0 | 5.0 |
| test.c:394:14:394:108 | ... ? ... : ... | 0.14333887 | 0.14333887 | 0.40496805 |
| test.c:394:18:394:95 | ... ? ... : ... | 0.14333887 | 0.14333887 | 0.21540225 |
| test.c:394:22:394:82 | ... ? ... : ... | 0.14333887 | 0.14333887 | 0.39206458 |
| test.c:394:26:394:69 | ... ? ... : ... | 0.14333887 | 0.14333887 | 0.35279203 |
| test.c:394:30:394:56 | ... ? ... : ... | 0.14333887 | 0.47438827 | 0.14333887 |
| test.c:395:14:395:108 | ... ? ... : ... | 0.22247853 | 0.22247853 | 0.5297741 |
| test.c:395:18:395:95 | ... ? ... : ... | 0.22247853 | 0.22247853 | 0.59270465 |
| test.c:395:22:395:82 | ... ? ... : ... | 0.22247853 | 0.22247853 | 0.32661893 |
| test.c:395:26:395:69 | ... ? ... : ... | 0.22247853 | 0.34183348 | 0.22247853 |
| test.c:395:30:395:56 | ... ? ... : ... | 0.34183348 | 0.34183348 | 0.3533464 |
| test.c:396:14:396:108 | ... ? ... : ... | 0.05121256 | 0.05121256 | 0.67981451 |
| test.c:396:18:396:95 | ... ? ... : ... | 0.05121256 | 0.05121256 | 0.79310745 |
| test.c:396:22:396:82 | ... ? ... : ... | 0.05121256 | 0.31235514 | 0.05121256 |
| test.c:396:26:396:69 | ... ? ... : ... | 0.31235514 | 0.31478084 | 0.31235514 |
| test.c:396:30:396:56 | ... ? ... : ... | 0.31478084 | 0.77429603 | 0.31478084 |
| test.c:397:14:397:108 | ... ? ... : ... | 0.36976948 | 0.36976948 | 0.83866835 |
| test.c:397:18:397:95 | ... ? ... : ... | 0.36976948 | 0.44729556 | 0.36976948 |
| test.c:397:22:397:82 | ... ? ... : ... | 0.44729556 | 0.44729556 | 0.59952732 |
| test.c:397:26:397:69 | ... ? ... : ... | 0.44729556 | 0.44729556 | 0.98997262 |
| test.c:397:30:397:56 | ... ? ... : ... | 0.44729556 | 0.44729556 | 0.80599202 |
| test.c:398:14:398:108 | ... ? ... : ... | 0.10597712 | 0.10597712 | 0.68734874 |
| test.c:398:18:398:95 | ... ? ... : ... | 0.10597712 | 0.10597712 | 0.72485966 |
| test.c:398:22:398:82 | ... ? ... : ... | 0.10597712 | 0.10597712 | 0.21778426 |
| test.c:398:26:398:69 | ... ? ... : ... | 0.10597712 | 0.49311828 | 0.10597712 |
| test.c:398:30:398:56 | ... ? ... : ... | 0.49311828 | 0.49311828 | 0.90389911 |
| test.c:399:14:399:108 | ... ? ... : ... | 0.1078665 | 0.1078665 | 0.58440865 |
| test.c:399:18:399:95 | ... ? ... : ... | 0.1078665 | 0.1078665 | 0.34808892 |
| test.c:399:22:399:82 | ... ? ... : ... | 0.1078665 | 0.1078665 | 0.76164052 |
| test.c:399:26:399:69 | ... ? ... : ... | 0.1078665 | 0.1078665 | 0.11884576 |
| test.c:399:30:399:56 | ... ? ... : ... | 0.1078665 | 0.47452848 | 0.1078665 |
| test.c:400:14:400:108 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.36232384 |
| test.c:400:18:400:95 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.85235179 |
| test.c:400:22:400:82 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.12516558 |
| test.c:400:26:400:69 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.95823075 |
| test.c:400:30:400:56 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.82905046 |
| test.c:401:14:401:108 | ... ? ... : ... | 0.14963485 | 0.14963485 | 0.84331272 |
| test.c:401:18:401:95 | ... ? ... : ... | 0.14963485 | 0.14963485 | 0.48640909 |
| test.c:401:22:401:82 | ... ? ... : ... | 0.14963485 | 0.14963485 | 0.45041108 |
| test.c:401:26:401:69 | ... ? ... : ... | 0.14963485 | 0.32876044 | 0.14963485 |
| test.c:401:30:401:56 | ... ? ... : ... | 0.32876044 | 0.38708626 | 0.32876044 |
| test.c:402:14:402:108 | ... ? ... : ... | 0.05328182 | 0.14800508 | 0.05328182 |
| test.c:402:18:402:95 | ... ? ... : ... | 0.14800508 | 0.14800508 | 0.37428143 |
| test.c:402:22:402:82 | ... ? ... : ... | 0.14800508 | 0.15755063 | 0.14800508 |
| test.c:402:26:402:69 | ... ? ... : ... | 0.15755063 | 0.15755063 | 0.26428481 |
| test.c:402:30:402:56 | ... ? ... : ... | 0.15755063 | 0.15755063 | 0.77086833 |
| test.c:403:14:403:108 | ... ? ... : ... | 0.27643238 | 0.27643238 | 0.69072144 |
| test.c:403:18:403:95 | ... ? ... : ... | 0.27643238 | 0.27643238 | 0.39468857 |
| test.c:403:22:403:82 | ... ? ... : ... | 0.27643238 | 0.27643238 | 0.55679274 |
| test.c:403:26:403:69 | ... ? ... : ... | 0.27643238 | 0.41736536 | 0.27643238 |
| test.c:403:30:403:56 | ... ? ... : ... | 0.41736536 | 0.41736536 | 0.76826628 |
| test.c:404:14:404:108 | ... ? ... : ... | 0.2051911 | 0.2051911 | 0.81372798 |
| test.c:404:18:404:95 | ... ? ... : ... | 0.2051911 | 0.2051911 | 0.88745559 |
| test.c:404:22:404:82 | ... ? ... : ... | 0.2051911 | 0.29904824 | 0.2051911 |
| test.c:404:26:404:69 | ... ? ... : ... | 0.29904824 | 0.29904824 | 0.76242583 |
| test.c:404:30:404:56 | ... ? ... : ... | 0.29904824 | 0.88955345 | 0.29904824 |
| test.c:405:14:405:108 | ... ? ... : ... | 0.13204114 | 0.13204114 | 0.42762647 |
| test.c:405:18:405:95 | ... ? ... : ... | 0.13204114 | 0.13204114 | 0.52031241 |
| test.c:405:22:405:82 | ... ? ... : ... | 0.13204114 | 0.42186276 | 0.13204114 |
| test.c:405:26:405:69 | ... ? ... : ... | 0.42186276 | 0.42186276 | 0.44996679 |
| test.c:405:30:405:56 | ... ? ... : ... | 0.42186276 | 0.42186276 | 0.53843358 |
| test.c:447:4:621:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:447:5:449:49 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:450:6:532:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:451:8:469:41 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:454:10:458:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:454:31:454:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:456:13:458:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:463:12:468:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:464:12:464:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:466:15:468:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:470:6:489:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:473:8:477:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:473:29:473:77 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:475:11:477:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:478:6:478:54 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:482:10:486:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:482:31:482:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:484:13:486:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:487:9:489:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:491:10:510:43 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:494:12:499:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:495:12:495:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:497:15:499:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:504:14:509:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:505:14:505:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:507:17:509:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:511:9:532:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:514:14:519:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:515:14:515:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:517:17:519:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:520:12:520:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:524:12:529:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:525:12:525:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:527:15:529:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:530:11:532:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:533:9:535:51 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:536:9:621:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:537:14:556:47 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:540:16:545:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:541:16:541:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:543:19:545:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:550:18:555:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:551:18:551:66 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:553:21:555:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:557:12:578:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:560:14:565:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:561:14:561:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:563:17:565:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:566:12:566:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:570:16:575:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:571:16:571:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:573:19:575:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:576:15:578:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:580:12:599:45 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:583:14:588:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:584:14:584:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:586:17:588:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:593:16:598:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:594:16:594:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:596:19:598:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:600:11:621:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:603:16:608:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:604:16:604:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:606:19:608:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:609:14:609:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:613:14:618:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:614:14:614:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:616:17:618:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:619:13:621:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:647:20:647:36 | ... ? ... : ... | 0.0 | 0.0 | 100.0 |
| test.c:859:5:859:14 | ... ? ... : ... | 0.0 | 1.0 | 0.0 |
| test.c:860:5:860:14 | ... ? ... : ... | 0.0 | 0.0 | 1.0 |
| test.c:348:22:348:44 | ... ? ... : ... | 0.0 | 0.0 | 2.0 |
| test.c:349:20:349:43 | ... ? ... : ... | 0.0 | 0.0 | 2.0 |
| test.c:350:22:350:44 | ... ? ... : ... | 0.0 | 0.0 | 2.0 |
| test.c:351:22:351:44 | ... ? ... : ... | 0.0 | 0.0 | 2.0 |
| test.c:352:22:352:45 | ... ? ... : ... | 2.0 | 8.0 | 2.0 |
| test.c:378:8:378:23 | ... ? ... : ... | 0.0 | 0.0 | 10.0 |
| test.c:379:8:379:24 | ... ? ... : ... | 0.0 | 10.0 | 0.0 |
| test.c:387:10:387:15 | ... ? ... : ... | 0.0 | 0.0 | 5.0 |
| test.c:388:10:388:17 | ... ? ... : ... | 0.0 | 0.0 | 500.0 |
| test.c:389:10:389:21 | ... ? ... : ... | 1.0 | 1.0 | 500.0 |
| test.c:390:10:390:36 | ... ? ... : ... | 0.0 | 1.0 | 5.0 |
| test.c:391:10:391:38 | ... ? ... : ... | 0.0 | 1.0 | 500.0 |
| test.c:392:10:392:39 | ... ? ... : ... | 1.0 | 1.0 | 500.0 |
| test.c:400:8:400:24 | ... ? ... : ... | 101.0 | 101.0 | 110.0 |
| test.c:401:8:401:25 | ... ? ... : ... | 101.0 | 110.0 | 101.0 |
| test.c:406:10:406:21 | ... ? ... : ... | 0.0 | 0.0 | 5.0 |
| test.c:407:10:407:21 | ... ? ... : ... | 100.0 | 100.0 | 5.0 |
| test.c:408:10:408:38 | ... ? ... : ... | 0.0 | 100.0 | 5.0 |
| test.c:415:14:415:108 | ... ? ... : ... | 0.14333887 | 0.14333887 | 0.40496805 |
| test.c:415:18:415:95 | ... ? ... : ... | 0.14333887 | 0.14333887 | 0.21540225 |
| test.c:415:22:415:82 | ... ? ... : ... | 0.14333887 | 0.14333887 | 0.39206458 |
| test.c:415:26:415:69 | ... ? ... : ... | 0.14333887 | 0.14333887 | 0.35279203 |
| test.c:415:30:415:56 | ... ? ... : ... | 0.14333887 | 0.47438827 | 0.14333887 |
| test.c:416:14:416:108 | ... ? ... : ... | 0.22247853 | 0.22247853 | 0.5297741 |
| test.c:416:18:416:95 | ... ? ... : ... | 0.22247853 | 0.22247853 | 0.59270465 |
| test.c:416:22:416:82 | ... ? ... : ... | 0.22247853 | 0.22247853 | 0.32661893 |
| test.c:416:26:416:69 | ... ? ... : ... | 0.22247853 | 0.34183348 | 0.22247853 |
| test.c:416:30:416:56 | ... ? ... : ... | 0.34183348 | 0.34183348 | 0.3533464 |
| test.c:417:14:417:108 | ... ? ... : ... | 0.05121256 | 0.05121256 | 0.67981451 |
| test.c:417:18:417:95 | ... ? ... : ... | 0.05121256 | 0.05121256 | 0.79310745 |
| test.c:417:22:417:82 | ... ? ... : ... | 0.05121256 | 0.31235514 | 0.05121256 |
| test.c:417:26:417:69 | ... ? ... : ... | 0.31235514 | 0.31478084 | 0.31235514 |
| test.c:417:30:417:56 | ... ? ... : ... | 0.31478084 | 0.77429603 | 0.31478084 |
| test.c:418:14:418:108 | ... ? ... : ... | 0.36976948 | 0.36976948 | 0.83866835 |
| test.c:418:18:418:95 | ... ? ... : ... | 0.36976948 | 0.44729556 | 0.36976948 |
| test.c:418:22:418:82 | ... ? ... : ... | 0.44729556 | 0.44729556 | 0.59952732 |
| test.c:418:26:418:69 | ... ? ... : ... | 0.44729556 | 0.44729556 | 0.98997262 |
| test.c:418:30:418:56 | ... ? ... : ... | 0.44729556 | 0.44729556 | 0.80599202 |
| test.c:419:14:419:108 | ... ? ... : ... | 0.10597712 | 0.10597712 | 0.68734874 |
| test.c:419:18:419:95 | ... ? ... : ... | 0.10597712 | 0.10597712 | 0.72485966 |
| test.c:419:22:419:82 | ... ? ... : ... | 0.10597712 | 0.10597712 | 0.21778426 |
| test.c:419:26:419:69 | ... ? ... : ... | 0.10597712 | 0.49311828 | 0.10597712 |
| test.c:419:30:419:56 | ... ? ... : ... | 0.49311828 | 0.49311828 | 0.90389911 |
| test.c:420:14:420:108 | ... ? ... : ... | 0.1078665 | 0.1078665 | 0.58440865 |
| test.c:420:18:420:95 | ... ? ... : ... | 0.1078665 | 0.1078665 | 0.34808892 |
| test.c:420:22:420:82 | ... ? ... : ... | 0.1078665 | 0.1078665 | 0.76164052 |
| test.c:420:26:420:69 | ... ? ... : ... | 0.1078665 | 0.1078665 | 0.11884576 |
| test.c:420:30:420:56 | ... ? ... : ... | 0.1078665 | 0.47452848 | 0.1078665 |
| test.c:421:14:421:108 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.36232384 |
| test.c:421:18:421:95 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.85235179 |
| test.c:421:22:421:82 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.12516558 |
| test.c:421:26:421:69 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.95823075 |
| test.c:421:30:421:56 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.82905046 |
| test.c:422:14:422:108 | ... ? ... : ... | 0.14963485 | 0.14963485 | 0.84331272 |
| test.c:422:18:422:95 | ... ? ... : ... | 0.14963485 | 0.14963485 | 0.48640909 |
| test.c:422:22:422:82 | ... ? ... : ... | 0.14963485 | 0.14963485 | 0.45041108 |
| test.c:422:26:422:69 | ... ? ... : ... | 0.14963485 | 0.32876044 | 0.14963485 |
| test.c:422:30:422:56 | ... ? ... : ... | 0.32876044 | 0.38708626 | 0.32876044 |
| test.c:423:14:423:108 | ... ? ... : ... | 0.05328182 | 0.14800508 | 0.05328182 |
| test.c:423:18:423:95 | ... ? ... : ... | 0.14800508 | 0.14800508 | 0.37428143 |
| test.c:423:22:423:82 | ... ? ... : ... | 0.14800508 | 0.15755063 | 0.14800508 |
| test.c:423:26:423:69 | ... ? ... : ... | 0.15755063 | 0.15755063 | 0.26428481 |
| test.c:423:30:423:56 | ... ? ... : ... | 0.15755063 | 0.15755063 | 0.77086833 |
| test.c:424:14:424:108 | ... ? ... : ... | 0.27643238 | 0.27643238 | 0.69072144 |
| test.c:424:18:424:95 | ... ? ... : ... | 0.27643238 | 0.27643238 | 0.39468857 |
| test.c:424:22:424:82 | ... ? ... : ... | 0.27643238 | 0.27643238 | 0.55679274 |
| test.c:424:26:424:69 | ... ? ... : ... | 0.27643238 | 0.41736536 | 0.27643238 |
| test.c:424:30:424:56 | ... ? ... : ... | 0.41736536 | 0.41736536 | 0.76826628 |
| test.c:425:14:425:108 | ... ? ... : ... | 0.2051911 | 0.2051911 | 0.81372798 |
| test.c:425:18:425:95 | ... ? ... : ... | 0.2051911 | 0.2051911 | 0.88745559 |
| test.c:425:22:425:82 | ... ? ... : ... | 0.2051911 | 0.29904824 | 0.2051911 |
| test.c:425:26:425:69 | ... ? ... : ... | 0.29904824 | 0.29904824 | 0.76242583 |
| test.c:425:30:425:56 | ... ? ... : ... | 0.29904824 | 0.88955345 | 0.29904824 |
| test.c:426:14:426:108 | ... ? ... : ... | 0.13204114 | 0.13204114 | 0.42762647 |
| test.c:426:18:426:95 | ... ? ... : ... | 0.13204114 | 0.13204114 | 0.52031241 |
| test.c:426:22:426:82 | ... ? ... : ... | 0.13204114 | 0.42186276 | 0.13204114 |
| test.c:426:26:426:69 | ... ? ... : ... | 0.42186276 | 0.42186276 | 0.44996679 |
| test.c:426:30:426:56 | ... ? ... : ... | 0.42186276 | 0.42186276 | 0.53843358 |
| test.c:468:4:642:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:468:5:470:49 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:471:6:553:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:472:8:490:41 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:475:10:479:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:475:31:475:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:477:13:479:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:484:12:489:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:485:12:485:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:487:15:489:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:491:6:510:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:494:8:498:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:494:29:494:77 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:496:11:498:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:499:6:499:54 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:503:10:507:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:503:31:503:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:505:13:507:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:508:9:510:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:512:10:531:43 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:515:12:520:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:516:12:516:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:518:15:520:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:525:14:530:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:526:14:526:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:528:17:530:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:532:9:553:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:535:14:540:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:536:14:536:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:538:17:540:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:541:12:541:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:545:12:550:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:546:12:546:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:548:15:550:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:551:11:553:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:554:9:556:51 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:557:9:642:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:558:14:577:47 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:561:16:566:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:562:16:562:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:564:19:566:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:571:18:576:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:572:18:572:66 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:574:21:576:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:578:12:599:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:581:14:586:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:582:14:582:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:584:17:586:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:587:12:587:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:591:16:596:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:592:16:592:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:594:19:596:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:597:15:599:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:601:12:620:45 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:604:14:609:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:605:14:605:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:607:17:609:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:614:16:619:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:615:16:615:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:617:19:619:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:621:11:642:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:624:16:629:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:625:16:625:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:627:19:629:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:630:14:630:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:634:14:639:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:635:14:635:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:637:17:639:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:640:13:642:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 |
| test.c:668:20:668:36 | ... ? ... : ... | 0.0 | 0.0 | 100.0 |
| test.c:880:5:880:14 | ... ? ... : ... | 0.0 | 1.0 | 0.0 |
| test.c:881:5:881:14 | ... ? ... : ... | 0.0 | 0.0 | 1.0 |
| test.cpp:121:3:121:12 | ... ? ... : ... | 0.0 | 1.0 | 0.0 |
| test.cpp:122:3:122:12 | ... ? ... : ... | 0.0 | 0.0 | 1.0 |

View File

@@ -1,148 +1,153 @@
| test.c:154:10:154:40 | ... ? ... : ... | 2.147483647E9 | 2.147483647E9 | -1.0 |
| test.c:357:8:357:23 | ... ? ... : ... | 99.0 | 99.0 | 10.0 |
| test.c:358:8:358:24 | ... ? ... : ... | 99.0 | 10.0 | 99.0 |
| test.c:366:10:366:15 | ... ? ... : ... | 299.0 | 299.0 | 5.0 |
| test.c:367:10:367:17 | ... ? ... : ... | 500.0 | 299.0 | 500.0 |
| test.c:368:10:368:21 | ... ? ... : ... | 300.0 | 300.0 | 500.0 |
| test.c:369:10:369:36 | ... ? ... : ... | 255.0 | 300.0 | 5.0 |
| test.c:370:10:370:38 | ... ? ... : ... | 500.0 | 300.0 | 500.0 |
| test.c:371:10:371:39 | ... ? ... : ... | 300.0 | 300.0 | 500.0 |
| test.c:379:8:379:24 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 110.0 |
| test.c:380:8:380:25 | ... ? ... : ... | 4.294967295E9 | 110.0 | 4.294967295E9 |
| test.c:385:10:385:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 5.0 |
| test.c:386:10:386:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 5.0 |
| test.c:387:10:387:38 | ... ? ... : ... | 255.0 | 4.294967295E9 | 5.0 |
| test.c:394:14:394:108 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.40496805 |
| test.c:394:18:394:95 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.21540225 |
| test.c:394:22:394:82 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.39206458 |
| test.c:394:26:394:69 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.35279203 |
| test.c:394:30:394:56 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.14333887 |
| test.c:395:14:395:108 | ... ? ... : ... | 0.59270465 | 0.59270465 | 0.5297741 |
| test.c:395:18:395:95 | ... ? ... : ... | 0.59270465 | 0.3533464 | 0.59270465 |
| test.c:395:22:395:82 | ... ? ... : ... | 0.3533464 | 0.3533464 | 0.32661893 |
| test.c:395:26:395:69 | ... ? ... : ... | 0.3533464 | 0.3533464 | 0.22247853 |
| test.c:395:30:395:56 | ... ? ... : ... | 0.3533464 | 0.34183348 | 0.3533464 |
| test.c:396:14:396:108 | ... ? ... : ... | 0.79310745 | 0.79310745 | 0.67981451 |
| test.c:396:18:396:95 | ... ? ... : ... | 0.79310745 | 0.77429603 | 0.79310745 |
| test.c:396:22:396:82 | ... ? ... : ... | 0.77429603 | 0.77429603 | 0.05121256 |
| test.c:396:26:396:69 | ... ? ... : ... | 0.77429603 | 0.77429603 | 0.31235514 |
| test.c:396:30:396:56 | ... ? ... : ... | 0.77429603 | 0.77429603 | 0.31478084 |
| test.c:397:14:397:108 | ... ? ... : ... | 0.98997262 | 0.98997262 | 0.83866835 |
| test.c:397:18:397:95 | ... ? ... : ... | 0.98997262 | 0.98997262 | 0.36976948 |
| test.c:397:22:397:82 | ... ? ... : ... | 0.98997262 | 0.98997262 | 0.59952732 |
| test.c:397:26:397:69 | ... ? ... : ... | 0.98997262 | 0.80599202 | 0.98997262 |
| test.c:397:30:397:56 | ... ? ... : ... | 0.80599202 | 0.44729556 | 0.80599202 |
| test.c:398:14:398:108 | ... ? ... : ... | 0.90389911 | 0.90389911 | 0.68734874 |
| test.c:398:18:398:95 | ... ? ... : ... | 0.90389911 | 0.90389911 | 0.72485966 |
| test.c:398:22:398:82 | ... ? ... : ... | 0.90389911 | 0.90389911 | 0.21778426 |
| test.c:398:26:398:69 | ... ? ... : ... | 0.90389911 | 0.90389911 | 0.10597712 |
| test.c:398:30:398:56 | ... ? ... : ... | 0.90389911 | 0.49311828 | 0.90389911 |
| test.c:399:14:399:108 | ... ? ... : ... | 0.76164052 | 0.76164052 | 0.58440865 |
| test.c:399:18:399:95 | ... ? ... : ... | 0.76164052 | 0.76164052 | 0.34808892 |
| test.c:399:22:399:82 | ... ? ... : ... | 0.76164052 | 0.47452848 | 0.76164052 |
| test.c:399:26:399:69 | ... ? ... : ... | 0.47452848 | 0.47452848 | 0.11884576 |
| test.c:399:30:399:56 | ... ? ... : ... | 0.47452848 | 0.47452848 | 0.1078665 |
| test.c:400:14:400:108 | ... ? ... : ... | 0.95823075 | 0.95823075 | 0.36232384 |
| test.c:400:18:400:95 | ... ? ... : ... | 0.95823075 | 0.95823075 | 0.85235179 |
| test.c:400:22:400:82 | ... ? ... : ... | 0.95823075 | 0.95823075 | 0.12516558 |
| test.c:400:26:400:69 | ... ? ... : ... | 0.95823075 | 0.82905046 | 0.95823075 |
| test.c:400:30:400:56 | ... ? ... : ... | 0.82905046 | 0.02524326 | 0.82905046 |
| test.c:401:14:401:108 | ... ? ... : ... | 0.84331272 | 0.48640909 | 0.84331272 |
| test.c:401:18:401:95 | ... ? ... : ... | 0.48640909 | 0.45041108 | 0.48640909 |
| test.c:401:22:401:82 | ... ? ... : ... | 0.45041108 | 0.38708626 | 0.45041108 |
| test.c:401:26:401:69 | ... ? ... : ... | 0.38708626 | 0.38708626 | 0.14963485 |
| test.c:401:30:401:56 | ... ? ... : ... | 0.38708626 | 0.38708626 | 0.32876044 |
| test.c:402:14:402:108 | ... ? ... : ... | 0.77086833 | 0.77086833 | 0.05328182 |
| test.c:402:18:402:95 | ... ? ... : ... | 0.77086833 | 0.77086833 | 0.37428143 |
| test.c:402:22:402:82 | ... ? ... : ... | 0.77086833 | 0.77086833 | 0.14800508 |
| test.c:402:26:402:69 | ... ? ... : ... | 0.77086833 | 0.77086833 | 0.26428481 |
| test.c:402:30:402:56 | ... ? ... : ... | 0.77086833 | 0.15755063 | 0.77086833 |
| test.c:403:14:403:108 | ... ? ... : ... | 0.76826628 | 0.76826628 | 0.69072144 |
| test.c:403:18:403:95 | ... ? ... : ... | 0.76826628 | 0.76826628 | 0.39468857 |
| test.c:403:22:403:82 | ... ? ... : ... | 0.76826628 | 0.76826628 | 0.55679274 |
| test.c:403:26:403:69 | ... ? ... : ... | 0.76826628 | 0.76826628 | 0.27643238 |
| test.c:403:30:403:56 | ... ? ... : ... | 0.76826628 | 0.41736536 | 0.76826628 |
| test.c:404:14:404:108 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.81372798 |
| test.c:404:18:404:95 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.88745559 |
| test.c:404:22:404:82 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.2051911 |
| test.c:404:26:404:69 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.76242583 |
| test.c:404:30:404:56 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.29904824 |
| test.c:405:14:405:108 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.42762647 |
| test.c:405:18:405:95 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.52031241 |
| test.c:405:22:405:82 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.13204114 |
| test.c:405:26:405:69 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.44996679 |
| test.c:405:30:405:56 | ... ? ... : ... | 0.53843358 | 0.42186276 | 0.53843358 |
| test.c:447:4:621:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:447:5:449:49 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:450:6:532:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:451:8:469:41 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:454:10:458:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:454:31:454:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:456:13:458:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:463:12:468:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:464:12:464:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:466:15:468:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:470:6:489:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:473:8:477:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:473:29:473:77 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:475:11:477:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:478:6:478:54 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:482:10:486:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:482:31:482:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:484:13:486:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:487:9:489:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:491:10:510:43 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:494:12:499:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:495:12:495:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:497:15:499:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:504:14:509:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:505:14:505:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:507:17:509:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:511:9:532:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:514:14:519:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:515:14:515:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:517:17:519:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:520:12:520:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:524:12:529:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:525:12:525:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:527:15:529:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:530:11:532:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:533:9:535:51 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:536:9:621:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:537:14:556:47 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:540:16:545:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:541:16:541:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:543:19:545:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:550:18:555:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:551:18:551:66 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:553:21:555:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:557:12:578:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:560:14:565:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:561:14:561:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:563:17:565:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:566:12:566:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:570:16:575:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:571:16:571:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:573:19:575:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:576:15:578:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:580:12:599:45 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:583:14:588:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:584:14:584:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:586:17:588:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:593:16:598:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:594:16:594:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:596:19:598:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:600:11:621:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:603:16:608:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:604:16:604:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:606:19:608:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:609:14:609:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:613:14:618:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:614:14:614:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:616:17:618:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:619:13:621:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:647:20:647:36 | ... ? ... : ... | 100.0 | 99.0 | 100.0 |
| test.c:859:5:859:14 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 |
| test.c:860:5:860:14 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 |
| test.c:348:22:348:44 | ... ? ... : ... | 2.147483647E9 | 2.147483647E9 | 2.0 |
| test.c:349:20:349:43 | ... ? ... : ... | 2.147483647E9 | 2.147483647E9 | 2.0 |
| test.c:350:22:350:44 | ... ? ... : ... | 1.431655764E9 | 1.431655764E9 | 2.0 |
| test.c:351:22:351:44 | ... ? ... : ... | 2.147483647E9 | 2.147483647E9 | 2.0 |
| test.c:352:22:352:45 | ... ? ... : ... | 2.147483647E9 | 2.147483647E9 | 2.0 |
| test.c:378:8:378:23 | ... ? ... : ... | 99.0 | 99.0 | 10.0 |
| test.c:379:8:379:24 | ... ? ... : ... | 99.0 | 10.0 | 99.0 |
| test.c:387:10:387:15 | ... ? ... : ... | 299.0 | 299.0 | 5.0 |
| test.c:388:10:388:17 | ... ? ... : ... | 500.0 | 299.0 | 500.0 |
| test.c:389:10:389:21 | ... ? ... : ... | 300.0 | 300.0 | 500.0 |
| test.c:390:10:390:36 | ... ? ... : ... | 255.0 | 300.0 | 5.0 |
| test.c:391:10:391:38 | ... ? ... : ... | 500.0 | 300.0 | 500.0 |
| test.c:392:10:392:39 | ... ? ... : ... | 300.0 | 300.0 | 500.0 |
| test.c:400:8:400:24 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 110.0 |
| test.c:401:8:401:25 | ... ? ... : ... | 4.294967295E9 | 110.0 | 4.294967295E9 |
| test.c:406:10:406:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 5.0 |
| test.c:407:10:407:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 5.0 |
| test.c:408:10:408:38 | ... ? ... : ... | 255.0 | 4.294967295E9 | 5.0 |
| test.c:415:14:415:108 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.40496805 |
| test.c:415:18:415:95 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.21540225 |
| test.c:415:22:415:82 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.39206458 |
| test.c:415:26:415:69 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.35279203 |
| test.c:415:30:415:56 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.14333887 |
| test.c:416:14:416:108 | ... ? ... : ... | 0.59270465 | 0.59270465 | 0.5297741 |
| test.c:416:18:416:95 | ... ? ... : ... | 0.59270465 | 0.3533464 | 0.59270465 |
| test.c:416:22:416:82 | ... ? ... : ... | 0.3533464 | 0.3533464 | 0.32661893 |
| test.c:416:26:416:69 | ... ? ... : ... | 0.3533464 | 0.3533464 | 0.22247853 |
| test.c:416:30:416:56 | ... ? ... : ... | 0.3533464 | 0.34183348 | 0.3533464 |
| test.c:417:14:417:108 | ... ? ... : ... | 0.79310745 | 0.79310745 | 0.67981451 |
| test.c:417:18:417:95 | ... ? ... : ... | 0.79310745 | 0.77429603 | 0.79310745 |
| test.c:417:22:417:82 | ... ? ... : ... | 0.77429603 | 0.77429603 | 0.05121256 |
| test.c:417:26:417:69 | ... ? ... : ... | 0.77429603 | 0.77429603 | 0.31235514 |
| test.c:417:30:417:56 | ... ? ... : ... | 0.77429603 | 0.77429603 | 0.31478084 |
| test.c:418:14:418:108 | ... ? ... : ... | 0.98997262 | 0.98997262 | 0.83866835 |
| test.c:418:18:418:95 | ... ? ... : ... | 0.98997262 | 0.98997262 | 0.36976948 |
| test.c:418:22:418:82 | ... ? ... : ... | 0.98997262 | 0.98997262 | 0.59952732 |
| test.c:418:26:418:69 | ... ? ... : ... | 0.98997262 | 0.80599202 | 0.98997262 |
| test.c:418:30:418:56 | ... ? ... : ... | 0.80599202 | 0.44729556 | 0.80599202 |
| test.c:419:14:419:108 | ... ? ... : ... | 0.90389911 | 0.90389911 | 0.68734874 |
| test.c:419:18:419:95 | ... ? ... : ... | 0.90389911 | 0.90389911 | 0.72485966 |
| test.c:419:22:419:82 | ... ? ... : ... | 0.90389911 | 0.90389911 | 0.21778426 |
| test.c:419:26:419:69 | ... ? ... : ... | 0.90389911 | 0.90389911 | 0.10597712 |
| test.c:419:30:419:56 | ... ? ... : ... | 0.90389911 | 0.49311828 | 0.90389911 |
| test.c:420:14:420:108 | ... ? ... : ... | 0.76164052 | 0.76164052 | 0.58440865 |
| test.c:420:18:420:95 | ... ? ... : ... | 0.76164052 | 0.76164052 | 0.34808892 |
| test.c:420:22:420:82 | ... ? ... : ... | 0.76164052 | 0.47452848 | 0.76164052 |
| test.c:420:26:420:69 | ... ? ... : ... | 0.47452848 | 0.47452848 | 0.11884576 |
| test.c:420:30:420:56 | ... ? ... : ... | 0.47452848 | 0.47452848 | 0.1078665 |
| test.c:421:14:421:108 | ... ? ... : ... | 0.95823075 | 0.95823075 | 0.36232384 |
| test.c:421:18:421:95 | ... ? ... : ... | 0.95823075 | 0.95823075 | 0.85235179 |
| test.c:421:22:421:82 | ... ? ... : ... | 0.95823075 | 0.95823075 | 0.12516558 |
| test.c:421:26:421:69 | ... ? ... : ... | 0.95823075 | 0.82905046 | 0.95823075 |
| test.c:421:30:421:56 | ... ? ... : ... | 0.82905046 | 0.02524326 | 0.82905046 |
| test.c:422:14:422:108 | ... ? ... : ... | 0.84331272 | 0.48640909 | 0.84331272 |
| test.c:422:18:422:95 | ... ? ... : ... | 0.48640909 | 0.45041108 | 0.48640909 |
| test.c:422:22:422:82 | ... ? ... : ... | 0.45041108 | 0.38708626 | 0.45041108 |
| test.c:422:26:422:69 | ... ? ... : ... | 0.38708626 | 0.38708626 | 0.14963485 |
| test.c:422:30:422:56 | ... ? ... : ... | 0.38708626 | 0.38708626 | 0.32876044 |
| test.c:423:14:423:108 | ... ? ... : ... | 0.77086833 | 0.77086833 | 0.05328182 |
| test.c:423:18:423:95 | ... ? ... : ... | 0.77086833 | 0.77086833 | 0.37428143 |
| test.c:423:22:423:82 | ... ? ... : ... | 0.77086833 | 0.77086833 | 0.14800508 |
| test.c:423:26:423:69 | ... ? ... : ... | 0.77086833 | 0.77086833 | 0.26428481 |
| test.c:423:30:423:56 | ... ? ... : ... | 0.77086833 | 0.15755063 | 0.77086833 |
| test.c:424:14:424:108 | ... ? ... : ... | 0.76826628 | 0.76826628 | 0.69072144 |
| test.c:424:18:424:95 | ... ? ... : ... | 0.76826628 | 0.76826628 | 0.39468857 |
| test.c:424:22:424:82 | ... ? ... : ... | 0.76826628 | 0.76826628 | 0.55679274 |
| test.c:424:26:424:69 | ... ? ... : ... | 0.76826628 | 0.76826628 | 0.27643238 |
| test.c:424:30:424:56 | ... ? ... : ... | 0.76826628 | 0.41736536 | 0.76826628 |
| test.c:425:14:425:108 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.81372798 |
| test.c:425:18:425:95 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.88745559 |
| test.c:425:22:425:82 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.2051911 |
| test.c:425:26:425:69 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.76242583 |
| test.c:425:30:425:56 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.29904824 |
| test.c:426:14:426:108 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.42762647 |
| test.c:426:18:426:95 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.52031241 |
| test.c:426:22:426:82 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.13204114 |
| test.c:426:26:426:69 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.44996679 |
| test.c:426:30:426:56 | ... ? ... : ... | 0.53843358 | 0.42186276 | 0.53843358 |
| test.c:468:4:642:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:468:5:470:49 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:471:6:553:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:472:8:490:41 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:475:10:479:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:475:31:475:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:477:13:479:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:484:12:489:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:485:12:485:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:487:15:489:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:491:6:510:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:494:8:498:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:494:29:494:77 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:496:11:498:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:499:6:499:54 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:503:10:507:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:503:31:503:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:505:13:507:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:508:9:510:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:512:10:531:43 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:515:12:520:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:516:12:516:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:518:15:520:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:525:14:530:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:526:14:526:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:528:17:530:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:532:9:553:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:535:14:540:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:536:14:536:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:538:17:540:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:541:12:541:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:545:12:550:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:546:12:546:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:548:15:550:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:551:11:553:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:554:9:556:51 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:557:9:642:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:558:14:577:47 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:561:16:566:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:562:16:562:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:564:19:566:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:571:18:576:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:572:18:572:66 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:574:21:576:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:578:12:599:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:581:14:586:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:582:14:582:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:584:17:586:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:587:12:587:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:591:16:596:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:592:16:592:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:594:19:596:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:597:15:599:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:601:12:620:45 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:604:14:609:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:605:14:605:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:607:17:609:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:614:16:619:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:615:16:615:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:617:19:619:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:621:11:642:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:624:16:629:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:625:16:625:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:627:19:629:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:630:14:630:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:634:14:639:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:635:14:635:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:637:17:639:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:640:13:642:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 |
| test.c:668:20:668:36 | ... ? ... : ... | 100.0 | 99.0 | 100.0 |
| test.c:880:5:880:14 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 |
| test.c:881:5:881:14 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 |
| test.cpp:121:3:121:12 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 |
| test.cpp:122:3:122:12 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 |

View File

@@ -333,6 +333,27 @@ int test_mult05(int a, int b) {
return total;
}
// Tests for shift operators.
unsigned long long test_shift(unsigned long long a) {
// `odd` is the largest odd integer that can be precisely represented by a double.
unsigned long long odd = 9007199254740992 - 1; // 2^53 - 1
// Shifting right by by 1 give an upper bound that is half of `odd` rounded down.
unsigned long long shifted = odd >> 1;
return shifted;
}
// Tests for bounds on integers derived from inequalities.
unsigned int test_inequality_integer(unsigned int e) {
unsigned int bi1 = (2 * e + 1) > 0 ? e : 2;
signed int bi2 = (2 * e + 1) >= 0 ? e : 2;
unsigned int bi3 = (3 * e + 2) > 0 ? e : 2;
unsigned int bi4 = (2 * e + 1) > 0 ? e : 2;
unsigned int bi5 = (2 * e + 1) > 16 ? e : 2;
return bi1 + bi2 + bi3 + bi4 + bi5;
}
int test16(int x) {
int d, i = 0;
if (x < 0) {

View File

@@ -1,7 +1,7 @@
| 0 | file://:0:0:0:0 | (global namespace) | file://:0:0:0:0 | __va_list_tag |
| 0 | file://:0:0:0:0 | (global namespace) | parents.cpp:2:11:2:13 | foo |
| 0 | file://:0:0:0:0 | (global namespace) | parents.cpp:18:3:18:3 | var |
| 0 | file://:0:0:0:0 | (global namespace) | parents.cpp:18:7:18:7 | var |
| 0 | file://:0:0:0:0 | (global namespace) | parents.cpp:18:3:18:5 | var |
| 0 | file://:0:0:0:0 | (global namespace) | parents.cpp:20:5:20:5 | g |
| 1 | file://:0:0:0:0 | __va_list_tag | file://:0:0:0:0 | fp_offset |
| 1 | file://:0:0:0:0 | __va_list_tag | file://:0:0:0:0 | gp_offset |
@@ -22,6 +22,6 @@
| 1 | parents.cpp:6:11:10:7 | { ... } | parents.cpp:7:9:9:9 | for(...;...;...) ... |
| 1 | parents.cpp:6:11:10:7 | { ... } | parents.cpp:7:33:9:9 | { ... } |
| 1 | parents.cpp:7:33:9:9 | { ... } | parents.cpp:8:15:8:15 | k |
| 1 | parents.cpp:18:7:18:7 | var | parents.cpp:17:19:17:19 | T |
| 1 | parents.cpp:18:3:18:5 | var | parents.cpp:17:19:17:19 | T |
| 1 | parents.cpp:20:5:20:5 | g | parents.cpp:20:9:24:1 | { ... } |
| 1 | parents.cpp:20:9:24:1 | { ... } | parents.cpp:21:16:21:16 | l |

View File

@@ -121,8 +121,8 @@ isFromUninstantiatedTemplate
| isfromtemplateinstantiation.cpp:99:1:99:1 | return ... | isfromtemplateinstantiation.cpp:77:26:77:45 | AnotherTemplateClass<T> |
| isfromtemplateinstantiation.cpp:99:1:99:1 | return ... | isfromtemplateinstantiation.cpp:97:25:97:60 | myMethod2 |
| isfromtemplateinstantiation.cpp:99:1:99:1 | return ... | isfromtemplateinstantiation.cpp:97:52:97:52 | myMethod2 |
| isfromtemplateinstantiation.cpp:110:15:110:15 | definition of var_template | isfromtemplateinstantiation.cpp:110:15:110:15 | var_template |
| isfromtemplateinstantiation.cpp:110:15:110:15 | var_template | isfromtemplateinstantiation.cpp:110:15:110:15 | var_template |
| isfromtemplateinstantiation.cpp:110:3:110:14 | definition of var_template | isfromtemplateinstantiation.cpp:110:3:110:14 | var_template |
| isfromtemplateinstantiation.cpp:110:3:110:14 | var_template | isfromtemplateinstantiation.cpp:110:3:110:14 | var_template |
| isfromtemplateinstantiation.cpp:128:7:128:30 | AnotherTemplateClass<T *> | isfromtemplateinstantiation.cpp:128:7:128:30 | AnotherTemplateClass<T *> |
| isfromtemplateinstantiation.cpp:128:7:128:30 | definition of AnotherTemplateClass<T *> | isfromtemplateinstantiation.cpp:128:7:128:30 | AnotherTemplateClass<T *> |
| isfromtemplateinstantiation.cpp:129:6:129:6 | definition of f | isfromtemplateinstantiation.cpp:128:7:128:30 | AnotherTemplateClass<T *> |

View File

@@ -9,19 +9,19 @@
| variables.cpp:2:13:2:13 | pi | variables.cpp:25:12:25:16 | T | |
| variables.cpp:2:13:2:13 | pi | variables.cpp:25:12:25:16, variables.cpp:37:16:37:24 | float | |
| variables.cpp:2:13:2:13 | pi | variables.cpp:25:12:25:16, variables.cpp:38:16:38:22 | int | |
| variables.cpp:2:16:2:16 | pi | | T | TemplateVariable |
| variables.cpp:2:13:2:14 | pi | | T | TemplateVariable |
| variables.cpp:5:23:5:37 | pi | | const char * | |
| variables.cpp:8:13:8:13 | multi_arg | variables.cpp:33:19:33:33 | S, T | |
| variables.cpp:8:13:8:13 | multi_arg | variables.cpp:33:19:33:33 | float, char | |
| variables.cpp:8:13:8:13 | multi_arg | variables.cpp:33:19:33:33 | short, long | |
| variables.cpp:8:13:8:13 | multi_arg | variables.cpp:40:23:40:60 | unsigned int, unsigned char | |
| variables.cpp:8:13:8:13 | multi_arg | variables.cpp:41:23:41:42 | int, char | |
| variables.cpp:8:23:8:23 | multi_arg | | S, T | TemplateVariable |
| variables.cpp:8:13:8:21 | multi_arg | | S, T | TemplateVariable |
| variables.cpp:11:3:11:3 | mutable_val | variables.cpp:26:3:26:16 | T | |
| variables.cpp:11:3:11:3 | mutable_val | variables.cpp:26:3:26:16 | float | |
| variables.cpp:11:3:11:3 | mutable_val | variables.cpp:26:3:26:16, variables.cpp:43:3:43:18 | int | |
| variables.cpp:11:3:11:3 | mutable_val | variables.cpp:44:3:44:19 | long | |
| variables.cpp:11:15:11:15 | mutable_val | | T | TemplateVariable |
| variables.cpp:11:3:11:13 | mutable_val | | T | TemplateVariable |
| variables.cpp:19:3:19:10 | bar | | T | TemplateVariable |
| variables.cpp:19:8:19:8 | bar | variables.cpp:27:3:27:13 | T | |
| variables.cpp:19:8:19:8 | bar | variables.cpp:27:3:27:13 | float | |

View File

@@ -1,4 +1,4 @@
| vector_types2.cpp:10:15:10:42 | __builtin_shuffle |
| vector_types2.cpp:11:15:11:45 | __builtin_shuffle |
| vector_types.cpp:31:13:31:49 | __builtin_shufflevector |
| vector_types.cpp:58:10:58:52 | __builtin_convertvector |
| vector_types.cpp:63:10:63:52 | __builtin_convertvector |

View File

@@ -34,4 +34,7 @@
| vector_types.cpp:47:23:47:25 | dst | dst | file://:0:0:0:0 | v16i * | 8 |
| vector_types.cpp:47:34:47:36 | src | src | file://:0:0:0:0 | v16i * | 8 |
| vector_types.cpp:47:43:47:43 | n | n | file://:0:0:0:0 | int | 4 |
| vector_types.cpp:57:43:57:44 | vf | vf | vector_types.cpp:55:16:55:27 | vector4float | 16 |
| vector_types.cpp:54:20:54:22 | dst | dst | file://:0:0:0:0 | v16i * | 8 |
| vector_types.cpp:54:31:54:34 | src1 | src1 | file://:0:0:0:0 | v16i * | 8 |
| vector_types.cpp:54:43:54:46 | src2 | src2 | file://:0:0:0:0 | v16i * | 8 |
| vector_types.cpp:62:43:62:44 | vf | vf | vector_types.cpp:60:16:60:27 | vector4float | 16 |

View File

@@ -2,3 +2,5 @@
| vector_types.cpp:21:10:21:18 | ... < ... | < | file://:0:0:0:0 | __attribute((vector_size(16))) int |
| vector_types.cpp:51:10:51:18 | ... << ... | << | file://:0:0:0:0 | __attribute((vector_size(16))) int |
| vector_types.cpp:51:18:51:18 | (vector fill) ... | (vector fill) | file://:0:0:0:0 | __attribute((vector_size(16))) int |
| vector_types.cpp:55:10:55:23 | ... && ... | && | file://:0:0:0:0 | __attribute((vector_size(16))) int |
| vector_types.cpp:56:10:56:23 | ... \|\| ... | \|\| | file://:0:0:0:0 | __attribute((vector_size(16))) int |

View File

@@ -51,6 +51,11 @@ void shift_left(v16i *dst, v16i *src, int n) {
*dst = *src << n;
}
void logical(v16i *dst, v16i *src1, v16i *src2) {
*dst = *src1 && *src2;
*dst = *src1 || *src2;
}
typedef double vector4double __attribute__((__vector_size__(32)));
typedef float vector4float __attribute__((__vector_size__(16)));

View File

@@ -2,6 +2,6 @@
| main.cpp:4:5:4:6 | ys | Poor global variable name 'ys'. Prefer longer, descriptive names for globals (eg. kMyGlobalConstant, not foo). |
| main.cpp:9:5:9:6 | v1 | Poor global variable name 'v1'. Prefer longer, descriptive names for globals (eg. kMyGlobalConstant, not foo). |
| main.cpp:10:5:10:6 | v2 | Poor global variable name 'v2'. Prefer longer, descriptive names for globals (eg. kMyGlobalConstant, not foo). |
| main.cpp:12:5:12:5 | v3 | Poor global variable name 'v3'. Prefer longer, descriptive names for globals (eg. kMyGlobalConstant, not foo). |
| main.cpp:14:5:14:5 | v4 | Poor global variable name 'v4'. Prefer longer, descriptive names for globals (eg. kMyGlobalConstant, not foo). |
| main.cpp:16:5:16:5 | v5 | Poor global variable name 'v5'. Prefer longer, descriptive names for globals (eg. kMyGlobalConstant, not foo). |
| main.cpp:12:3:12:4 | v3 | Poor global variable name 'v3'. Prefer longer, descriptive names for globals (eg. kMyGlobalConstant, not foo). |
| main.cpp:14:3:14:4 | v4 | Poor global variable name 'v4'. Prefer longer, descriptive names for globals (eg. kMyGlobalConstant, not foo). |
| main.cpp:16:3:16:4 | v5 | Poor global variable name 'v5'. Prefer longer, descriptive names for globals (eg. kMyGlobalConstant, not foo). |

View File

@@ -2,7 +2,6 @@
| code2.cpp:7:6:7:7 | v3 | Variable v3 is not used. |
| code2.cpp:11:16:11:17 | v7 | Variable v7 is not used. |
| code2.cpp:26:16:26:17 | v1 | Variable v1 is not used. |
| code2.cpp:27:16:27:17 | v2 | Variable v2 is not used. |
| code2.cpp:42:11:42:16 | myVar1 | Variable myVar1 is not used. |
| code2.cpp:64:7:64:8 | v3 | Variable v3 is not used. |
| code2.cpp:108:11:108:12 | v2 | Variable v2 is not used. |

View File

@@ -24,7 +24,7 @@ void myFunction()
void test_template_parameter()
{
constexpr int v1 = 0; // BAD: unused
constexpr int v2 = 0; // GOOD: used as a template parameter below [FALSE POSITIVE]
constexpr int v2 = 0; // GOOD: used as a template parameter below
myFunction<v2>();
}

View File

@@ -6,6 +6,7 @@ edges
| test.cpp:12:5:12:5 | b | test.cpp:12:5:12:5 | (reference dereference) |
| test.cpp:15:3:15:4 | ~B | test.cpp:16:5:16:5 | this |
| test.cpp:16:5:16:5 | this | file://:0:0:0:0 | (A *)... |
| test.cpp:21:3:21:3 | C | test.cpp:21:3:21:3 | C |
| test.cpp:21:3:21:3 | C | test.cpp:21:13:21:13 | call to B |
| test.cpp:21:3:21:3 | C | test.cpp:22:12:22:15 | this |
| test.cpp:21:3:21:3 | C | test.cpp:25:7:25:10 | this |
@@ -35,6 +36,7 @@ nodes
| test.cpp:15:3:15:4 | ~B | semmle.label | ~B |
| test.cpp:16:5:16:5 | this | semmle.label | this |
| test.cpp:21:3:21:3 | C | semmle.label | C |
| test.cpp:21:3:21:3 | C | semmle.label | C |
| test.cpp:21:13:21:13 | call to B | semmle.label | call to B |
| test.cpp:22:12:22:15 | (B *)... | semmle.label | (B *)... |
| test.cpp:22:12:22:15 | this | semmle.label | this |

View File

@@ -38,8 +38,8 @@ int extreme_values(void)
if (x >> 1 >= 0x7FFFFFFFFFFFFFFF) {} // always true [NOT DETECTED]
if (x >> 1 >= 0xFFFFFFFFFFFFFFF) {} // always true [NOT DETECTED]
if (y >> 1 >= 0xFFFFFFFFFFFF) {} // always false [INCORRECT MESSAGE]
if (y >> 1 >= 0x800000000000) {} // always false [INCORRECT MESSAGE]
if (y >> 1 >= 0x7FFFFFFFFFFF) {} // always true [INCORRECT MESSAGE]
if (y >> 1 >= 0xFFFFFFFFFFF) {} // always true [INCORRECT MESSAGE]
if (y >> 1 >= 0xFFFFFFFFFFFF) {} // always false
if (y >> 1 >= 0x800000000000) {} // always false
if (y >> 1 >= 0x7FFFFFFFFFFF) {} // always true
if (y >> 1 >= 0xFFFFFFFFFFF) {} // always true
}

View File

@@ -45,9 +45,9 @@
| PointlessComparison.c:391:12:391:20 | ... < ... | Comparison is always false because ... * ... >= 6. |
| PointlessComparison.c:414:7:414:16 | ... == ... | Comparison is always false because ... * ... >= 18446744073709551616. |
| PointlessComparison.cpp:36:6:36:33 | ... >= ... | Comparison is always false because ... >> ... <= 9223372036854775808. |
| PointlessComparison.cpp:41:6:41:29 | ... >= ... | Comparison is always false because ... >> ... <= 140737488355327.5. |
| PointlessComparison.cpp:42:6:42:29 | ... >= ... | Comparison is always false because ... >> ... <= 140737488355327.5. |
| PointlessComparison.cpp:43:6:43:29 | ... >= ... | Comparison is always true because ... >> ... >= 140737488355327.5. |
| PointlessComparison.cpp:44:6:44:28 | ... >= ... | Comparison is always true because ... >> ... >= 140737488355327.5. |
| PointlessComparison.cpp:41:6:41:29 | ... >= ... | Comparison is always false because ... >> ... <= 140737488355327. |
| PointlessComparison.cpp:42:6:42:29 | ... >= ... | Comparison is always false because ... >> ... <= 140737488355327. |
| PointlessComparison.cpp:43:6:43:29 | ... >= ... | Comparison is always true because ... >> ... >= 140737488355327. |
| PointlessComparison.cpp:44:6:44:28 | ... >= ... | Comparison is always true because ... >> ... >= 140737488355327. |
| RegressionTests.cpp:57:7:57:22 | ... <= ... | Comparison is always true because * ... <= 4294967295. |
| Templates.cpp:9:10:9:24 | ... <= ... | Comparison is always true because local <= 32767. |

View File

@@ -124,3 +124,43 @@ void testTempObject() {
f(&x);
if (x > 0) {} // GOOD [NO LONGER REPORTED]
}
void staticAssert() {
static const int a = 42;
static const int b = 43;
static_assert(a < b + 0, ""); // GOOD
}
constexpr int global_1 = 42;
constexpr int global_2 = global_1 < 2 * sizeof(int*) ? 43 : 2 * sizeof(int*); // GOOD
static const int global_3 = 42;
static const int global_4 = global_3 < 2 * sizeof(int*) ? 43 : 2 * sizeof(int*); // GOOD
template<unsigned int p, unsigned int n, bool = ((2u * n) < p)>
struct templateCompare : public templateCompare<p, 2u * n> // GOOD
{ };
template< unsigned int p, unsigned int n>
struct templateCompare< p, n, false>
{
static const unsigned int v = n;
};
unsigned int templateCompare_x = templateCompare<42, 42>::v;
template<int n>
struct someType {
typedef someType<((n - 4) < 0 ? 0 : n - 4)> b; // GOOD
};
someType<42>::b someType_x;
struct A_Struct {
int x;
int y;
};
enum E {
E_e = sizeof(A_Struct) * 8 > 50 // GOOD
};