Compare commits

..

20 Commits

Author SHA1 Message Date
Tom Hvitved
19119ea0d4 C#: Add some lambda flow tests for demo 2024-11-15 10:57:23 +01:00
Tom Hvitved
134707605b C#: Update expected test output 2024-11-15 09:35:25 +01:00
Tom Hvitved
1f2cda933d C#: Implement isVariableCaptureContentSet 2024-11-14 20:31:52 +01:00
Tom Hvitved
5c9e79e947 Data flow: Workaround for lambda + capture flow 2024-11-14 20:30:54 +01:00
Tom Hvitved
9d6ece1039 Data flow: Restrict lambda reads at actual lambda calls 2024-11-14 20:24:27 +01:00
Simon Friis Vindum
6ef4aef600 Data flow: Add comments and use more consistent camel case 2024-11-14 16:25:53 +01:00
Simon Friis Vindum
9891b412ca Java: Add toString for new ContentApprox elements 2024-11-14 15:49:49 +01:00
Simon Friis Vindum
c71898c265 Java: Consistent naming of TContent cases 2024-11-14 15:36:23 +01:00
Tom Hvitved
3ae793dd31 C#: Update lambda flow implementation 2024-11-14 14:46:00 +01:00
Tom Hvitved
906a4789f7 Data flow: Add LambdaArgs node 2024-11-14 14:25:36 +01:00
Anders Schack-Mulligen
7265884768 FlowSummaryImpl: Might actually be a bugfix for main?! 2024-11-14 14:22:33 +01:00
Anders Schack-Mulligen
333be603d3 Java: Add approx contents. 2024-11-14 14:16:39 +01:00
Tom Hvitved
9907e0d0bf C#: Implement new lambda flow interface 2024-11-13 21:04:12 +01:00
Tom Hvitved
6e69b636b9 Data flow: More lambda flow changes 2024-11-13 20:59:04 +01:00
Kasper Svendsen
8154500aa5 Data flow: Extend NodeEx.toString to new lambda nodes 2024-11-13 16:04:52 +01:00
Anders Schack-Mulligen
a43b0234b9 do the type thing 2024-11-13 14:44:23 +01:00
Anders Schack-Mulligen
925fd92485 fixup api diff 2024-11-13 14:27:32 +01:00
Kasper Svendsen
7228766a7c Data flow: Implement new lambda flow interface for Java 2024-11-13 14:26:07 +01:00
Anders Schack-Mulligen
15c8968dd4 gogogo shared code. 2024-11-13 14:25:05 +01:00
Tom Hvitved
c63283f762 Data flow: Add new lambda flow interface 2024-11-13 11:00:10 +01:00
1186 changed files with 7783 additions and 51760 deletions

View File

@@ -23,5 +23,6 @@ common --registry=file:///%workspace%/misc/bazel/registry
common --registry=https://bcr.bazel.build
common --@rules_dotnet//dotnet/settings:strict_deps=false
common --experimental_isolated_extension_usages
try-import %workspace%/local.bazelrc

View File

@@ -8,3 +8,4 @@ common --registry=https://bcr.bazel.build
# its implementation packages without providing any code itself.
# We either can depend on internal implementation details, or turn of strict deps.
common --@rules_dotnet//dotnet/settings:strict_deps=false
common --experimental_isolated_extension_usages

View File

@@ -30,7 +30,7 @@ jobs:
- name: Setup dotnet
uses: actions/setup-dotnet@v4
with:
dotnet-version: 9.0.100
dotnet-version: 8.0.101
- name: Checkout repository
uses: actions/checkout@v4

View File

@@ -48,7 +48,7 @@ jobs:
- name: "Build Swift extractor using Bazel"
run: |
bazel clean --expunge
bazel run //swift:install --nouse_action_cache --noremote_accept_cached --noremote_upload_local_results --spawn_strategy=local
bazel run //swift:create-extractor-pack --nouse_action_cache --noremote_accept_cached --noremote_upload_local_results --spawn_strategy=local
bazel shutdown
- name: Perform CodeQL Analysis

View File

@@ -39,14 +39,14 @@ jobs:
- name: Setup dotnet
uses: actions/setup-dotnet@v4
with:
dotnet-version: 9.0.100
dotnet-version: 8.0.101
- name: Extractor unit tests
run: |
dotnet tool restore
dotnet test -p:RuntimeFrameworkVersion=9.0.0 extractor/Semmle.Util.Tests
dotnet test -p:RuntimeFrameworkVersion=9.0.0 extractor/Semmle.Extraction.Tests
dotnet test -p:RuntimeFrameworkVersion=9.0.0 autobuilder/Semmle.Autobuild.CSharp.Tests
dotnet test -p:RuntimeFrameworkVersion=9.0.0 autobuilder/Semmle.Autobuild.Cpp.Tests
dotnet test -p:RuntimeFrameworkVersion=8.0.1 extractor/Semmle.Util.Tests
dotnet test -p:RuntimeFrameworkVersion=8.0.1 extractor/Semmle.Extraction.Tests
dotnet test -p:RuntimeFrameworkVersion=8.0.1 autobuilder/Semmle.Autobuild.CSharp.Tests
dotnet test -p:RuntimeFrameworkVersion=8.0.1 autobuilder/Semmle.Autobuild.Cpp.Tests
shell: bash
stubgentest:
runs-on: ubuntu-latest

View File

@@ -1,5 +1 @@
exports_files([
"LICENSE",
"Cargo.lock",
"Cargo.toml",
])
exports_files(["LICENSE"])

2
Cargo.lock generated
View File

@@ -389,12 +389,10 @@ dependencies = [
"log",
"num-traits",
"ra_ap_base_db",
"ra_ap_cfg",
"ra_ap_hir",
"ra_ap_hir_def",
"ra_ap_hir_expand",
"ra_ap_ide_db",
"ra_ap_intern",
"ra_ap_load-cargo",
"ra_ap_parser",
"ra_ap_paths",

View File

@@ -25,53 +25,50 @@ bazel_dep(name = "nlohmann_json", version = "3.11.3", repo_name = "json")
bazel_dep(name = "fmt", version = "10.0.0")
bazel_dep(name = "rules_kotlin", version = "2.0.0-codeql.1")
bazel_dep(name = "gazelle", version = "0.38.0")
bazel_dep(name = "rules_dotnet", version = "0.17.4")
bazel_dep(name = "rules_dotnet", version = "0.16.1")
bazel_dep(name = "googletest", version = "1.14.0.bcr.1")
bazel_dep(name = "rules_rust", version = "0.52.2")
bazel_dep(name = "buildifier_prebuilt", version = "6.4.0", dev_dependency = True)
# Keep edition and version approximately in sync with internal repo.
# the versions there are canonical, the versions here are used for CI in github/codeql, as well as for the vendoring of dependencies.
RUST_EDITION = "2021"
RUST_VERSION = "1.81.0"
rust = use_extension("@rules_rust//rust:extensions.bzl", "rust")
rust.toolchain(
edition = RUST_EDITION,
# We need those extra target triples so that we can build universal binaries on macos
extra_target_triples = [
"x86_64-apple-darwin",
"aarch64-apple-darwin",
# crate_py but shortened due to Windows file path considerations
cp = use_extension(
"@rules_rust//crate_universe:extension.bzl",
"crate",
isolate = True,
)
cp.from_cargo(
name = "py_deps",
cargo_lockfile = "//python/extractor/tsg-python:Cargo.lock",
manifests = [
"//python/extractor/tsg-python:Cargo.toml",
"//python/extractor/tsg-python/tsp:Cargo.toml",
],
versions = [RUST_VERSION],
)
use_repo(rust, "rust_toolchains")
use_repo(cp, "py_deps")
register_toolchains("@rust_toolchains//:all")
rust_host_tools = use_extension("@rules_rust//rust:extensions.bzl", "rust_host_tools")
# Don't download a second toolchain as host toolchain, make sure this is the same version as above
# The host toolchain is used for vendoring dependencies.
rust_host_tools.host_tools(
edition = RUST_EDITION,
version = RUST_VERSION,
# deps for ruby+rust, but shortened due to windows file paths
r = use_extension(
"@rules_rust//crate_universe:extension.bzl",
"crate",
isolate = True,
)
# deps for python extractor
# keep in sync by running `misc/bazel/3rdparty/update_cargo_deps.sh`
py_deps = use_extension("//misc/bazel/3rdparty:py_deps_extension.bzl", "p")
use_repo(py_deps, "vendor__anyhow-1.0.44", "vendor__cc-1.0.70", "vendor__clap-2.33.3", "vendor__regex-1.5.5", "vendor__smallvec-1.6.1", "vendor__string-interner-0.12.2", "vendor__thiserror-1.0.29", "vendor__tree-sitter-0.20.4", "vendor__tree-sitter-graph-0.7.0")
# deps for ruby+rust
# keep in sync by running `misc/bazel/3rdparty/update_cargo_deps.sh`
tree_sitter_extractors_deps = use_extension("//misc/bazel/3rdparty:tree_sitter_extractors_extension.bzl", "r")
use_repo(tree_sitter_extractors_deps, "vendor__anyhow-1.0.93", "vendor__argfile-0.2.1", "vendor__chrono-0.4.38", "vendor__clap-4.5.20", "vendor__encoding-0.2.33", "vendor__figment-0.10.19", "vendor__flate2-1.0.34", "vendor__glob-0.3.1", "vendor__globset-0.4.15", "vendor__itertools-0.10.5", "vendor__itertools-0.13.0", "vendor__lazy_static-1.5.0", "vendor__log-0.4.22", "vendor__num-traits-0.2.19", "vendor__num_cpus-1.16.0", "vendor__proc-macro2-1.0.89", "vendor__quote-1.0.37", "vendor__ra_ap_base_db-0.0.232", "vendor__ra_ap_cfg-0.0.232", "vendor__ra_ap_hir-0.0.232", "vendor__ra_ap_hir_def-0.0.232", "vendor__ra_ap_hir_expand-0.0.232", "vendor__ra_ap_ide_db-0.0.232", "vendor__ra_ap_intern-0.0.232", "vendor__ra_ap_load-cargo-0.0.232", "vendor__ra_ap_parser-0.0.232", "vendor__ra_ap_paths-0.0.232", "vendor__ra_ap_project_model-0.0.232", "vendor__ra_ap_span-0.0.232", "vendor__ra_ap_syntax-0.0.232", "vendor__ra_ap_vfs-0.0.232", "vendor__rand-0.8.5", "vendor__rayon-1.10.0", "vendor__regex-1.11.1", "vendor__serde-1.0.214", "vendor__serde_json-1.0.132", "vendor__serde_with-3.11.0", "vendor__stderrlog-0.6.0", "vendor__syn-2.0.87", "vendor__tracing-0.1.40", "vendor__tracing-subscriber-0.3.18", "vendor__tree-sitter-0.24.4", "vendor__tree-sitter-embedded-template-0.23.2", "vendor__tree-sitter-json-0.24.8", "vendor__tree-sitter-ql-0.23.1", "vendor__tree-sitter-ruby-0.23.1", "vendor__triomphe-0.1.14", "vendor__ungrammar-1.16.1")
r.from_cargo(
name = "r",
cargo_lockfile = "//:Cargo.lock",
manifests = [
"//:Cargo.toml",
"//ruby/extractor:Cargo.toml",
"//rust/extractor:Cargo.toml",
"//rust/extractor/macros:Cargo.toml",
"//rust/ast-generator:Cargo.toml",
"//shared/tree-sitter-extractor:Cargo.toml",
],
)
use_repo(r, tree_sitter_extractors_deps = "r")
dotnet = use_extension("@rules_dotnet//dotnet:extensions.bzl", "dotnet")
dotnet.toolchain(dotnet_version = "9.0.100")
dotnet.toolchain(dotnet_version = "8.0.101")
use_repo(dotnet, "dotnet_toolchains")
register_toolchains("@dotnet_toolchains//:all")

View File

@@ -2,8 +2,19 @@ load("//misc/bazel:pkg.bzl", "codeql_pack")
package(default_visibility = ["//visibility:public"])
codeql_pack(
name = "actions",
srcs = ["//actions/extractor"],
experimental = True,
)
[
codeql_pack(
name = "-".join(parts),
srcs = [
"//actions/extractor",
],
pack_prefix = "/".join(parts),
)
for parts in (
[
"experimental",
"actions",
],
["actions"],
)
]

View File

@@ -1,7 +1,3 @@
## 2.1.1
No user-facing changes.
## 2.1.0
### New Features

View File

@@ -1,3 +0,0 @@
## 2.1.1
No user-facing changes.

View File

@@ -1,2 +1,2 @@
---
lastReleaseVersion: 2.1.1
lastReleaseVersion: 2.1.0

View File

@@ -1,5 +1,5 @@
name: codeql/cpp-all
version: 2.1.1
version: 2.1.1-dev
groups: cpp
dbscheme: semmlecode.cpp.dbscheme
extractor: cpp

View File

@@ -546,26 +546,4 @@ module InstructionConsistency {
"' has no associated variable, in function '$@'." and
irFunc = getInstructionIRFunction(instr, irFuncText)
}
query predicate nonBooleanOperand(
Instruction instr, string message, OptionalIRFunction irFunc, string irFuncText
) {
exists(Instruction unary |
unary = instr.(LogicalNotInstruction).getUnary() and
not unary.getResultIRType() instanceof IRBooleanType and
irFunc = getInstructionIRFunction(instr, irFuncText) and
message =
"Logical Not instruction " + instr.toString() +
" with non-Boolean operand, in function '$@'."
)
or
exists(Instruction cond |
cond = instr.(ConditionalBranchInstruction).getCondition() and
not cond.getResultIRType() instanceof IRBooleanType and
irFunc = getInstructionIRFunction(instr, irFuncText) and
message =
"Conditional branch instruction " + instr.toString() +
" with non-Boolean condition, in function '$@'."
)
}
}

View File

@@ -546,26 +546,4 @@ module InstructionConsistency {
"' has no associated variable, in function '$@'." and
irFunc = getInstructionIRFunction(instr, irFuncText)
}
query predicate nonBooleanOperand(
Instruction instr, string message, OptionalIRFunction irFunc, string irFuncText
) {
exists(Instruction unary |
unary = instr.(LogicalNotInstruction).getUnary() and
not unary.getResultIRType() instanceof IRBooleanType and
irFunc = getInstructionIRFunction(instr, irFuncText) and
message =
"Logical Not instruction " + instr.toString() +
" with non-Boolean operand, in function '$@'."
)
or
exists(Instruction cond |
cond = instr.(ConditionalBranchInstruction).getCondition() and
not cond.getResultIRType() instanceof IRBooleanType and
irFunc = getInstructionIRFunction(instr, irFuncText) and
message =
"Conditional branch instruction " + instr.toString() +
" with non-Boolean condition, in function '$@'."
)
}
}

View File

@@ -546,26 +546,4 @@ module InstructionConsistency {
"' has no associated variable, in function '$@'." and
irFunc = getInstructionIRFunction(instr, irFuncText)
}
query predicate nonBooleanOperand(
Instruction instr, string message, OptionalIRFunction irFunc, string irFuncText
) {
exists(Instruction unary |
unary = instr.(LogicalNotInstruction).getUnary() and
not unary.getResultIRType() instanceof IRBooleanType and
irFunc = getInstructionIRFunction(instr, irFuncText) and
message =
"Logical Not instruction " + instr.toString() +
" with non-Boolean operand, in function '$@'."
)
or
exists(Instruction cond |
cond = instr.(ConditionalBranchInstruction).getCondition() and
not cond.getResultIRType() instanceof IRBooleanType and
irFunc = getInstructionIRFunction(instr, irFuncText) and
message =
"Conditional branch instruction " + instr.toString() +
" with non-Boolean condition, in function '$@'."
)
}
}

View File

@@ -1,7 +1,3 @@
## 1.2.7
No user-facing changes.
## 1.2.6
### Minor Analysis Improvements

View File

@@ -40,5 +40,4 @@ select count(Instruction i | IRConsistency::missingOperand(i, _, _, _) | i) as m
count(Instruction i | IRConsistency::nonUniqueEnclosingIRFunction(i, _, _, _) | i) as nonUniqueEnclosingIRFunction,
count(FieldAddressInstruction i | IRConsistency::fieldAddressOnNonPointer(i, _, _, _) | i) as fieldAddressOnNonPointer,
count(Instruction i | IRConsistency::thisArgumentIsNonPointer(i, _, _, _) | i) as thisArgumentIsNonPointer,
count(Instruction i | IRConsistency::nonUniqueIRVariable(i, _, _, _) | i) as nonUniqueIRVariable,
count(Instruction i | IRConsistency::nonBooleanOperand(i, _, _, _) | i) as nonBooleanOperand
count(Instruction i | IRConsistency::nonUniqueIRVariable(i, _, _, _) | i) as nonUniqueIRVariable

View File

@@ -1,3 +0,0 @@
## 1.2.7
No user-facing changes.

View File

@@ -1,2 +1,2 @@
---
lastReleaseVersion: 1.2.7
lastReleaseVersion: 1.2.6

View File

@@ -1,5 +1,5 @@
name: codeql/cpp-queries
version: 1.2.7
version: 1.2.7-dev
groups:
- cpp
- queries

View File

@@ -4607,188 +4607,6 @@ ir.c:
# 81| Value = [Literal] 1
# 81| ValueCategory = prvalue
# 82| getStmt(1): [ReturnStmt] return ...
# 84| [TopLevelFunction] void branch_on_integral_in_c(int, int)
# 84| <params>:
# 84| getParameter(0): [Parameter] x1
# 84| Type = [IntType] int
# 84| getParameter(1): [Parameter] x2
# 84| Type = [IntType] int
# 84| getEntryPoint(): [BlockStmt] { ... }
# 85| getStmt(0): [IfStmt] if (...) ...
# 85| getCondition(): [VariableAccess] x1
# 85| Type = [IntType] int
# 85| ValueCategory = prvalue(load)
# 85| getThen(): [BlockStmt] { ... }
# 86| getStmt(1): [IfStmt] if (...) ...
# 86| getCondition(): [NotExpr] ! ...
# 86| Type = [IntType] int
# 86| ValueCategory = prvalue
# 86| getOperand(): [VariableAccess] x1
# 86| Type = [IntType] int
# 86| ValueCategory = prvalue(load)
# 86| getThen(): [BlockStmt] { ... }
# 88| getStmt(2): [DeclStmt] declaration
# 88| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y
# 88| Type = [IntType] int
# 88| getVariable().getInitializer(): [Initializer] initializer for y
# 88| getExpr(): [NotExpr] ! ...
# 88| Type = [IntType] int
# 88| ValueCategory = prvalue
# 88| getOperand(): [VariableAccess] x1
# 88| Type = [IntType] int
# 88| ValueCategory = prvalue(load)
# 89| getStmt(3): [IfStmt] if (...) ...
# 89| getCondition(): [VariableAccess] y
# 89| Type = [IntType] int
# 89| ValueCategory = prvalue(load)
# 89| getThen(): [BlockStmt] { ... }
# 90| getStmt(4): [IfStmt] if (...) ...
# 90| getCondition(): [NotExpr] ! ...
# 90| Type = [IntType] int
# 90| ValueCategory = prvalue
# 90| getOperand(): [VariableAccess] y
# 90| Type = [IntType] int
# 90| ValueCategory = prvalue(load)
# 90| getThen(): [BlockStmt] { ... }
# 92| getStmt(5): [IfStmt] if (...) ...
# 92| getCondition(): [LogicalAndExpr] ... && ...
# 92| Type = [IntType] int
# 92| ValueCategory = prvalue
# 92| getLeftOperand(): [VariableAccess] x1
# 92| Type = [IntType] int
# 92| ValueCategory = prvalue(load)
# 92| getRightOperand(): [VariableAccess] x2
# 92| Type = [IntType] int
# 92| ValueCategory = prvalue(load)
# 92| getThen(): [BlockStmt] { ... }
# 93| getStmt(6): [IfStmt] if (...) ...
# 93| getCondition(): [LogicalAndExpr] ... && ...
# 93| Type = [IntType] int
# 93| ValueCategory = prvalue
# 93| getLeftOperand(): [NotExpr] ! ...
# 93| Type = [IntType] int
# 93| ValueCategory = prvalue
# 93| getOperand(): [VariableAccess] x1
# 93| Type = [IntType] int
# 93| ValueCategory = prvalue(load)
# 93| getRightOperand(): [VariableAccess] x2
# 93| Type = [IntType] int
# 93| ValueCategory = prvalue(load)
# 93| getThen(): [BlockStmt] { ... }
# 94| getStmt(7): [IfStmt] if (...) ...
# 94| getCondition(): [LogicalAndExpr] ... && ...
# 94| Type = [IntType] int
# 94| ValueCategory = prvalue
# 94| getLeftOperand(): [VariableAccess] x1
# 94| Type = [IntType] int
# 94| ValueCategory = prvalue(load)
# 94| getRightOperand(): [NotExpr] ! ...
# 94| Type = [IntType] int
# 94| ValueCategory = prvalue
# 94| getOperand(): [VariableAccess] x2
# 94| Type = [IntType] int
# 94| ValueCategory = prvalue(load)
# 94| getThen(): [BlockStmt] { ... }
# 95| getStmt(8): [IfStmt] if (...) ...
# 95| getCondition(): [LogicalAndExpr] ... && ...
# 95| Type = [IntType] int
# 95| ValueCategory = prvalue
# 95| getLeftOperand(): [NotExpr] ! ...
# 95| Type = [IntType] int
# 95| ValueCategory = prvalue
# 95| getOperand(): [VariableAccess] x1
# 95| Type = [IntType] int
# 95| ValueCategory = prvalue(load)
# 95| getRightOperand(): [NotExpr] ! ...
# 95| Type = [IntType] int
# 95| ValueCategory = prvalue
# 95| getOperand(): [VariableAccess] x2
# 95| Type = [IntType] int
# 95| ValueCategory = prvalue(load)
# 95| getThen(): [BlockStmt] { ... }
# 96| getStmt(9): [IfStmt] if (...) ...
# 96| getCondition(): [LogicalOrExpr] ... || ...
# 96| Type = [IntType] int
# 96| ValueCategory = prvalue
# 96| getLeftOperand(): [VariableAccess] x1
# 96| Type = [IntType] int
# 96| ValueCategory = prvalue(load)
# 96| getRightOperand(): [VariableAccess] x2
# 96| Type = [IntType] int
# 96| ValueCategory = prvalue(load)
# 96| getThen(): [BlockStmt] { ... }
# 97| getStmt(10): [IfStmt] if (...) ...
# 97| getCondition(): [LogicalOrExpr] ... || ...
# 97| Type = [IntType] int
# 97| ValueCategory = prvalue
# 97| getLeftOperand(): [NotExpr] ! ...
# 97| Type = [IntType] int
# 97| ValueCategory = prvalue
# 97| getOperand(): [VariableAccess] x1
# 97| Type = [IntType] int
# 97| ValueCategory = prvalue(load)
# 97| getRightOperand(): [VariableAccess] x2
# 97| Type = [IntType] int
# 97| ValueCategory = prvalue(load)
# 97| getThen(): [BlockStmt] { ... }
# 98| getStmt(11): [IfStmt] if (...) ...
# 98| getCondition(): [LogicalOrExpr] ... || ...
# 98| Type = [IntType] int
# 98| ValueCategory = prvalue
# 98| getLeftOperand(): [VariableAccess] x1
# 98| Type = [IntType] int
# 98| ValueCategory = prvalue(load)
# 98| getRightOperand(): [NotExpr] ! ...
# 98| Type = [IntType] int
# 98| ValueCategory = prvalue
# 98| getOperand(): [VariableAccess] x2
# 98| Type = [IntType] int
# 98| ValueCategory = prvalue(load)
# 98| getThen(): [BlockStmt] { ... }
# 99| getStmt(12): [IfStmt] if (...) ...
# 99| getCondition(): [LogicalOrExpr] ... || ...
# 99| Type = [IntType] int
# 99| ValueCategory = prvalue
# 99| getLeftOperand(): [NotExpr] ! ...
# 99| Type = [IntType] int
# 99| ValueCategory = prvalue
# 99| getOperand(): [VariableAccess] x1
# 99| Type = [IntType] int
# 99| ValueCategory = prvalue(load)
# 99| getRightOperand(): [NotExpr] ! ...
# 99| Type = [IntType] int
# 99| ValueCategory = prvalue
# 99| getOperand(): [VariableAccess] x2
# 99| Type = [IntType] int
# 99| ValueCategory = prvalue(load)
# 99| getThen(): [BlockStmt] { ... }
# 101| getStmt(13): [DeclStmt] declaration
# 101| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x_1_and_2
# 101| Type = [IntType] int
# 101| getVariable().getInitializer(): [Initializer] initializer for x_1_and_2
# 101| getExpr(): [LogicalAndExpr] ... && ...
# 101| Type = [IntType] int
# 101| ValueCategory = prvalue
# 101| getLeftOperand(): [VariableAccess] x1
# 101| Type = [IntType] int
# 101| ValueCategory = prvalue(load)
# 101| getRightOperand(): [VariableAccess] x2
# 101| Type = [IntType] int
# 101| ValueCategory = prvalue(load)
# 102| getStmt(14): [IfStmt] if (...) ...
# 102| getCondition(): [VariableAccess] x_1_and_2
# 102| Type = [IntType] int
# 102| ValueCategory = prvalue(load)
# 102| getThen(): [BlockStmt] { ... }
# 103| getStmt(15): [IfStmt] if (...) ...
# 103| getCondition(): [NotExpr] ! ...
# 103| Type = [IntType] int
# 103| ValueCategory = prvalue
# 103| getOperand(): [VariableAccess] x_1_and_2
# 103| Type = [IntType] int
# 103| ValueCategory = prvalue(load)
# 103| getThen(): [BlockStmt] { ... }
# 104| getStmt(16): [ReturnStmt] return ...
ir.cpp:
# 1| [TopLevelFunction] void Constants()
# 1| <params>:
@@ -23796,296 +23614,6 @@ ir.cpp:
# 2693| getExpr(): [VariableAccess] y
# 2693| Type = [IntType] int
# 2693| ValueCategory = prvalue(load)
# 2698| [TopLevelFunction] void branch_on_integral_in_cpp(int, int)
# 2698| <params>:
# 2698| getParameter(0): [Parameter] x1
# 2698| Type = [IntType] int
# 2698| getParameter(1): [Parameter] x2
# 2698| Type = [IntType] int
# 2698| getEntryPoint(): [BlockStmt] { ... }
# 2699| getStmt(0): [IfStmt] if (...) ...
# 2699| getCondition(): [VariableAccess] x1
# 2699| Type = [IntType] int
# 2699| ValueCategory = prvalue(load)
# 2699| getThen(): [BlockStmt] { ... }
# 2699| getCondition().getFullyConverted(): [CStyleCast] (bool)...
# 2699| Conversion = [BoolConversion] conversion to bool
# 2699| Type = [BoolType] bool
# 2699| ValueCategory = prvalue
# 2700| getStmt(1): [IfStmt] if (...) ...
# 2700| getCondition(): [NotExpr] ! ...
# 2700| Type = [BoolType] bool
# 2700| ValueCategory = prvalue
# 2700| getOperand(): [VariableAccess] x1
# 2700| Type = [IntType] int
# 2700| ValueCategory = prvalue(load)
# 2700| getOperand().getFullyConverted(): [CStyleCast] (bool)...
# 2700| Conversion = [BoolConversion] conversion to bool
# 2700| Type = [BoolType] bool
# 2700| ValueCategory = prvalue
# 2700| getThen(): [BlockStmt] { ... }
# 2702| getStmt(2): [DeclStmt] declaration
# 2702| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y
# 2702| Type = [IntType] int
# 2702| getVariable().getInitializer(): [Initializer] initializer for y
# 2702| getExpr(): [NotExpr] ! ...
# 2702| Type = [BoolType] bool
# 2702| ValueCategory = prvalue
# 2702| getOperand(): [VariableAccess] x1
# 2702| Type = [IntType] int
# 2702| ValueCategory = prvalue(load)
# 2702| getOperand().getFullyConverted(): [CStyleCast] (bool)...
# 2702| Conversion = [BoolConversion] conversion to bool
# 2702| Type = [BoolType] bool
# 2702| ValueCategory = prvalue
# 2702| getExpr().getFullyConverted(): [CStyleCast] (int)...
# 2702| Conversion = [IntegralConversion] integral conversion
# 2702| Type = [IntType] int
# 2702| ValueCategory = prvalue
# 2703| getStmt(3): [IfStmt] if (...) ...
# 2703| getCondition(): [VariableAccess] y
# 2703| Type = [IntType] int
# 2703| ValueCategory = prvalue(load)
# 2703| getThen(): [BlockStmt] { ... }
# 2703| getCondition().getFullyConverted(): [CStyleCast] (bool)...
# 2703| Conversion = [BoolConversion] conversion to bool
# 2703| Type = [BoolType] bool
# 2703| ValueCategory = prvalue
# 2704| getStmt(4): [IfStmt] if (...) ...
# 2704| getCondition(): [NotExpr] ! ...
# 2704| Type = [BoolType] bool
# 2704| ValueCategory = prvalue
# 2704| getOperand(): [VariableAccess] y
# 2704| Type = [IntType] int
# 2704| ValueCategory = prvalue(load)
# 2704| getOperand().getFullyConverted(): [CStyleCast] (bool)...
# 2704| Conversion = [BoolConversion] conversion to bool
# 2704| Type = [BoolType] bool
# 2704| ValueCategory = prvalue
# 2704| getThen(): [BlockStmt] { ... }
# 2706| getStmt(5): [IfStmt] if (...) ...
# 2706| getCondition(): [LogicalAndExpr] ... && ...
# 2706| Type = [BoolType] bool
# 2706| ValueCategory = prvalue
# 2706| getLeftOperand(): [VariableAccess] x1
# 2706| Type = [IntType] int
# 2706| ValueCategory = prvalue(load)
# 2706| getRightOperand(): [VariableAccess] x2
# 2706| Type = [IntType] int
# 2706| ValueCategory = prvalue(load)
# 2706| getLeftOperand().getFullyConverted(): [CStyleCast] (bool)...
# 2706| Conversion = [BoolConversion] conversion to bool
# 2706| Type = [BoolType] bool
# 2706| ValueCategory = prvalue
# 2706| getRightOperand().getFullyConverted(): [CStyleCast] (bool)...
# 2706| Conversion = [BoolConversion] conversion to bool
# 2706| Type = [BoolType] bool
# 2706| ValueCategory = prvalue
# 2706| getThen(): [BlockStmt] { ... }
# 2707| getStmt(6): [IfStmt] if (...) ...
# 2707| getCondition(): [LogicalAndExpr] ... && ...
# 2707| Type = [BoolType] bool
# 2707| ValueCategory = prvalue
# 2707| getLeftOperand(): [NotExpr] ! ...
# 2707| Type = [BoolType] bool
# 2707| ValueCategory = prvalue
# 2707| getOperand(): [VariableAccess] x1
# 2707| Type = [IntType] int
# 2707| ValueCategory = prvalue(load)
# 2707| getOperand().getFullyConverted(): [CStyleCast] (bool)...
# 2707| Conversion = [BoolConversion] conversion to bool
# 2707| Type = [BoolType] bool
# 2707| ValueCategory = prvalue
# 2707| getRightOperand(): [VariableAccess] x2
# 2707| Type = [IntType] int
# 2707| ValueCategory = prvalue(load)
# 2707| getRightOperand().getFullyConverted(): [CStyleCast] (bool)...
# 2707| Conversion = [BoolConversion] conversion to bool
# 2707| Type = [BoolType] bool
# 2707| ValueCategory = prvalue
# 2707| getThen(): [BlockStmt] { ... }
# 2708| getStmt(7): [IfStmt] if (...) ...
# 2708| getCondition(): [LogicalAndExpr] ... && ...
# 2708| Type = [BoolType] bool
# 2708| ValueCategory = prvalue
# 2708| getLeftOperand(): [VariableAccess] x1
# 2708| Type = [IntType] int
# 2708| ValueCategory = prvalue(load)
# 2708| getRightOperand(): [NotExpr] ! ...
# 2708| Type = [BoolType] bool
# 2708| ValueCategory = prvalue
# 2708| getOperand(): [VariableAccess] x2
# 2708| Type = [IntType] int
# 2708| ValueCategory = prvalue(load)
# 2708| getOperand().getFullyConverted(): [CStyleCast] (bool)...
# 2708| Conversion = [BoolConversion] conversion to bool
# 2708| Type = [BoolType] bool
# 2708| ValueCategory = prvalue
# 2708| getLeftOperand().getFullyConverted(): [CStyleCast] (bool)...
# 2708| Conversion = [BoolConversion] conversion to bool
# 2708| Type = [BoolType] bool
# 2708| ValueCategory = prvalue
# 2708| getThen(): [BlockStmt] { ... }
# 2709| getStmt(8): [IfStmt] if (...) ...
# 2709| getCondition(): [LogicalAndExpr] ... && ...
# 2709| Type = [BoolType] bool
# 2709| ValueCategory = prvalue
# 2709| getLeftOperand(): [NotExpr] ! ...
# 2709| Type = [BoolType] bool
# 2709| ValueCategory = prvalue
# 2709| getOperand(): [VariableAccess] x1
# 2709| Type = [IntType] int
# 2709| ValueCategory = prvalue(load)
# 2709| getOperand().getFullyConverted(): [CStyleCast] (bool)...
# 2709| Conversion = [BoolConversion] conversion to bool
# 2709| Type = [BoolType] bool
# 2709| ValueCategory = prvalue
# 2709| getRightOperand(): [NotExpr] ! ...
# 2709| Type = [BoolType] bool
# 2709| ValueCategory = prvalue
# 2709| getOperand(): [VariableAccess] x2
# 2709| Type = [IntType] int
# 2709| ValueCategory = prvalue(load)
# 2709| getOperand().getFullyConverted(): [CStyleCast] (bool)...
# 2709| Conversion = [BoolConversion] conversion to bool
# 2709| Type = [BoolType] bool
# 2709| ValueCategory = prvalue
# 2709| getThen(): [BlockStmt] { ... }
# 2710| getStmt(9): [IfStmt] if (...) ...
# 2710| getCondition(): [LogicalOrExpr] ... || ...
# 2710| Type = [BoolType] bool
# 2710| ValueCategory = prvalue
# 2710| getLeftOperand(): [VariableAccess] x1
# 2710| Type = [IntType] int
# 2710| ValueCategory = prvalue(load)
# 2710| getRightOperand(): [VariableAccess] x2
# 2710| Type = [IntType] int
# 2710| ValueCategory = prvalue(load)
# 2710| getLeftOperand().getFullyConverted(): [CStyleCast] (bool)...
# 2710| Conversion = [BoolConversion] conversion to bool
# 2710| Type = [BoolType] bool
# 2710| ValueCategory = prvalue
# 2710| getRightOperand().getFullyConverted(): [CStyleCast] (bool)...
# 2710| Conversion = [BoolConversion] conversion to bool
# 2710| Type = [BoolType] bool
# 2710| ValueCategory = prvalue
# 2710| getThen(): [BlockStmt] { ... }
# 2711| getStmt(10): [IfStmt] if (...) ...
# 2711| getCondition(): [LogicalOrExpr] ... || ...
# 2711| Type = [BoolType] bool
# 2711| ValueCategory = prvalue
# 2711| getLeftOperand(): [NotExpr] ! ...
# 2711| Type = [BoolType] bool
# 2711| ValueCategory = prvalue
# 2711| getOperand(): [VariableAccess] x1
# 2711| Type = [IntType] int
# 2711| ValueCategory = prvalue(load)
# 2711| getOperand().getFullyConverted(): [CStyleCast] (bool)...
# 2711| Conversion = [BoolConversion] conversion to bool
# 2711| Type = [BoolType] bool
# 2711| ValueCategory = prvalue
# 2711| getRightOperand(): [VariableAccess] x2
# 2711| Type = [IntType] int
# 2711| ValueCategory = prvalue(load)
# 2711| getRightOperand().getFullyConverted(): [CStyleCast] (bool)...
# 2711| Conversion = [BoolConversion] conversion to bool
# 2711| Type = [BoolType] bool
# 2711| ValueCategory = prvalue
# 2711| getThen(): [BlockStmt] { ... }
# 2712| getStmt(11): [IfStmt] if (...) ...
# 2712| getCondition(): [LogicalOrExpr] ... || ...
# 2712| Type = [BoolType] bool
# 2712| ValueCategory = prvalue
# 2712| getLeftOperand(): [VariableAccess] x1
# 2712| Type = [IntType] int
# 2712| ValueCategory = prvalue(load)
# 2712| getRightOperand(): [NotExpr] ! ...
# 2712| Type = [BoolType] bool
# 2712| ValueCategory = prvalue
# 2712| getOperand(): [VariableAccess] x2
# 2712| Type = [IntType] int
# 2712| ValueCategory = prvalue(load)
# 2712| getOperand().getFullyConverted(): [CStyleCast] (bool)...
# 2712| Conversion = [BoolConversion] conversion to bool
# 2712| Type = [BoolType] bool
# 2712| ValueCategory = prvalue
# 2712| getLeftOperand().getFullyConverted(): [CStyleCast] (bool)...
# 2712| Conversion = [BoolConversion] conversion to bool
# 2712| Type = [BoolType] bool
# 2712| ValueCategory = prvalue
# 2712| getThen(): [BlockStmt] { ... }
# 2713| getStmt(12): [IfStmt] if (...) ...
# 2713| getCondition(): [LogicalOrExpr] ... || ...
# 2713| Type = [BoolType] bool
# 2713| ValueCategory = prvalue
# 2713| getLeftOperand(): [NotExpr] ! ...
# 2713| Type = [BoolType] bool
# 2713| ValueCategory = prvalue
# 2713| getOperand(): [VariableAccess] x1
# 2713| Type = [IntType] int
# 2713| ValueCategory = prvalue(load)
# 2713| getOperand().getFullyConverted(): [CStyleCast] (bool)...
# 2713| Conversion = [BoolConversion] conversion to bool
# 2713| Type = [BoolType] bool
# 2713| ValueCategory = prvalue
# 2713| getRightOperand(): [NotExpr] ! ...
# 2713| Type = [BoolType] bool
# 2713| ValueCategory = prvalue
# 2713| getOperand(): [VariableAccess] x2
# 2713| Type = [IntType] int
# 2713| ValueCategory = prvalue(load)
# 2713| getOperand().getFullyConverted(): [CStyleCast] (bool)...
# 2713| Conversion = [BoolConversion] conversion to bool
# 2713| Type = [BoolType] bool
# 2713| ValueCategory = prvalue
# 2713| getThen(): [BlockStmt] { ... }
# 2715| getStmt(13): [DeclStmt] declaration
# 2715| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x_1_and_2
# 2715| Type = [IntType] int
# 2715| getVariable().getInitializer(): [Initializer] initializer for x_1_and_2
# 2715| getExpr(): [LogicalAndExpr] ... && ...
# 2715| Type = [BoolType] bool
# 2715| ValueCategory = prvalue
# 2715| getLeftOperand(): [VariableAccess] x1
# 2715| Type = [IntType] int
# 2715| ValueCategory = prvalue(load)
# 2715| getRightOperand(): [VariableAccess] x2
# 2715| Type = [IntType] int
# 2715| ValueCategory = prvalue(load)
# 2715| getLeftOperand().getFullyConverted(): [CStyleCast] (bool)...
# 2715| Conversion = [BoolConversion] conversion to bool
# 2715| Type = [BoolType] bool
# 2715| ValueCategory = prvalue
# 2715| getRightOperand().getFullyConverted(): [CStyleCast] (bool)...
# 2715| Conversion = [BoolConversion] conversion to bool
# 2715| Type = [BoolType] bool
# 2715| ValueCategory = prvalue
# 2715| getExpr().getFullyConverted(): [CStyleCast] (int)...
# 2715| Conversion = [IntegralConversion] integral conversion
# 2715| Type = [IntType] int
# 2715| ValueCategory = prvalue
# 2716| getStmt(14): [IfStmt] if (...) ...
# 2716| getCondition(): [VariableAccess] x_1_and_2
# 2716| Type = [IntType] int
# 2716| ValueCategory = prvalue(load)
# 2716| getThen(): [BlockStmt] { ... }
# 2716| getCondition().getFullyConverted(): [CStyleCast] (bool)...
# 2716| Conversion = [BoolConversion] conversion to bool
# 2716| Type = [BoolType] bool
# 2716| ValueCategory = prvalue
# 2717| getStmt(15): [IfStmt] if (...) ...
# 2717| getCondition(): [NotExpr] ! ...
# 2717| Type = [BoolType] bool
# 2717| ValueCategory = prvalue
# 2717| getOperand(): [VariableAccess] x_1_and_2
# 2717| Type = [IntType] int
# 2717| ValueCategory = prvalue(load)
# 2717| getOperand().getFullyConverted(): [CStyleCast] (bool)...
# 2717| Conversion = [BoolConversion] conversion to bool
# 2717| Type = [BoolType] bool
# 2717| ValueCategory = prvalue
# 2717| getThen(): [BlockStmt] { ... }
# 2718| getStmt(16): [ReturnStmt] return ...
many-defs-per-use.cpp:
# 34| [TopLevelFunction] void many_defs_per_use()
# 34| <params>:

View File

@@ -3296,278 +3296,6 @@ ir.c:
# 80| v80_6(void) = AliasedUse : ~m81_5
# 80| v80_7(void) = ExitFunction :
# 84| void branch_on_integral_in_c(int, int)
# 84| Block 0
# 84| v84_1(void) = EnterFunction :
# 84| m84_2(unknown) = AliasedDefinition :
# 84| m84_3(unknown) = InitializeNonLocal :
# 84| m84_4(unknown) = Chi : total:m84_2, partial:m84_3
# 84| r84_5(glval<int>) = VariableAddress[x1] :
# 84| m84_6(int) = InitializeParameter[x1] : &:r84_5
# 84| r84_7(glval<int>) = VariableAddress[x2] :
# 84| m84_8(int) = InitializeParameter[x2] : &:r84_7
# 85| r85_1(glval<int>) = VariableAddress[x1] :
# 85| r85_2(int) = Load[x1] : &:r85_1, m84_6
# 85| v85_3(void) = ConditionalBranch : r85_2
#-----| False -> Block 2
#-----| True -> Block 1
# 85| Block 1
# 85| v85_4(void) = NoOp :
#-----| Goto -> Block 2
# 86| Block 2
# 86| r86_1(glval<int>) = VariableAddress[x1] :
# 86| r86_2(int) = Load[x1] : &:r86_1, m84_6
# 86| r86_3(int) = LogicalNot : r86_2
# 86| v86_4(void) = ConditionalBranch : r86_3
#-----| False -> Block 4
#-----| True -> Block 3
# 86| Block 3
# 86| v86_5(void) = NoOp :
#-----| Goto -> Block 4
# 88| Block 4
# 88| r88_1(glval<int>) = VariableAddress[y] :
# 88| r88_2(glval<int>) = VariableAddress[x1] :
# 88| r88_3(int) = Load[x1] : &:r88_2, m84_6
# 88| r88_4(int) = LogicalNot : r88_3
# 88| m88_5(int) = Store[y] : &:r88_1, r88_4
# 89| r89_1(glval<int>) = VariableAddress[y] :
# 89| r89_2(int) = Load[y] : &:r89_1, m88_5
# 89| v89_3(void) = ConditionalBranch : r89_2
#-----| False -> Block 6
#-----| True -> Block 5
# 89| Block 5
# 89| v89_4(void) = NoOp :
#-----| Goto -> Block 6
# 90| Block 6
# 90| r90_1(glval<int>) = VariableAddress[y] :
# 90| r90_2(int) = Load[y] : &:r90_1, m88_5
# 90| r90_3(int) = LogicalNot : r90_2
# 90| v90_4(void) = ConditionalBranch : r90_3
#-----| False -> Block 8
#-----| True -> Block 7
# 90| Block 7
# 90| v90_5(void) = NoOp :
#-----| Goto -> Block 8
# 92| Block 8
# 92| r92_1(glval<int>) = VariableAddress[x1] :
# 92| r92_2(int) = Load[x1] : &:r92_1, m84_6
# 92| v92_3(void) = ConditionalBranch : r92_2
#-----| False -> Block 11
#-----| True -> Block 9
# 92| Block 9
# 92| r92_4(glval<int>) = VariableAddress[x2] :
# 92| r92_5(int) = Load[x2] : &:r92_4, m84_8
# 92| v92_6(void) = ConditionalBranch : r92_5
#-----| False -> Block 11
#-----| True -> Block 10
# 92| Block 10
# 92| v92_7(void) = NoOp :
#-----| Goto -> Block 11
# 93| Block 11
# 93| r93_1(glval<int>) = VariableAddress[x1] :
# 93| r93_2(int) = Load[x1] : &:r93_1, m84_6
# 93| r93_3(int) = LogicalNot : r93_2
# 93| v93_4(void) = ConditionalBranch : r93_3
#-----| False -> Block 14
#-----| True -> Block 12
# 93| Block 12
# 93| r93_5(glval<int>) = VariableAddress[x2] :
# 93| r93_6(int) = Load[x2] : &:r93_5, m84_8
# 93| v93_7(void) = ConditionalBranch : r93_6
#-----| False -> Block 14
#-----| True -> Block 13
# 93| Block 13
# 93| v93_8(void) = NoOp :
#-----| Goto -> Block 14
# 94| Block 14
# 94| r94_1(glval<int>) = VariableAddress[x1] :
# 94| r94_2(int) = Load[x1] : &:r94_1, m84_6
# 94| v94_3(void) = ConditionalBranch : r94_2
#-----| False -> Block 17
#-----| True -> Block 15
# 94| Block 15
# 94| r94_4(glval<int>) = VariableAddress[x2] :
# 94| r94_5(int) = Load[x2] : &:r94_4, m84_8
# 94| r94_6(int) = LogicalNot : r94_5
# 94| v94_7(void) = ConditionalBranch : r94_6
#-----| False -> Block 17
#-----| True -> Block 16
# 94| Block 16
# 94| v94_8(void) = NoOp :
#-----| Goto -> Block 17
# 95| Block 17
# 95| r95_1(glval<int>) = VariableAddress[x1] :
# 95| r95_2(int) = Load[x1] : &:r95_1, m84_6
# 95| r95_3(int) = LogicalNot : r95_2
# 95| v95_4(void) = ConditionalBranch : r95_3
#-----| False -> Block 20
#-----| True -> Block 18
# 95| Block 18
# 95| r95_5(glval<int>) = VariableAddress[x2] :
# 95| r95_6(int) = Load[x2] : &:r95_5, m84_8
# 95| r95_7(int) = LogicalNot : r95_6
# 95| v95_8(void) = ConditionalBranch : r95_7
#-----| False -> Block 20
#-----| True -> Block 19
# 95| Block 19
# 95| v95_9(void) = NoOp :
#-----| Goto -> Block 20
# 96| Block 20
# 96| r96_1(glval<int>) = VariableAddress[x1] :
# 96| r96_2(int) = Load[x1] : &:r96_1, m84_6
# 96| v96_3(void) = ConditionalBranch : r96_2
#-----| False -> Block 21
#-----| True -> Block 22
# 96| Block 21
# 96| r96_4(glval<int>) = VariableAddress[x2] :
# 96| r96_5(int) = Load[x2] : &:r96_4, m84_8
# 96| v96_6(void) = ConditionalBranch : r96_5
#-----| False -> Block 23
#-----| True -> Block 22
# 96| Block 22
# 96| v96_7(void) = NoOp :
#-----| Goto -> Block 23
# 97| Block 23
# 97| r97_1(glval<int>) = VariableAddress[x1] :
# 97| r97_2(int) = Load[x1] : &:r97_1, m84_6
# 97| r97_3(int) = LogicalNot : r97_2
# 97| v97_4(void) = ConditionalBranch : r97_3
#-----| False -> Block 24
#-----| True -> Block 25
# 97| Block 24
# 97| r97_5(glval<int>) = VariableAddress[x2] :
# 97| r97_6(int) = Load[x2] : &:r97_5, m84_8
# 97| v97_7(void) = ConditionalBranch : r97_6
#-----| False -> Block 26
#-----| True -> Block 25
# 97| Block 25
# 97| v97_8(void) = NoOp :
#-----| Goto -> Block 26
# 98| Block 26
# 98| r98_1(glval<int>) = VariableAddress[x1] :
# 98| r98_2(int) = Load[x1] : &:r98_1, m84_6
# 98| v98_3(void) = ConditionalBranch : r98_2
#-----| False -> Block 27
#-----| True -> Block 28
# 98| Block 27
# 98| r98_4(glval<int>) = VariableAddress[x2] :
# 98| r98_5(int) = Load[x2] : &:r98_4, m84_8
# 98| r98_6(int) = LogicalNot : r98_5
# 98| v98_7(void) = ConditionalBranch : r98_6
#-----| False -> Block 29
#-----| True -> Block 28
# 98| Block 28
# 98| v98_8(void) = NoOp :
#-----| Goto -> Block 29
# 99| Block 29
# 99| r99_1(glval<int>) = VariableAddress[x1] :
# 99| r99_2(int) = Load[x1] : &:r99_1, m84_6
# 99| r99_3(int) = LogicalNot : r99_2
# 99| v99_4(void) = ConditionalBranch : r99_3
#-----| False -> Block 30
#-----| True -> Block 31
# 99| Block 30
# 99| r99_5(glval<int>) = VariableAddress[x2] :
# 99| r99_6(int) = Load[x2] : &:r99_5, m84_8
# 99| r99_7(int) = LogicalNot : r99_6
# 99| v99_8(void) = ConditionalBranch : r99_7
#-----| False -> Block 32
#-----| True -> Block 31
# 99| Block 31
# 99| v99_9(void) = NoOp :
#-----| Goto -> Block 32
# 101| Block 32
# 101| r101_1(glval<int>) = VariableAddress[x_1_and_2] :
# 101| r101_2(glval<int>) = VariableAddress[x1] :
# 101| r101_3(int) = Load[x1] : &:r101_2, m84_6
# 101| v101_4(void) = ConditionalBranch : r101_3
#-----| False -> Block 33
#-----| True -> Block 36
# 101| Block 33
# 101| r101_5(glval<int>) = VariableAddress[#temp101:19] :
# 101| r101_6(int) = Constant[0] :
# 101| m101_7(int) = Store[#temp101:19] : &:r101_5, r101_6
#-----| Goto -> Block 34
# 101| Block 34
# 101| m101_8(int) = Phi : from 33:m101_7, from 35:m101_14
# 101| r101_9(glval<int>) = VariableAddress[#temp101:19] :
# 101| r101_10(int) = Load[#temp101:19] : &:r101_9, m101_8
# 101| m101_11(int) = Store[x_1_and_2] : &:r101_1, r101_10
# 102| r102_1(glval<int>) = VariableAddress[x_1_and_2] :
# 102| r102_2(int) = Load[x_1_and_2] : &:r102_1, m101_11
# 102| v102_3(void) = ConditionalBranch : r102_2
#-----| False -> Block 38
#-----| True -> Block 37
# 101| Block 35
# 101| r101_12(glval<int>) = VariableAddress[#temp101:19] :
# 101| r101_13(int) = Constant[1] :
# 101| m101_14(int) = Store[#temp101:19] : &:r101_12, r101_13
#-----| Goto -> Block 34
# 101| Block 36
# 101| r101_15(glval<int>) = VariableAddress[x2] :
# 101| r101_16(int) = Load[x2] : &:r101_15, m84_8
# 101| v101_17(void) = ConditionalBranch : r101_16
#-----| False -> Block 33
#-----| True -> Block 35
# 102| Block 37
# 102| v102_4(void) = NoOp :
#-----| Goto -> Block 38
# 103| Block 38
# 103| r103_1(glval<int>) = VariableAddress[x_1_and_2] :
# 103| r103_2(int) = Load[x_1_and_2] : &:r103_1, m101_11
# 103| r103_3(int) = LogicalNot : r103_2
# 103| v103_4(void) = ConditionalBranch : r103_3
#-----| False -> Block 40
#-----| True -> Block 39
# 103| Block 39
# 103| v103_5(void) = NoOp :
#-----| Goto -> Block 40
# 104| Block 40
# 104| v104_1(void) = NoOp :
# 84| v84_9(void) = ReturnVoid :
# 84| v84_10(void) = AliasedUse : m84_3
# 84| v84_11(void) = ExitFunction :
ir.cpp:
# 1| void Constants()
# 1| Block 0
@@ -19389,330 +19117,6 @@ ir.cpp:
# 2691| v2691_7(void) = AliasedUse : m2691_3
# 2691| v2691_8(void) = ExitFunction :
# 2698| void branch_on_integral_in_cpp(int, int)
# 2698| Block 0
# 2698| v2698_1(void) = EnterFunction :
# 2698| m2698_2(unknown) = AliasedDefinition :
# 2698| m2698_3(unknown) = InitializeNonLocal :
# 2698| m2698_4(unknown) = Chi : total:m2698_2, partial:m2698_3
# 2698| r2698_5(glval<int>) = VariableAddress[x1] :
# 2698| m2698_6(int) = InitializeParameter[x1] : &:r2698_5
# 2698| r2698_7(glval<int>) = VariableAddress[x2] :
# 2698| m2698_8(int) = InitializeParameter[x2] : &:r2698_7
# 2699| r2699_1(glval<int>) = VariableAddress[x1] :
# 2699| r2699_2(int) = Load[x1] : &:r2699_1, m2698_6
# 2699| r2699_3(int) = Constant[0] :
# 2699| r2699_4(bool) = CompareNE : r2699_2, r2699_3
# 2699| v2699_5(void) = ConditionalBranch : r2699_4
#-----| False -> Block 2
#-----| True -> Block 1
# 2699| Block 1
# 2699| v2699_6(void) = NoOp :
#-----| Goto -> Block 2
# 2700| Block 2
# 2700| r2700_1(glval<int>) = VariableAddress[x1] :
# 2700| r2700_2(int) = Load[x1] : &:r2700_1, m2698_6
# 2700| r2700_3(int) = Constant[0] :
# 2700| r2700_4(bool) = CompareNE : r2700_2, r2700_3
# 2700| r2700_5(bool) = LogicalNot : r2700_4
# 2700| v2700_6(void) = ConditionalBranch : r2700_5
#-----| False -> Block 4
#-----| True -> Block 3
# 2700| Block 3
# 2700| v2700_7(void) = NoOp :
#-----| Goto -> Block 4
# 2702| Block 4
# 2702| r2702_1(glval<int>) = VariableAddress[y] :
# 2702| r2702_2(glval<int>) = VariableAddress[x1] :
# 2702| r2702_3(int) = Load[x1] : &:r2702_2, m2698_6
# 2702| r2702_4(int) = Constant[0] :
# 2702| r2702_5(bool) = CompareNE : r2702_3, r2702_4
# 2702| r2702_6(bool) = LogicalNot : r2702_5
# 2702| r2702_7(int) = Convert : r2702_6
# 2702| m2702_8(int) = Store[y] : &:r2702_1, r2702_7
# 2703| r2703_1(glval<int>) = VariableAddress[y] :
# 2703| r2703_2(int) = Load[y] : &:r2703_1, m2702_8
# 2703| r2703_3(int) = Constant[0] :
# 2703| r2703_4(bool) = CompareNE : r2703_2, r2703_3
# 2703| v2703_5(void) = ConditionalBranch : r2703_4
#-----| False -> Block 6
#-----| True -> Block 5
# 2703| Block 5
# 2703| v2703_6(void) = NoOp :
#-----| Goto -> Block 6
# 2704| Block 6
# 2704| r2704_1(glval<int>) = VariableAddress[y] :
# 2704| r2704_2(int) = Load[y] : &:r2704_1, m2702_8
# 2704| r2704_3(int) = Constant[0] :
# 2704| r2704_4(bool) = CompareNE : r2704_2, r2704_3
# 2704| r2704_5(bool) = LogicalNot : r2704_4
# 2704| v2704_6(void) = ConditionalBranch : r2704_5
#-----| False -> Block 8
#-----| True -> Block 7
# 2704| Block 7
# 2704| v2704_7(void) = NoOp :
#-----| Goto -> Block 8
# 2706| Block 8
# 2706| r2706_1(glval<int>) = VariableAddress[x1] :
# 2706| r2706_2(int) = Load[x1] : &:r2706_1, m2698_6
# 2706| r2706_3(int) = Constant[0] :
# 2706| r2706_4(bool) = CompareNE : r2706_2, r2706_3
# 2706| v2706_5(void) = ConditionalBranch : r2706_4
#-----| False -> Block 11
#-----| True -> Block 9
# 2706| Block 9
# 2706| r2706_6(glval<int>) = VariableAddress[x2] :
# 2706| r2706_7(int) = Load[x2] : &:r2706_6, m2698_8
# 2706| r2706_8(int) = Constant[0] :
# 2706| r2706_9(bool) = CompareNE : r2706_7, r2706_8
# 2706| v2706_10(void) = ConditionalBranch : r2706_9
#-----| False -> Block 11
#-----| True -> Block 10
# 2706| Block 10
# 2706| v2706_11(void) = NoOp :
#-----| Goto -> Block 11
# 2707| Block 11
# 2707| r2707_1(glval<int>) = VariableAddress[x1] :
# 2707| r2707_2(int) = Load[x1] : &:r2707_1, m2698_6
# 2707| r2707_3(int) = Constant[0] :
# 2707| r2707_4(bool) = CompareNE : r2707_2, r2707_3
# 2707| r2707_5(bool) = LogicalNot : r2707_4
# 2707| v2707_6(void) = ConditionalBranch : r2707_5
#-----| False -> Block 14
#-----| True -> Block 12
# 2707| Block 12
# 2707| r2707_7(glval<int>) = VariableAddress[x2] :
# 2707| r2707_8(int) = Load[x2] : &:r2707_7, m2698_8
# 2707| r2707_9(int) = Constant[0] :
# 2707| r2707_10(bool) = CompareNE : r2707_8, r2707_9
# 2707| v2707_11(void) = ConditionalBranch : r2707_10
#-----| False -> Block 14
#-----| True -> Block 13
# 2707| Block 13
# 2707| v2707_12(void) = NoOp :
#-----| Goto -> Block 14
# 2708| Block 14
# 2708| r2708_1(glval<int>) = VariableAddress[x1] :
# 2708| r2708_2(int) = Load[x1] : &:r2708_1, m2698_6
# 2708| r2708_3(int) = Constant[0] :
# 2708| r2708_4(bool) = CompareNE : r2708_2, r2708_3
# 2708| v2708_5(void) = ConditionalBranch : r2708_4
#-----| False -> Block 17
#-----| True -> Block 15
# 2708| Block 15
# 2708| r2708_6(glval<int>) = VariableAddress[x2] :
# 2708| r2708_7(int) = Load[x2] : &:r2708_6, m2698_8
# 2708| r2708_8(int) = Constant[0] :
# 2708| r2708_9(bool) = CompareNE : r2708_7, r2708_8
# 2708| r2708_10(bool) = LogicalNot : r2708_9
# 2708| v2708_11(void) = ConditionalBranch : r2708_10
#-----| False -> Block 17
#-----| True -> Block 16
# 2708| Block 16
# 2708| v2708_12(void) = NoOp :
#-----| Goto -> Block 17
# 2709| Block 17
# 2709| r2709_1(glval<int>) = VariableAddress[x1] :
# 2709| r2709_2(int) = Load[x1] : &:r2709_1, m2698_6
# 2709| r2709_3(int) = Constant[0] :
# 2709| r2709_4(bool) = CompareNE : r2709_2, r2709_3
# 2709| r2709_5(bool) = LogicalNot : r2709_4
# 2709| v2709_6(void) = ConditionalBranch : r2709_5
#-----| False -> Block 20
#-----| True -> Block 18
# 2709| Block 18
# 2709| r2709_7(glval<int>) = VariableAddress[x2] :
# 2709| r2709_8(int) = Load[x2] : &:r2709_7, m2698_8
# 2709| r2709_9(int) = Constant[0] :
# 2709| r2709_10(bool) = CompareNE : r2709_8, r2709_9
# 2709| r2709_11(bool) = LogicalNot : r2709_10
# 2709| v2709_12(void) = ConditionalBranch : r2709_11
#-----| False -> Block 20
#-----| True -> Block 19
# 2709| Block 19
# 2709| v2709_13(void) = NoOp :
#-----| Goto -> Block 20
# 2710| Block 20
# 2710| r2710_1(glval<int>) = VariableAddress[x1] :
# 2710| r2710_2(int) = Load[x1] : &:r2710_1, m2698_6
# 2710| r2710_3(int) = Constant[0] :
# 2710| r2710_4(bool) = CompareNE : r2710_2, r2710_3
# 2710| v2710_5(void) = ConditionalBranch : r2710_4
#-----| False -> Block 21
#-----| True -> Block 22
# 2710| Block 21
# 2710| r2710_6(glval<int>) = VariableAddress[x2] :
# 2710| r2710_7(int) = Load[x2] : &:r2710_6, m2698_8
# 2710| r2710_8(int) = Constant[0] :
# 2710| r2710_9(bool) = CompareNE : r2710_7, r2710_8
# 2710| v2710_10(void) = ConditionalBranch : r2710_9
#-----| False -> Block 23
#-----| True -> Block 22
# 2710| Block 22
# 2710| v2710_11(void) = NoOp :
#-----| Goto -> Block 23
# 2711| Block 23
# 2711| r2711_1(glval<int>) = VariableAddress[x1] :
# 2711| r2711_2(int) = Load[x1] : &:r2711_1, m2698_6
# 2711| r2711_3(int) = Constant[0] :
# 2711| r2711_4(bool) = CompareNE : r2711_2, r2711_3
# 2711| r2711_5(bool) = LogicalNot : r2711_4
# 2711| v2711_6(void) = ConditionalBranch : r2711_5
#-----| False -> Block 24
#-----| True -> Block 25
# 2711| Block 24
# 2711| r2711_7(glval<int>) = VariableAddress[x2] :
# 2711| r2711_8(int) = Load[x2] : &:r2711_7, m2698_8
# 2711| r2711_9(int) = Constant[0] :
# 2711| r2711_10(bool) = CompareNE : r2711_8, r2711_9
# 2711| v2711_11(void) = ConditionalBranch : r2711_10
#-----| False -> Block 26
#-----| True -> Block 25
# 2711| Block 25
# 2711| v2711_12(void) = NoOp :
#-----| Goto -> Block 26
# 2712| Block 26
# 2712| r2712_1(glval<int>) = VariableAddress[x1] :
# 2712| r2712_2(int) = Load[x1] : &:r2712_1, m2698_6
# 2712| r2712_3(int) = Constant[0] :
# 2712| r2712_4(bool) = CompareNE : r2712_2, r2712_3
# 2712| v2712_5(void) = ConditionalBranch : r2712_4
#-----| False -> Block 27
#-----| True -> Block 28
# 2712| Block 27
# 2712| r2712_6(glval<int>) = VariableAddress[x2] :
# 2712| r2712_7(int) = Load[x2] : &:r2712_6, m2698_8
# 2712| r2712_8(int) = Constant[0] :
# 2712| r2712_9(bool) = CompareNE : r2712_7, r2712_8
# 2712| r2712_10(bool) = LogicalNot : r2712_9
# 2712| v2712_11(void) = ConditionalBranch : r2712_10
#-----| False -> Block 29
#-----| True -> Block 28
# 2712| Block 28
# 2712| v2712_12(void) = NoOp :
#-----| Goto -> Block 29
# 2713| Block 29
# 2713| r2713_1(glval<int>) = VariableAddress[x1] :
# 2713| r2713_2(int) = Load[x1] : &:r2713_1, m2698_6
# 2713| r2713_3(int) = Constant[0] :
# 2713| r2713_4(bool) = CompareNE : r2713_2, r2713_3
# 2713| r2713_5(bool) = LogicalNot : r2713_4
# 2713| v2713_6(void) = ConditionalBranch : r2713_5
#-----| False -> Block 30
#-----| True -> Block 31
# 2713| Block 30
# 2713| r2713_7(glval<int>) = VariableAddress[x2] :
# 2713| r2713_8(int) = Load[x2] : &:r2713_7, m2698_8
# 2713| r2713_9(int) = Constant[0] :
# 2713| r2713_10(bool) = CompareNE : r2713_8, r2713_9
# 2713| r2713_11(bool) = LogicalNot : r2713_10
# 2713| v2713_12(void) = ConditionalBranch : r2713_11
#-----| False -> Block 32
#-----| True -> Block 31
# 2713| Block 31
# 2713| v2713_13(void) = NoOp :
#-----| Goto -> Block 32
# 2715| Block 32
# 2715| r2715_1(glval<int>) = VariableAddress[x_1_and_2] :
# 2715| r2715_2(glval<int>) = VariableAddress[x1] :
# 2715| r2715_3(int) = Load[x1] : &:r2715_2, m2698_6
# 2715| r2715_4(int) = Constant[0] :
# 2715| r2715_5(bool) = CompareNE : r2715_3, r2715_4
# 2715| v2715_6(void) = ConditionalBranch : r2715_5
#-----| False -> Block 33
#-----| True -> Block 36
# 2715| Block 33
# 2715| r2715_7(glval<bool>) = VariableAddress[#temp2715:19] :
# 2715| r2715_8(bool) = Constant[0] :
# 2715| m2715_9(bool) = Store[#temp2715:19] : &:r2715_7, r2715_8
#-----| Goto -> Block 34
# 2715| Block 34
# 2715| m2715_10(bool) = Phi : from 33:m2715_9, from 35:m2715_17
# 2715| r2715_11(glval<bool>) = VariableAddress[#temp2715:19] :
# 2715| r2715_12(bool) = Load[#temp2715:19] : &:r2715_11, m2715_10
# 2715| r2715_13(int) = Convert : r2715_12
# 2715| m2715_14(int) = Store[x_1_and_2] : &:r2715_1, r2715_13
# 2716| r2716_1(glval<int>) = VariableAddress[x_1_and_2] :
# 2716| r2716_2(int) = Load[x_1_and_2] : &:r2716_1, m2715_14
# 2716| r2716_3(int) = Constant[0] :
# 2716| r2716_4(bool) = CompareNE : r2716_2, r2716_3
# 2716| v2716_5(void) = ConditionalBranch : r2716_4
#-----| False -> Block 38
#-----| True -> Block 37
# 2715| Block 35
# 2715| r2715_15(glval<bool>) = VariableAddress[#temp2715:19] :
# 2715| r2715_16(bool) = Constant[1] :
# 2715| m2715_17(bool) = Store[#temp2715:19] : &:r2715_15, r2715_16
#-----| Goto -> Block 34
# 2715| Block 36
# 2715| r2715_18(glval<int>) = VariableAddress[x2] :
# 2715| r2715_19(int) = Load[x2] : &:r2715_18, m2698_8
# 2715| r2715_20(int) = Constant[0] :
# 2715| r2715_21(bool) = CompareNE : r2715_19, r2715_20
# 2715| v2715_22(void) = ConditionalBranch : r2715_21
#-----| False -> Block 33
#-----| True -> Block 35
# 2716| Block 37
# 2716| v2716_6(void) = NoOp :
#-----| Goto -> Block 38
# 2717| Block 38
# 2717| r2717_1(glval<int>) = VariableAddress[x_1_and_2] :
# 2717| r2717_2(int) = Load[x_1_and_2] : &:r2717_1, m2715_14
# 2717| r2717_3(int) = Constant[0] :
# 2717| r2717_4(bool) = CompareNE : r2717_2, r2717_3
# 2717| r2717_5(bool) = LogicalNot : r2717_4
# 2717| v2717_6(void) = ConditionalBranch : r2717_5
#-----| False -> Block 40
#-----| True -> Block 39
# 2717| Block 39
# 2717| v2717_7(void) = NoOp :
#-----| Goto -> Block 40
# 2718| Block 40
# 2718| v2718_1(void) = NoOp :
# 2698| v2698_9(void) = ReturnVoid :
# 2698| v2698_10(void) = AliasedUse : m2698_3
# 2698| v2698_11(void) = ExitFunction :
many-defs-per-use.cpp:
# 34| void many_defs_per_use()
# 34| Block 0

View File

@@ -29,42 +29,4 @@ 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) |
nonUniqueIRVariable
nonBooleanOperand
| ir.c:85:7:85:8 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:86:6:86:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:86:6:86:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:88:11:88:13 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:89:6:89:6 | ConditionalBranch: y | Conditional branch instruction ConditionalBranch: y with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:90:6:90:7 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:90:6:90:7 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:92:6:92:7 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:92:12:92:13 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:93:6:93:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:93:6:93:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:93:13:93:14 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:94:6:94:7 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:94:12:94:14 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:94:12:94:14 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:95:6:95:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:95:6:95:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:95:13:95:15 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:95:13:95:15 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:96:6:96:7 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:96:12:96:13 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:97:6:97:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:97:6:97:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:97:13:97:14 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:98:6:98:7 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:98:12:98:14 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:98:12:98:14 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:99:6:99:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:99:6:99:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:99:13:99:15 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:99:13:99:15 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:101:19:101:20 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:101:25:101:26 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:102:6:102:14 | ConditionalBranch: x_1_and_2 | Conditional branch instruction ConditionalBranch: x_1_and_2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:103:6:103:15 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:103:6:103:15 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| try_except.c:35:13:35:13 | ConditionalBranch: b | Conditional branch instruction ConditionalBranch: b with non-Boolean condition, in function '$@'. | try_except.c:32:6:32:6 | void h(int) | void h(int) |
missingCppType

View File

@@ -29,42 +29,4 @@ 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) |
nonUniqueIRVariable
nonBooleanOperand
| ir.c:85:7:85:8 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:86:6:86:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:86:6:86:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:88:11:88:13 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:89:6:89:6 | ConditionalBranch: y | Conditional branch instruction ConditionalBranch: y with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:90:6:90:7 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:90:6:90:7 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:92:6:92:7 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:92:12:92:13 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:93:6:93:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:93:6:93:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:93:13:93:14 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:94:6:94:7 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:94:12:94:14 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:94:12:94:14 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:95:6:95:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:95:6:95:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:95:13:95:15 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:95:13:95:15 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:96:6:96:7 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:96:12:96:13 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:97:6:97:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:97:6:97:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:97:13:97:14 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:98:6:98:7 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:98:12:98:14 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:98:12:98:14 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:99:6:99:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:99:6:99:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:99:13:99:15 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:99:13:99:15 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:101:19:101:20 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:101:25:101:26 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:102:6:102:14 | ConditionalBranch: x_1_and_2 | Conditional branch instruction ConditionalBranch: x_1_and_2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:103:6:103:15 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:103:6:103:15 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| try_except.c:35:13:35:13 | ConditionalBranch: b | Conditional branch instruction ConditionalBranch: b with non-Boolean condition, in function '$@'. | try_except.c:32:6:32:6 | void h(int) | void h(int) |
missingCppType

View File

@@ -81,26 +81,4 @@ void raise_access_violation() {
ExRaiseAccessViolation(1);
}
void branch_on_integral_in_c(int x1, int x2) {
if (x1) {}
if(!x1) {}
int y = !x1;
if(y) {}
if(!y) {}
if(x1 && x2) {}
if(!x1 && x2) {}
if(x1 && !x2) {}
if(!x1 && !x2) {}
if(x1 || x2) {}
if(!x1 || x2) {}
if(x1 || !x2) {}
if(!x1 || !x2) {}
int x_1_and_2 = x1 && x2;
if(x_1_and_2) {}
if(!x_1_and_2) {}
}
// semmle-extractor-options: --microsoft

View File

@@ -2695,26 +2695,4 @@ int requires_use() {
}
void branch_on_integral_in_cpp(int x1, int x2) {
if (x1) {}
if(!x1) {}
int y = !x1;
if(y) {}
if(!y) {}
if(x1 && x2) {}
if(!x1 && x2) {}
if(x1 && !x2) {}
if(!x1 && !x2) {}
if(x1 || x2) {}
if(!x1 || x2) {}
if(x1 || !x2) {}
if(!x1 || !x2) {}
int x_1_and_2 = x1 && x2;
if(x_1_and_2) {}
if(!x_1_and_2) {}
}
// semmle-extractor-options: -std=c++20 --clang

View File

@@ -38,42 +38,4 @@ 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) |
nonUniqueIRVariable
nonBooleanOperand
| ir.c:85:7:85:8 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:86:6:86:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:86:6:86:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:88:11:88:13 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:89:6:89:6 | ConditionalBranch: y | Conditional branch instruction ConditionalBranch: y with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:90:6:90:7 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:90:6:90:7 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:92:6:92:7 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:92:12:92:13 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:93:6:93:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:93:6:93:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:93:13:93:14 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:94:6:94:7 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:94:12:94:14 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:94:12:94:14 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:95:6:95:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:95:6:95:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:95:13:95:15 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:95:13:95:15 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:96:6:96:7 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:96:12:96:13 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:97:6:97:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:97:6:97:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:97:13:97:14 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:98:6:98:7 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:98:12:98:14 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:98:12:98:14 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:99:6:99:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:99:6:99:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:99:13:99:15 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:99:13:99:15 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:101:19:101:20 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:101:25:101:26 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:102:6:102:14 | ConditionalBranch: x_1_and_2 | Conditional branch instruction ConditionalBranch: x_1_and_2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:103:6:103:15 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:103:6:103:15 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| try_except.c:35:13:35:13 | ConditionalBranch: b | Conditional branch instruction ConditionalBranch: b with non-Boolean condition, in function '$@'. | try_except.c:32:6:32:6 | void h(int) | void h(int) |
missingCppType

View File

@@ -3095,276 +3095,6 @@ ir.c:
# 80| v80_7(void) = ReturnVoid :
#-----| Goto -> Block 1
# 84| void branch_on_integral_in_c(int, int)
# 84| Block 0
# 84| v84_1(void) = EnterFunction :
# 84| mu84_2(unknown) = AliasedDefinition :
# 84| mu84_3(unknown) = InitializeNonLocal :
# 84| r84_4(glval<int>) = VariableAddress[x1] :
# 84| mu84_5(int) = InitializeParameter[x1] : &:r84_4
# 84| r84_6(glval<int>) = VariableAddress[x2] :
# 84| mu84_7(int) = InitializeParameter[x2] : &:r84_6
# 85| r85_1(glval<int>) = VariableAddress[x1] :
# 85| r85_2(int) = Load[x1] : &:r85_1, ~m?
# 85| v85_3(void) = ConditionalBranch : r85_2
#-----| False -> Block 2
#-----| True -> Block 1
# 85| Block 1
# 85| v85_4(void) = NoOp :
#-----| Goto -> Block 2
# 86| Block 2
# 86| r86_1(glval<int>) = VariableAddress[x1] :
# 86| r86_2(int) = Load[x1] : &:r86_1, ~m?
# 86| r86_3(int) = LogicalNot : r86_2
# 86| v86_4(void) = ConditionalBranch : r86_3
#-----| False -> Block 4
#-----| True -> Block 3
# 86| Block 3
# 86| v86_5(void) = NoOp :
#-----| Goto -> Block 4
# 88| Block 4
# 88| r88_1(glval<int>) = VariableAddress[y] :
# 88| r88_2(glval<int>) = VariableAddress[x1] :
# 88| r88_3(int) = Load[x1] : &:r88_2, ~m?
# 88| r88_4(int) = LogicalNot : r88_3
# 88| mu88_5(int) = Store[y] : &:r88_1, r88_4
# 89| r89_1(glval<int>) = VariableAddress[y] :
# 89| r89_2(int) = Load[y] : &:r89_1, ~m?
# 89| v89_3(void) = ConditionalBranch : r89_2
#-----| False -> Block 6
#-----| True -> Block 5
# 89| Block 5
# 89| v89_4(void) = NoOp :
#-----| Goto -> Block 6
# 90| Block 6
# 90| r90_1(glval<int>) = VariableAddress[y] :
# 90| r90_2(int) = Load[y] : &:r90_1, ~m?
# 90| r90_3(int) = LogicalNot : r90_2
# 90| v90_4(void) = ConditionalBranch : r90_3
#-----| False -> Block 8
#-----| True -> Block 7
# 90| Block 7
# 90| v90_5(void) = NoOp :
#-----| Goto -> Block 8
# 92| Block 8
# 92| r92_1(glval<int>) = VariableAddress[x1] :
# 92| r92_2(int) = Load[x1] : &:r92_1, ~m?
# 92| v92_3(void) = ConditionalBranch : r92_2
#-----| False -> Block 11
#-----| True -> Block 9
# 92| Block 9
# 92| r92_4(glval<int>) = VariableAddress[x2] :
# 92| r92_5(int) = Load[x2] : &:r92_4, ~m?
# 92| v92_6(void) = ConditionalBranch : r92_5
#-----| False -> Block 11
#-----| True -> Block 10
# 92| Block 10
# 92| v92_7(void) = NoOp :
#-----| Goto -> Block 11
# 93| Block 11
# 93| r93_1(glval<int>) = VariableAddress[x1] :
# 93| r93_2(int) = Load[x1] : &:r93_1, ~m?
# 93| r93_3(int) = LogicalNot : r93_2
# 93| v93_4(void) = ConditionalBranch : r93_3
#-----| False -> Block 14
#-----| True -> Block 12
# 93| Block 12
# 93| r93_5(glval<int>) = VariableAddress[x2] :
# 93| r93_6(int) = Load[x2] : &:r93_5, ~m?
# 93| v93_7(void) = ConditionalBranch : r93_6
#-----| False -> Block 14
#-----| True -> Block 13
# 93| Block 13
# 93| v93_8(void) = NoOp :
#-----| Goto -> Block 14
# 94| Block 14
# 94| r94_1(glval<int>) = VariableAddress[x1] :
# 94| r94_2(int) = Load[x1] : &:r94_1, ~m?
# 94| v94_3(void) = ConditionalBranch : r94_2
#-----| False -> Block 17
#-----| True -> Block 15
# 94| Block 15
# 94| r94_4(glval<int>) = VariableAddress[x2] :
# 94| r94_5(int) = Load[x2] : &:r94_4, ~m?
# 94| r94_6(int) = LogicalNot : r94_5
# 94| v94_7(void) = ConditionalBranch : r94_6
#-----| False -> Block 17
#-----| True -> Block 16
# 94| Block 16
# 94| v94_8(void) = NoOp :
#-----| Goto -> Block 17
# 95| Block 17
# 95| r95_1(glval<int>) = VariableAddress[x1] :
# 95| r95_2(int) = Load[x1] : &:r95_1, ~m?
# 95| r95_3(int) = LogicalNot : r95_2
# 95| v95_4(void) = ConditionalBranch : r95_3
#-----| False -> Block 20
#-----| True -> Block 18
# 95| Block 18
# 95| r95_5(glval<int>) = VariableAddress[x2] :
# 95| r95_6(int) = Load[x2] : &:r95_5, ~m?
# 95| r95_7(int) = LogicalNot : r95_6
# 95| v95_8(void) = ConditionalBranch : r95_7
#-----| False -> Block 20
#-----| True -> Block 19
# 95| Block 19
# 95| v95_9(void) = NoOp :
#-----| Goto -> Block 20
# 96| Block 20
# 96| r96_1(glval<int>) = VariableAddress[x1] :
# 96| r96_2(int) = Load[x1] : &:r96_1, ~m?
# 96| v96_3(void) = ConditionalBranch : r96_2
#-----| False -> Block 21
#-----| True -> Block 22
# 96| Block 21
# 96| r96_4(glval<int>) = VariableAddress[x2] :
# 96| r96_5(int) = Load[x2] : &:r96_4, ~m?
# 96| v96_6(void) = ConditionalBranch : r96_5
#-----| False -> Block 23
#-----| True -> Block 22
# 96| Block 22
# 96| v96_7(void) = NoOp :
#-----| Goto -> Block 23
# 97| Block 23
# 97| r97_1(glval<int>) = VariableAddress[x1] :
# 97| r97_2(int) = Load[x1] : &:r97_1, ~m?
# 97| r97_3(int) = LogicalNot : r97_2
# 97| v97_4(void) = ConditionalBranch : r97_3
#-----| False -> Block 24
#-----| True -> Block 25
# 97| Block 24
# 97| r97_5(glval<int>) = VariableAddress[x2] :
# 97| r97_6(int) = Load[x2] : &:r97_5, ~m?
# 97| v97_7(void) = ConditionalBranch : r97_6
#-----| False -> Block 26
#-----| True -> Block 25
# 97| Block 25
# 97| v97_8(void) = NoOp :
#-----| Goto -> Block 26
# 98| Block 26
# 98| r98_1(glval<int>) = VariableAddress[x1] :
# 98| r98_2(int) = Load[x1] : &:r98_1, ~m?
# 98| v98_3(void) = ConditionalBranch : r98_2
#-----| False -> Block 27
#-----| True -> Block 28
# 98| Block 27
# 98| r98_4(glval<int>) = VariableAddress[x2] :
# 98| r98_5(int) = Load[x2] : &:r98_4, ~m?
# 98| r98_6(int) = LogicalNot : r98_5
# 98| v98_7(void) = ConditionalBranch : r98_6
#-----| False -> Block 29
#-----| True -> Block 28
# 98| Block 28
# 98| v98_8(void) = NoOp :
#-----| Goto -> Block 29
# 99| Block 29
# 99| r99_1(glval<int>) = VariableAddress[x1] :
# 99| r99_2(int) = Load[x1] : &:r99_1, ~m?
# 99| r99_3(int) = LogicalNot : r99_2
# 99| v99_4(void) = ConditionalBranch : r99_3
#-----| False -> Block 30
#-----| True -> Block 31
# 99| Block 30
# 99| r99_5(glval<int>) = VariableAddress[x2] :
# 99| r99_6(int) = Load[x2] : &:r99_5, ~m?
# 99| r99_7(int) = LogicalNot : r99_6
# 99| v99_8(void) = ConditionalBranch : r99_7
#-----| False -> Block 32
#-----| True -> Block 31
# 99| Block 31
# 99| v99_9(void) = NoOp :
#-----| Goto -> Block 32
# 101| Block 32
# 101| r101_1(glval<int>) = VariableAddress[x_1_and_2] :
# 101| r101_2(glval<int>) = VariableAddress[x1] :
# 101| r101_3(int) = Load[x1] : &:r101_2, ~m?
# 101| v101_4(void) = ConditionalBranch : r101_3
#-----| False -> Block 33
#-----| True -> Block 36
# 101| Block 33
# 101| r101_5(glval<int>) = VariableAddress[#temp101:19] :
# 101| r101_6(int) = Constant[0] :
# 101| mu101_7(int) = Store[#temp101:19] : &:r101_5, r101_6
#-----| Goto -> Block 34
# 101| Block 34
# 101| r101_8(glval<int>) = VariableAddress[#temp101:19] :
# 101| r101_9(int) = Load[#temp101:19] : &:r101_8, ~m?
# 101| mu101_10(int) = Store[x_1_and_2] : &:r101_1, r101_9
# 102| r102_1(glval<int>) = VariableAddress[x_1_and_2] :
# 102| r102_2(int) = Load[x_1_and_2] : &:r102_1, ~m?
# 102| v102_3(void) = ConditionalBranch : r102_2
#-----| False -> Block 38
#-----| True -> Block 37
# 101| Block 35
# 101| r101_11(glval<int>) = VariableAddress[#temp101:19] :
# 101| r101_12(int) = Constant[1] :
# 101| mu101_13(int) = Store[#temp101:19] : &:r101_11, r101_12
#-----| Goto -> Block 34
# 101| Block 36
# 101| r101_14(glval<int>) = VariableAddress[x2] :
# 101| r101_15(int) = Load[x2] : &:r101_14, ~m?
# 101| v101_16(void) = ConditionalBranch : r101_15
#-----| False -> Block 33
#-----| True -> Block 35
# 102| Block 37
# 102| v102_4(void) = NoOp :
#-----| Goto -> Block 38
# 103| Block 38
# 103| r103_1(glval<int>) = VariableAddress[x_1_and_2] :
# 103| r103_2(int) = Load[x_1_and_2] : &:r103_1, ~m?
# 103| r103_3(int) = LogicalNot : r103_2
# 103| v103_4(void) = ConditionalBranch : r103_3
#-----| False -> Block 40
#-----| True -> Block 39
# 103| Block 39
# 103| v103_5(void) = NoOp :
#-----| Goto -> Block 40
# 104| Block 40
# 104| v104_1(void) = NoOp :
# 84| v84_8(void) = ReturnVoid :
# 84| v84_9(void) = AliasedUse : ~m?
# 84| v84_10(void) = ExitFunction :
ir.cpp:
# 1| void Constants()
# 1| Block 0
@@ -17709,328 +17439,6 @@ ir.cpp:
# 2691| v2691_6(void) = AliasedUse : ~m?
# 2691| v2691_7(void) = ExitFunction :
# 2698| void branch_on_integral_in_cpp(int, int)
# 2698| Block 0
# 2698| v2698_1(void) = EnterFunction :
# 2698| mu2698_2(unknown) = AliasedDefinition :
# 2698| mu2698_3(unknown) = InitializeNonLocal :
# 2698| r2698_4(glval<int>) = VariableAddress[x1] :
# 2698| mu2698_5(int) = InitializeParameter[x1] : &:r2698_4
# 2698| r2698_6(glval<int>) = VariableAddress[x2] :
# 2698| mu2698_7(int) = InitializeParameter[x2] : &:r2698_6
# 2699| r2699_1(glval<int>) = VariableAddress[x1] :
# 2699| r2699_2(int) = Load[x1] : &:r2699_1, ~m?
# 2699| r2699_3(int) = Constant[0] :
# 2699| r2699_4(bool) = CompareNE : r2699_2, r2699_3
# 2699| v2699_5(void) = ConditionalBranch : r2699_4
#-----| False -> Block 2
#-----| True -> Block 1
# 2699| Block 1
# 2699| v2699_6(void) = NoOp :
#-----| Goto -> Block 2
# 2700| Block 2
# 2700| r2700_1(glval<int>) = VariableAddress[x1] :
# 2700| r2700_2(int) = Load[x1] : &:r2700_1, ~m?
# 2700| r2700_3(int) = Constant[0] :
# 2700| r2700_4(bool) = CompareNE : r2700_2, r2700_3
# 2700| r2700_5(bool) = LogicalNot : r2700_4
# 2700| v2700_6(void) = ConditionalBranch : r2700_5
#-----| False -> Block 4
#-----| True -> Block 3
# 2700| Block 3
# 2700| v2700_7(void) = NoOp :
#-----| Goto -> Block 4
# 2702| Block 4
# 2702| r2702_1(glval<int>) = VariableAddress[y] :
# 2702| r2702_2(glval<int>) = VariableAddress[x1] :
# 2702| r2702_3(int) = Load[x1] : &:r2702_2, ~m?
# 2702| r2702_4(int) = Constant[0] :
# 2702| r2702_5(bool) = CompareNE : r2702_3, r2702_4
# 2702| r2702_6(bool) = LogicalNot : r2702_5
# 2702| r2702_7(int) = Convert : r2702_6
# 2702| mu2702_8(int) = Store[y] : &:r2702_1, r2702_7
# 2703| r2703_1(glval<int>) = VariableAddress[y] :
# 2703| r2703_2(int) = Load[y] : &:r2703_1, ~m?
# 2703| r2703_3(int) = Constant[0] :
# 2703| r2703_4(bool) = CompareNE : r2703_2, r2703_3
# 2703| v2703_5(void) = ConditionalBranch : r2703_4
#-----| False -> Block 6
#-----| True -> Block 5
# 2703| Block 5
# 2703| v2703_6(void) = NoOp :
#-----| Goto -> Block 6
# 2704| Block 6
# 2704| r2704_1(glval<int>) = VariableAddress[y] :
# 2704| r2704_2(int) = Load[y] : &:r2704_1, ~m?
# 2704| r2704_3(int) = Constant[0] :
# 2704| r2704_4(bool) = CompareNE : r2704_2, r2704_3
# 2704| r2704_5(bool) = LogicalNot : r2704_4
# 2704| v2704_6(void) = ConditionalBranch : r2704_5
#-----| False -> Block 8
#-----| True -> Block 7
# 2704| Block 7
# 2704| v2704_7(void) = NoOp :
#-----| Goto -> Block 8
# 2706| Block 8
# 2706| r2706_1(glval<int>) = VariableAddress[x1] :
# 2706| r2706_2(int) = Load[x1] : &:r2706_1, ~m?
# 2706| r2706_3(int) = Constant[0] :
# 2706| r2706_4(bool) = CompareNE : r2706_2, r2706_3
# 2706| v2706_5(void) = ConditionalBranch : r2706_4
#-----| False -> Block 11
#-----| True -> Block 9
# 2706| Block 9
# 2706| r2706_6(glval<int>) = VariableAddress[x2] :
# 2706| r2706_7(int) = Load[x2] : &:r2706_6, ~m?
# 2706| r2706_8(int) = Constant[0] :
# 2706| r2706_9(bool) = CompareNE : r2706_7, r2706_8
# 2706| v2706_10(void) = ConditionalBranch : r2706_9
#-----| False -> Block 11
#-----| True -> Block 10
# 2706| Block 10
# 2706| v2706_11(void) = NoOp :
#-----| Goto -> Block 11
# 2707| Block 11
# 2707| r2707_1(glval<int>) = VariableAddress[x1] :
# 2707| r2707_2(int) = Load[x1] : &:r2707_1, ~m?
# 2707| r2707_3(int) = Constant[0] :
# 2707| r2707_4(bool) = CompareNE : r2707_2, r2707_3
# 2707| r2707_5(bool) = LogicalNot : r2707_4
# 2707| v2707_6(void) = ConditionalBranch : r2707_5
#-----| False -> Block 14
#-----| True -> Block 12
# 2707| Block 12
# 2707| r2707_7(glval<int>) = VariableAddress[x2] :
# 2707| r2707_8(int) = Load[x2] : &:r2707_7, ~m?
# 2707| r2707_9(int) = Constant[0] :
# 2707| r2707_10(bool) = CompareNE : r2707_8, r2707_9
# 2707| v2707_11(void) = ConditionalBranch : r2707_10
#-----| False -> Block 14
#-----| True -> Block 13
# 2707| Block 13
# 2707| v2707_12(void) = NoOp :
#-----| Goto -> Block 14
# 2708| Block 14
# 2708| r2708_1(glval<int>) = VariableAddress[x1] :
# 2708| r2708_2(int) = Load[x1] : &:r2708_1, ~m?
# 2708| r2708_3(int) = Constant[0] :
# 2708| r2708_4(bool) = CompareNE : r2708_2, r2708_3
# 2708| v2708_5(void) = ConditionalBranch : r2708_4
#-----| False -> Block 17
#-----| True -> Block 15
# 2708| Block 15
# 2708| r2708_6(glval<int>) = VariableAddress[x2] :
# 2708| r2708_7(int) = Load[x2] : &:r2708_6, ~m?
# 2708| r2708_8(int) = Constant[0] :
# 2708| r2708_9(bool) = CompareNE : r2708_7, r2708_8
# 2708| r2708_10(bool) = LogicalNot : r2708_9
# 2708| v2708_11(void) = ConditionalBranch : r2708_10
#-----| False -> Block 17
#-----| True -> Block 16
# 2708| Block 16
# 2708| v2708_12(void) = NoOp :
#-----| Goto -> Block 17
# 2709| Block 17
# 2709| r2709_1(glval<int>) = VariableAddress[x1] :
# 2709| r2709_2(int) = Load[x1] : &:r2709_1, ~m?
# 2709| r2709_3(int) = Constant[0] :
# 2709| r2709_4(bool) = CompareNE : r2709_2, r2709_3
# 2709| r2709_5(bool) = LogicalNot : r2709_4
# 2709| v2709_6(void) = ConditionalBranch : r2709_5
#-----| False -> Block 20
#-----| True -> Block 18
# 2709| Block 18
# 2709| r2709_7(glval<int>) = VariableAddress[x2] :
# 2709| r2709_8(int) = Load[x2] : &:r2709_7, ~m?
# 2709| r2709_9(int) = Constant[0] :
# 2709| r2709_10(bool) = CompareNE : r2709_8, r2709_9
# 2709| r2709_11(bool) = LogicalNot : r2709_10
# 2709| v2709_12(void) = ConditionalBranch : r2709_11
#-----| False -> Block 20
#-----| True -> Block 19
# 2709| Block 19
# 2709| v2709_13(void) = NoOp :
#-----| Goto -> Block 20
# 2710| Block 20
# 2710| r2710_1(glval<int>) = VariableAddress[x1] :
# 2710| r2710_2(int) = Load[x1] : &:r2710_1, ~m?
# 2710| r2710_3(int) = Constant[0] :
# 2710| r2710_4(bool) = CompareNE : r2710_2, r2710_3
# 2710| v2710_5(void) = ConditionalBranch : r2710_4
#-----| False -> Block 21
#-----| True -> Block 22
# 2710| Block 21
# 2710| r2710_6(glval<int>) = VariableAddress[x2] :
# 2710| r2710_7(int) = Load[x2] : &:r2710_6, ~m?
# 2710| r2710_8(int) = Constant[0] :
# 2710| r2710_9(bool) = CompareNE : r2710_7, r2710_8
# 2710| v2710_10(void) = ConditionalBranch : r2710_9
#-----| False -> Block 23
#-----| True -> Block 22
# 2710| Block 22
# 2710| v2710_11(void) = NoOp :
#-----| Goto -> Block 23
# 2711| Block 23
# 2711| r2711_1(glval<int>) = VariableAddress[x1] :
# 2711| r2711_2(int) = Load[x1] : &:r2711_1, ~m?
# 2711| r2711_3(int) = Constant[0] :
# 2711| r2711_4(bool) = CompareNE : r2711_2, r2711_3
# 2711| r2711_5(bool) = LogicalNot : r2711_4
# 2711| v2711_6(void) = ConditionalBranch : r2711_5
#-----| False -> Block 24
#-----| True -> Block 25
# 2711| Block 24
# 2711| r2711_7(glval<int>) = VariableAddress[x2] :
# 2711| r2711_8(int) = Load[x2] : &:r2711_7, ~m?
# 2711| r2711_9(int) = Constant[0] :
# 2711| r2711_10(bool) = CompareNE : r2711_8, r2711_9
# 2711| v2711_11(void) = ConditionalBranch : r2711_10
#-----| False -> Block 26
#-----| True -> Block 25
# 2711| Block 25
# 2711| v2711_12(void) = NoOp :
#-----| Goto -> Block 26
# 2712| Block 26
# 2712| r2712_1(glval<int>) = VariableAddress[x1] :
# 2712| r2712_2(int) = Load[x1] : &:r2712_1, ~m?
# 2712| r2712_3(int) = Constant[0] :
# 2712| r2712_4(bool) = CompareNE : r2712_2, r2712_3
# 2712| v2712_5(void) = ConditionalBranch : r2712_4
#-----| False -> Block 27
#-----| True -> Block 28
# 2712| Block 27
# 2712| r2712_6(glval<int>) = VariableAddress[x2] :
# 2712| r2712_7(int) = Load[x2] : &:r2712_6, ~m?
# 2712| r2712_8(int) = Constant[0] :
# 2712| r2712_9(bool) = CompareNE : r2712_7, r2712_8
# 2712| r2712_10(bool) = LogicalNot : r2712_9
# 2712| v2712_11(void) = ConditionalBranch : r2712_10
#-----| False -> Block 29
#-----| True -> Block 28
# 2712| Block 28
# 2712| v2712_12(void) = NoOp :
#-----| Goto -> Block 29
# 2713| Block 29
# 2713| r2713_1(glval<int>) = VariableAddress[x1] :
# 2713| r2713_2(int) = Load[x1] : &:r2713_1, ~m?
# 2713| r2713_3(int) = Constant[0] :
# 2713| r2713_4(bool) = CompareNE : r2713_2, r2713_3
# 2713| r2713_5(bool) = LogicalNot : r2713_4
# 2713| v2713_6(void) = ConditionalBranch : r2713_5
#-----| False -> Block 30
#-----| True -> Block 31
# 2713| Block 30
# 2713| r2713_7(glval<int>) = VariableAddress[x2] :
# 2713| r2713_8(int) = Load[x2] : &:r2713_7, ~m?
# 2713| r2713_9(int) = Constant[0] :
# 2713| r2713_10(bool) = CompareNE : r2713_8, r2713_9
# 2713| r2713_11(bool) = LogicalNot : r2713_10
# 2713| v2713_12(void) = ConditionalBranch : r2713_11
#-----| False -> Block 32
#-----| True -> Block 31
# 2713| Block 31
# 2713| v2713_13(void) = NoOp :
#-----| Goto -> Block 32
# 2715| Block 32
# 2715| r2715_1(glval<int>) = VariableAddress[x_1_and_2] :
# 2715| r2715_2(glval<int>) = VariableAddress[x1] :
# 2715| r2715_3(int) = Load[x1] : &:r2715_2, ~m?
# 2715| r2715_4(int) = Constant[0] :
# 2715| r2715_5(bool) = CompareNE : r2715_3, r2715_4
# 2715| v2715_6(void) = ConditionalBranch : r2715_5
#-----| False -> Block 33
#-----| True -> Block 36
# 2715| Block 33
# 2715| r2715_7(glval<bool>) = VariableAddress[#temp2715:19] :
# 2715| r2715_8(bool) = Constant[0] :
# 2715| mu2715_9(bool) = Store[#temp2715:19] : &:r2715_7, r2715_8
#-----| Goto -> Block 34
# 2715| Block 34
# 2715| r2715_10(glval<bool>) = VariableAddress[#temp2715:19] :
# 2715| r2715_11(bool) = Load[#temp2715:19] : &:r2715_10, ~m?
# 2715| r2715_12(int) = Convert : r2715_11
# 2715| mu2715_13(int) = Store[x_1_and_2] : &:r2715_1, r2715_12
# 2716| r2716_1(glval<int>) = VariableAddress[x_1_and_2] :
# 2716| r2716_2(int) = Load[x_1_and_2] : &:r2716_1, ~m?
# 2716| r2716_3(int) = Constant[0] :
# 2716| r2716_4(bool) = CompareNE : r2716_2, r2716_3
# 2716| v2716_5(void) = ConditionalBranch : r2716_4
#-----| False -> Block 38
#-----| True -> Block 37
# 2715| Block 35
# 2715| r2715_14(glval<bool>) = VariableAddress[#temp2715:19] :
# 2715| r2715_15(bool) = Constant[1] :
# 2715| mu2715_16(bool) = Store[#temp2715:19] : &:r2715_14, r2715_15
#-----| Goto -> Block 34
# 2715| Block 36
# 2715| r2715_17(glval<int>) = VariableAddress[x2] :
# 2715| r2715_18(int) = Load[x2] : &:r2715_17, ~m?
# 2715| r2715_19(int) = Constant[0] :
# 2715| r2715_20(bool) = CompareNE : r2715_18, r2715_19
# 2715| v2715_21(void) = ConditionalBranch : r2715_20
#-----| False -> Block 33
#-----| True -> Block 35
# 2716| Block 37
# 2716| v2716_6(void) = NoOp :
#-----| Goto -> Block 38
# 2717| Block 38
# 2717| r2717_1(glval<int>) = VariableAddress[x_1_and_2] :
# 2717| r2717_2(int) = Load[x_1_and_2] : &:r2717_1, ~m?
# 2717| r2717_3(int) = Constant[0] :
# 2717| r2717_4(bool) = CompareNE : r2717_2, r2717_3
# 2717| r2717_5(bool) = LogicalNot : r2717_4
# 2717| v2717_6(void) = ConditionalBranch : r2717_5
#-----| False -> Block 40
#-----| True -> Block 39
# 2717| Block 39
# 2717| v2717_7(void) = NoOp :
#-----| Goto -> Block 40
# 2718| Block 40
# 2718| v2718_1(void) = NoOp :
# 2698| v2698_8(void) = ReturnVoid :
# 2698| v2698_9(void) = AliasedUse : ~m?
# 2698| v2698_10(void) = ExitFunction :
many-defs-per-use.cpp:
# 34| void many_defs_per_use()
# 34| Block 0

View File

@@ -29,42 +29,4 @@ 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) |
nonUniqueIRVariable
nonBooleanOperand
| ir.c:85:7:85:8 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:86:6:86:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:86:6:86:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:88:11:88:13 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:89:6:89:6 | ConditionalBranch: y | Conditional branch instruction ConditionalBranch: y with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:90:6:90:7 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:90:6:90:7 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:92:6:92:7 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:92:12:92:13 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:93:6:93:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:93:6:93:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:93:13:93:14 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:94:6:94:7 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:94:12:94:14 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:94:12:94:14 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:95:6:95:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:95:6:95:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:95:13:95:15 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:95:13:95:15 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:96:6:96:7 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:96:12:96:13 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:97:6:97:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:97:6:97:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:97:13:97:14 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:98:6:98:7 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:98:12:98:14 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:98:12:98:14 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:99:6:99:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:99:6:99:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:99:13:99:15 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:99:13:99:15 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:101:19:101:20 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:101:25:101:26 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:102:6:102:14 | ConditionalBranch: x_1_and_2 | Conditional branch instruction ConditionalBranch: x_1_and_2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:103:6:103:15 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:103:6:103:15 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| try_except.c:35:13:35:13 | ConditionalBranch: b | Conditional branch instruction ConditionalBranch: b with non-Boolean condition, in function '$@'. | try_except.c:32:6:32:6 | void h(int) | void h(int) |
missingCppType

View File

@@ -29,42 +29,4 @@ 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) |
nonUniqueIRVariable
nonBooleanOperand
| ir.c:85:7:85:8 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:86:6:86:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:86:6:86:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:88:11:88:13 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:89:6:89:6 | ConditionalBranch: y | Conditional branch instruction ConditionalBranch: y with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:90:6:90:7 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:90:6:90:7 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:92:6:92:7 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:92:12:92:13 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:93:6:93:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:93:6:93:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:93:13:93:14 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:94:6:94:7 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:94:12:94:14 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:94:12:94:14 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:95:6:95:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:95:6:95:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:95:13:95:15 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:95:13:95:15 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:96:6:96:7 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:96:12:96:13 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:97:6:97:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:97:6:97:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:97:13:97:14 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:98:6:98:7 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:98:12:98:14 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:98:12:98:14 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:99:6:99:8 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:99:6:99:8 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:99:13:99:15 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:99:13:99:15 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:101:19:101:20 | ConditionalBranch: x1 | Conditional branch instruction ConditionalBranch: x1 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:101:25:101:26 | ConditionalBranch: x2 | Conditional branch instruction ConditionalBranch: x2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:102:6:102:14 | ConditionalBranch: x_1_and_2 | Conditional branch instruction ConditionalBranch: x_1_and_2 with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:103:6:103:15 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| ir.c:103:6:103:15 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | ir.c:84:6:84:28 | void branch_on_integral_in_c(int, int) | void branch_on_integral_in_c(int, int) |
| try_except.c:35:13:35:13 | ConditionalBranch: b | Conditional branch instruction ConditionalBranch: b with non-Boolean condition, in function '$@'. | try_except.c:32:6:32:6 | void h(int) | void h(int) |
missingCppType

View File

@@ -28,5 +28,4 @@ nonUniqueEnclosingIRFunction
fieldAddressOnNonPointer
thisArgumentIsNonPointer
nonUniqueIRVariable
nonBooleanOperand
missingCppType

View File

@@ -28,5 +28,4 @@ nonUniqueEnclosingIRFunction
fieldAddressOnNonPointer
thisArgumentIsNonPointer
nonUniqueIRVariable
nonBooleanOperand
missingCppType

View File

@@ -28,5 +28,4 @@ nonUniqueEnclosingIRFunction
fieldAddressOnNonPointer
thisArgumentIsNonPointer
nonUniqueIRVariable
nonBooleanOperand
missingCppType

View File

@@ -28,5 +28,4 @@ nonUniqueEnclosingIRFunction
fieldAddressOnNonPointer
thisArgumentIsNonPointer
nonUniqueIRVariable
nonBooleanOperand
missingCppType

View File

@@ -33,271 +33,4 @@ thisArgumentIsNonPointer
| pointer_to_member.cpp:23:5:23:54 | Call: call to expression | Call instruction 'Call: call to expression' has a `this` argument operand that is not an address, in function '$@'. | pointer_to_member.cpp:14:5:14:9 | int usePM(int PM::*) | int usePM(int PM::*) |
| pointer_to_member.cpp:24:5:24:49 | Call: call to expression | Call instruction 'Call: call to expression' has a `this` argument operand that is not an address, in function '$@'. | pointer_to_member.cpp:14:5:14:9 | int usePM(int PM::*) | int usePM(int PM::*) |
nonUniqueIRVariable
nonBooleanOperand
| break_labels.c:4:9:4:14 | ConditionalBranch: ... != ... | Conditional branch instruction ConditionalBranch: ... != ... with non-Boolean condition, in function '$@'. | break_labels.c:2:12:2:12 | int f(int) | int f(int) |
| break_labels.c:6:16:6:21 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | break_labels.c:2:12:2:12 | int f(int) | int f(int) |
| break_labels.c:7:17:7:24 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | break_labels.c:2:12:2:12 | int f(int) | int f(int) |
| break_labels.c:20:16:20:21 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | break_labels.c:16:6:16:10 | void f_for() | void f_for() |
| break_labels.c:21:13:21:18 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | break_labels.c:16:6:16:10 | void f_for() | void f_for() |
| break_labels.c:24:13:24:18 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | break_labels.c:16:6:16:10 | void f_for() | void f_for() |
| builtin.c:24:7:24:13 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | builtin.c:5:5:5:11 | int builtin(int, int) | int builtin(int, int) |
| builtin.c:28:7:28:29 | ConditionalBranch: call to __builtin_unpredictable | Conditional branch instruction ConditionalBranch: call to __builtin_unpredictable with non-Boolean condition, in function '$@'. | builtin.c:5:5:5:11 | int builtin(int, int) | int builtin(int, int) |
| builtin.c:47:7:47:22 | ConditionalBranch: call to __builtin_memchr | Conditional branch instruction ConditionalBranch: call to __builtin_memchr with non-Boolean condition, in function '$@'. | builtin.c:5:5:5:11 | int builtin(int, int) | int builtin(int, int) |
| dostmt.c:4:11:4:11 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | dostmt.c:1:6:1:17 | void always_false() | void always_false() |
| dostmt.c:28:11:28:11 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | dostmt.c:25:13:25:25 | void always_true_3() | void always_true_3() |
| dostmt.c:36:11:36:16 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | dostmt.c:32:13:32:18 | void normal() | void normal() |
| duff2.c:13:14:13:20 | ConditionalBranch: ... > ... | Conditional branch instruction ConditionalBranch: ... > ... with non-Boolean condition, in function '$@'. | duff2.c:2:6:2:12 | void duff2_8(int) | void duff2_8(int) |
| duff2.c:21:14:21:20 | ConditionalBranch: ... > ... | Conditional branch instruction ConditionalBranch: ... > ... with non-Boolean condition, in function '$@'. | duff2.c:16:6:16:12 | void duff2_2(int) | void duff2_2(int) |
| duff.c:13:22:13:28 | ConditionalBranch: ... > ... | Conditional branch instruction ConditionalBranch: ... > ... with non-Boolean condition, in function '$@'. | duff.c:2:13:2:13 | void f(int) | void f(int) |
| dummyblock.c:2:9:2:9 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | dummyblock.c:1:13:1:13 | void f() | void f() |
| ifelsestmt.c:2:6:2:6 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | ifelsestmt.c:1:13:1:26 | void always_false_1() | void always_false_1() |
| ifelsestmt.c:12:6:12:6 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | ifelsestmt.c:11:13:11:26 | void always_false_2() | void always_false_2() |
| ifelsestmt.c:20:6:20:6 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | ifelsestmt.c:19:13:19:25 | void always_true_1() | void always_true_1() |
| ifelsestmt.c:30:6:30:6 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | ifelsestmt.c:29:13:29:25 | void always_true_2() | void always_true_2() |
| ifelsestmt.c:38:6:38:11 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | ifelsestmt.c:37:13:37:18 | void normal(int, int) | void normal(int, int) |
| ifstmt.c:2:6:2:6 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | ifstmt.c:1:13:1:26 | void always_false_1() | void always_false_1() |
| ifstmt.c:9:6:9:6 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | ifstmt.c:8:13:8:26 | void always_false_2() | void always_false_2() |
| ifstmt.c:15:6:15:6 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | ifstmt.c:14:13:14:25 | void always_true_1() | void always_true_1() |
| ifstmt.c:22:6:22:6 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | ifstmt.c:21:13:21:25 | void always_true_2() | void always_true_2() |
| ifstmt.c:28:6:28:11 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | ifstmt.c:27:13:27:18 | void normal(int, int) | void normal(int, int) |
| landexpr.c:3:6:3:6 | ConditionalBranch: a | Conditional branch instruction ConditionalBranch: a with non-Boolean condition, in function '$@'. | landexpr.c:1:13:1:13 | void f() | void f() |
| landexpr.c:3:11:3:11 | ConditionalBranch: b | Conditional branch instruction ConditionalBranch: b with non-Boolean condition, in function '$@'. | landexpr.c:1:13:1:13 | void f() | void f() |
| lorexpr.c:3:6:3:6 | ConditionalBranch: a | Conditional branch instruction ConditionalBranch: a with non-Boolean condition, in function '$@'. | lorexpr.c:1:13:1:13 | void f() | void f() |
| lorexpr.c:3:11:3:11 | ConditionalBranch: b | Conditional branch instruction ConditionalBranch: b with non-Boolean condition, in function '$@'. | lorexpr.c:1:13:1:13 | void f() | void f() |
| misc.c:22:9:22:12 | ConditionalBranch: argi | Conditional branch instruction ConditionalBranch: argi with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:22:17:22:20 | ConditionalBranch: argj | Conditional branch instruction ConditionalBranch: argj with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:27:9:27:12 | ConditionalBranch: argi | Conditional branch instruction ConditionalBranch: argi with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:27:17:27:20 | ConditionalBranch: argj | Conditional branch instruction ConditionalBranch: argj with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:32:9:32:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:32:14:32:14 | ConditionalBranch: j | Conditional branch instruction ConditionalBranch: j with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:37:9:37:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:37:14:37:14 | ConditionalBranch: j | Conditional branch instruction ConditionalBranch: j with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:44:11:44:11 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:47:11:47:11 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:47:16:47:16 | ConditionalBranch: j | Conditional branch instruction ConditionalBranch: j with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:50:11:50:11 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:50:16:50:16 | ConditionalBranch: j | Conditional branch instruction ConditionalBranch: j with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:53:11:53:14 | ConditionalBranch: argi | Conditional branch instruction ConditionalBranch: argi with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:58:13:58:13 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:61:13:61:16 | ConditionalBranch: argi | Conditional branch instruction ConditionalBranch: argi with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:62:16:62:21 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:64:11:64:16 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:93:9:93:15 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | misc.c:91:6:91:33 | void gnuConditionalOmittedOperand(someStruct*) | void gnuConditionalOmittedOperand(someStruct*) |
| misc.c:94:9:94:19 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | misc.c:91:6:91:33 | void gnuConditionalOmittedOperand(someStruct*) | void gnuConditionalOmittedOperand(someStruct*) |
| misc.c:139:10:139:18 | ConditionalBranch: ... & ... | Conditional branch instruction ConditionalBranch: ... & ... with non-Boolean condition, in function '$@'. | misc.c:97:6:97:10 | void misc3() | void misc3() |
| misc.c:139:25:139:33 | ConditionalBranch: ... & ... | Conditional branch instruction ConditionalBranch: ... & ... with non-Boolean condition, in function '$@'. | misc.c:97:6:97:10 | void misc3() | void misc3() |
| misc.c:140:9:140:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:97:6:97:10 | void misc3() | void misc3() |
| misc.c:140:14:140:14 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:97:6:97:10 | void misc3() | void misc3() |
| misc.c:140:19:140:19 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:97:6:97:10 | void misc3() | void misc3() |
| misc.c:141:9:141:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:97:6:97:10 | void misc3() | void misc3() |
| misc.c:141:14:141:14 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:97:6:97:10 | void misc3() | void misc3() |
| misc.c:141:19:141:19 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:97:6:97:10 | void misc3() | void misc3() |
| misc.c:192:11:192:11 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | misc.c:191:6:191:20 | void unreachable_end() | void unreachable_end() |
| pruning.c:5:9:5:9 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | pruning.c:4:6:4:8 | void f_0() | void f_0() |
| pruning.c:13:9:13:9 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | pruning.c:12:6:12:8 | void f_1() | void f_1() |
| pruning.c:21:9:21:11 | ConditionalBranch: 256 | Conditional branch instruction ConditionalBranch: 256 with non-Boolean condition, in function '$@'. | pruning.c:20:6:20:10 | void f_256() | void f_256() |
| pruning.c:29:9:29:18 | ConditionalBranch: (uint8_t)... | Conditional branch instruction ConditionalBranch: (uint8_t)... with non-Boolean condition, in function '$@'. | pruning.c:28:6:28:16 | void f_uint8_t_0() | void f_uint8_t_0() |
| pruning.c:37:9:37:18 | ConditionalBranch: (uint8_t)... | Conditional branch instruction ConditionalBranch: (uint8_t)... with non-Boolean condition, in function '$@'. | pruning.c:36:6:36:16 | void f_uint8_t_1() | void f_uint8_t_1() |
| pruning.c:45:9:45:20 | ConditionalBranch: (uint8_t)... | Conditional branch instruction ConditionalBranch: (uint8_t)... with non-Boolean condition, in function '$@'. | pruning.c:44:6:44:18 | void f_uint8_t_256() | void f_uint8_t_256() |
| pruning.c:53:9:53:20 | ConditionalBranch: (uint8_t)... | Conditional branch instruction ConditionalBranch: (uint8_t)... with non-Boolean condition, in function '$@'. | pruning.c:52:6:52:18 | void f_uint8_t_257() | void f_uint8_t_257() |
| pruning.c:61:9:61:26 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | pruning.c:60:6:60:21 | void f_uint8_t_minus1() | void f_uint8_t_minus1() |
| pruning.c:70:9:70:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | pruning.c:68:6:68:14 | void f_v_int_0() | void f_v_int_0() |
| pruning.c:79:9:79:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | pruning.c:77:6:77:14 | void f_v_int_1() | void f_v_int_1() |
| pruning.c:88:9:88:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | pruning.c:86:6:86:16 | void f_v_int_256() | void f_v_int_256() |
| pruning.c:97:9:97:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | pruning.c:95:6:95:18 | void f_v_uint8_t_0() | void f_v_uint8_t_0() |
| pruning.c:106:9:106:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | pruning.c:104:6:104:18 | void f_v_uint8_t_1() | void f_v_uint8_t_1() |
| pruning.c:115:9:115:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | pruning.c:113:6:113:20 | void f_v_uint8_t_256() | void f_v_uint8_t_256() |
| pruning.c:124:9:124:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | pruning.c:122:6:122:20 | void f_v_uint8_t_257() | void f_v_uint8_t_257() |
| pruning.c:133:9:133:16 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | pruning.c:131:6:131:23 | void f_v_uint8_t_minus1() | void f_v_uint8_t_minus1() |
| questionexpr.c:3:6:3:11 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | questionexpr.c:1:13:1:13 | void f() | void f() |
| range_analysis.c:7:10:7:10 | ConditionalBranch: p | Conditional branch instruction ConditionalBranch: p with non-Boolean condition, in function '$@'. | range_analysis.c:5:5:5:9 | int test1(List*) | int test1(List*) |
| range_analysis.c:15:10:15:10 | ConditionalBranch: p | Conditional branch instruction ConditionalBranch: p with non-Boolean condition, in function '$@'. | range_analysis.c:13:5:13:9 | int test2(List*) | int test2(List*) |
| range_analysis.c:23:10:23:10 | ConditionalBranch: p | Conditional branch instruction ConditionalBranch: p with non-Boolean condition, in function '$@'. | range_analysis.c:21:5:21:9 | int test3(List*) | int test3(List*) |
| range_analysis.c:33:15:33:19 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:30:5:30:9 | int test4() | int test4() |
| range_analysis.c:42:15:42:19 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:39:5:39:9 | int test5() | int test5() |
| range_analysis.c:51:15:51:21 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:48:5:48:9 | int test6() | int test6() |
| range_analysis.c:58:7:58:11 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:57:5:57:9 | int test7(int) | int test7(int) |
| range_analysis.c:59:9:59:13 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:57:5:57:9 | int test7(int) | int test7(int) |
| range_analysis.c:67:7:67:15 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:66:5:66:9 | int test8(int, int) | int test8(int, int) |
| range_analysis.c:67:20:67:25 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:66:5:66:9 | int test8(int, int) | int test8(int, int) |
| range_analysis.c:68:9:68:15 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:66:5:66:9 | int test8(int, int) | int test8(int, int) |
| range_analysis.c:76:7:76:12 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | range_analysis.c:75:5:75:9 | int test9(int, int) | int test9(int, int) |
| range_analysis.c:77:9:77:13 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:75:5:75:9 | int test9(int, int) | int test9(int, int) |
| range_analysis.c:81:9:81:13 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:75:5:75:9 | int test9(int, int) | int test9(int, int) |
| range_analysis.c:89:7:89:11 | ConditionalBranch: ... > ... | Conditional branch instruction ConditionalBranch: ... > ... with non-Boolean condition, in function '$@'. | range_analysis.c:88:5:88:10 | int test10(int, int) | int test10(int, int) |
| range_analysis.c:90:9:90:13 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:88:5:88:10 | int test10(int, int) | int test10(int, int) |
| range_analysis.c:101:7:101:15 | ConditionalBranch: ... != ... | Conditional branch instruction ConditionalBranch: ... != ... with non-Boolean condition, in function '$@'. | range_analysis.c:98:5:98:10 | int test11(char*) | int test11(char*) |
| range_analysis.c:104:7:104:14 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | range_analysis.c:98:5:98:10 | int test11(char*) | int test11(char*) |
| range_analysis.c:106:9:106:17 | ConditionalBranch: ... != ... | Conditional branch instruction ConditionalBranch: ... != ... with non-Boolean condition, in function '$@'. | range_analysis.c:98:5:98:10 | int test11(char*) | int test11(char*) |
| range_analysis.c:109:9:109:16 | ConditionalBranch: ... != ... | Conditional branch instruction ConditionalBranch: ... != ... with non-Boolean condition, in function '$@'. | range_analysis.c:98:5:98:10 | int test11(char*) | int test11(char*) |
| range_analysis.c:124:11:124:36 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:122:5:122:10 | int test12() | int test12() |
| range_analysis.c:154:11:154:15 | ConditionalBranch: ... > ... | Conditional branch instruction ConditionalBranch: ... > ... with non-Boolean condition, in function '$@'. | range_analysis.c:153:11:153:16 | long long test15(long long) | long long test15(long long) |
| range_analysis.c:154:20:154:30 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | range_analysis.c:153:11:153:16 | long long test15(long long) | long long test15(long long) |
| range_analysis.c:161:7:161:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:161:17:161:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:166:7:166:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:166:17:166:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:171:7:171:13 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:171:18:171:24 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:176:7:176:13 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:176:18:176:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:181:7:181:13 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:181:18:181:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:186:7:186:13 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:186:18:186:24 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:200:7:200:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:200:17:200:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:200:28:200:33 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:200:38:200:44 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:204:7:204:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:204:17:204:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:204:28:204:33 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:204:38:204:44 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:208:7:208:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:208:17:208:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:208:28:208:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:208:40:208:46 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:212:7:212:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:212:17:212:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:212:28:212:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:212:40:212:45 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:216:7:216:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:216:17:216:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:216:28:216:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:216:40:216:46 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:228:7:228:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:228:17:228:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:228:28:228:33 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:228:38:228:44 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:232:7:232:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:232:17:232:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:232:28:232:33 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:232:38:232:44 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:236:7:236:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:236:17:236:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:236:28:236:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:236:40:236:46 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:240:7:240:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:240:17:240:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:240:28:240:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:240:40:240:45 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:244:7:244:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:244:17:244:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:244:28:244:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:244:40:244:46 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:256:7:256:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:256:19:256:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:256:30:256:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:256:40:256:46 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:260:7:260:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:260:19:260:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:260:30:260:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:260:40:260:46 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:264:7:264:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:264:19:264:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:264:30:264:37 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:264:42:264:48 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:268:7:268:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:268:19:268:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:268:30:268:37 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:268:42:268:47 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:272:7:272:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:272:19:272:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:272:30:272:37 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:272:42:272:48 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:284:7:284:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:284:19:284:24 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:284:29:284:34 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:284:39:284:45 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:288:7:288:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:288:19:288:24 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:288:29:288:34 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:288:39:288:45 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:292:7:292:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:292:19:292:24 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:292:29:292:36 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:292:41:292:47 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:296:7:296:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:296:19:296:24 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:296:29:296:36 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:296:41:296:46 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:300:7:300:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:300:19:300:24 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:300:29:300:36 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:300:41:300:47 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:312:7:312:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:312:19:312:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:312:30:312:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:312:40:312:46 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:316:7:316:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:316:19:316:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:316:30:316:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:316:40:316:46 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:320:7:320:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:320:19:320:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:320:30:320:37 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:320:42:320:48 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:324:7:324:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:324:19:324:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:324:30:324:37 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:324:42:324:47 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:328:7:328:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:328:19:328:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:328:30:328:37 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:328:42:328:48 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:338:7:338:11 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:336:5:336:10 | int test16(int) | int test16(int) |
| range_analysis.c:342:10:342:14 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:336:5:336:10 | int test16(int) | int test16(int) |
| range_analysis.c:346:7:346:11 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:336:5:336:10 | int test16(int) | int test16(int) |
| range_analysis.c:347:9:347:14 | ConditionalBranch: ... > ... | Conditional branch instruction ConditionalBranch: ... > ... with non-Boolean condition, in function '$@'. | range_analysis.c:336:5:336:10 | int test16(int) | int test16(int) |
| range_analysis.c:357:8:357:14 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:355:14:355:27 | unsigned int test_ternary01(unsigned int) | unsigned int test_ternary01(unsigned int) |
| range_analysis.c:358:8:358:15 | ConditionalBranch: ... >= ... | Conditional branch instruction ConditionalBranch: ... >= ... with non-Boolean condition, in function '$@'. | range_analysis.c:355:14:355:27 | unsigned int test_ternary01(unsigned int) | unsigned int test_ternary01(unsigned int) |
| range_analysis.c:365:7:365:13 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:355:14:355:27 | unsigned int test_ternary01(unsigned int) | unsigned int test_ternary01(unsigned int) |
| range_analysis.c:366:10:366:15 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | range_analysis.c:355:14:355:27 | unsigned int test_ternary01(unsigned int) | unsigned int test_ternary01(unsigned int) |
| range_analysis.c:367:10:367:17 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | range_analysis.c:355:14:355:27 | unsigned int test_ternary01(unsigned int) | unsigned int test_ternary01(unsigned int) |
| range_analysis.c:368:10:368:21 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | range_analysis.c:355:14:355:27 | unsigned int test_ternary01(unsigned int) | unsigned int test_ternary01(unsigned int) |
| range_analysis.c:369:10:369:36 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | range_analysis.c:355:14:355:27 | unsigned int test_ternary01(unsigned int) | unsigned int test_ternary01(unsigned int) |
| range_analysis.c:370:10:370:38 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | range_analysis.c:355:14:355:27 | unsigned int test_ternary01(unsigned int) | unsigned int test_ternary01(unsigned int) |
| range_analysis.c:371:10:371:39 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | range_analysis.c:355:14:355:27 | unsigned int test_ternary01(unsigned int) | unsigned int test_ternary01(unsigned int) |
| range_analysis.c:379:8:379:14 | ConditionalBranch: ... > ... | Conditional branch instruction ConditionalBranch: ... > ... with non-Boolean condition, in function '$@'. | range_analysis.c:377:14:377:27 | unsigned int test_ternary02(unsigned int) | unsigned int test_ternary02(unsigned int) |
| range_analysis.c:380:8:380:15 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:377:14:377:27 | unsigned int test_ternary02(unsigned int) | unsigned int test_ternary02(unsigned int) |
| range_analysis.c:384:7:384:14 | ConditionalBranch: ... >= ... | Conditional branch instruction ConditionalBranch: ... >= ... with non-Boolean condition, in function '$@'. | range_analysis.c:377:14:377:27 | unsigned int test_ternary02(unsigned int) | unsigned int test_ternary02(unsigned int) |
| range_analysis.c:385:10:385:21 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | range_analysis.c:377:14:377:27 | unsigned int test_ternary02(unsigned int) | unsigned int test_ternary02(unsigned int) |
| range_analysis.c:386:10:386:21 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | range_analysis.c:377:14:377:27 | unsigned int test_ternary02(unsigned int) | unsigned int test_ternary02(unsigned int) |
| range_analysis.c:387:10:387:38 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | range_analysis.c:377:14:377:27 | unsigned int test_ternary02(unsigned int) | unsigned int test_ternary02(unsigned int) |
| range_analysis.c:394:20:394:26 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:393:14:393:25 | unsigned int test_comma01(unsigned int) | unsigned int test_comma01(unsigned int) |
| switchbody.c:5:11:5:15 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | switchbody.c:4:5:4:16 | int switch_block(int) | int switch_block(int) |
| switchbody.c:16:11:16:15 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | switchbody.c:15:5:15:17 | int switch_single(int) | int switch_single(int) |
| switchbody.c:28:11:28:15 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | switchbody.c:27:5:27:19 | int switch_notblock(int) | int switch_notblock(int) |
| test.c:3:9:3:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | test.c:2:6:2:11 | void f_if_1(int) | void f_if_1(int) |
| test.c:11:9:11:9 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | test.c:10:6:10:11 | void f_if_2() | void f_if_2() |
| test.c:19:9:19:9 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | test.c:18:6:18:11 | void f_if_3() | void f_if_3() |
| test.c:28:16:28:21 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | test.c:26:6:26:12 | void f_for_1() | void f_for_1() |
| test.c:36:16:36:16 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | test.c:34:6:34:12 | void f_for_2() | void f_for_2() |
| test.c:44:16:44:16 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | test.c:42:6:42:12 | void f_for_3() | void f_for_3() |
| test.c:51:11:51:11 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | test.c:50:6:50:14 | void f_while_1(int) | void f_while_1(int) |
| test.c:58:11:58:11 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | test.c:57:6:57:14 | void f_while_2() | void f_while_2() |
| test.c:65:11:65:11 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | test.c:64:6:64:14 | void f_while_3() | void f_while_3() |
| test.c:74:14:74:14 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | test.c:71:6:71:11 | void f_do_1(int) | void f_do_1(int) |
| test.c:81:14:81:14 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | test.c:78:6:78:11 | void f_do_2() | void f_do_2() |
| test.c:88:14:88:14 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | test.c:85:6:85:11 | void f_do_3() | void f_do_3() |
| test.c:93:13:93:13 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | test.c:92:6:92:13 | void f_cond_1(int) | void f_cond_1(int) |
| test.c:204:12:204:12 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | test.c:203:6:203:15 | void f_switch_7(int) | void f_switch_7(int) |
| test.c:219:7:219:7 | ConditionalBranch: x | Conditional branch instruction ConditionalBranch: x with non-Boolean condition, in function '$@'. | test.c:218:5:218:11 | int f_and_1(int, int) | int f_and_1(int, int) |
| test.c:219:12:219:13 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | test.c:218:5:218:11 | int f_and_1(int, int) | int f_and_1(int, int) |
| test.c:219:12:219:13 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | test.c:218:5:218:11 | int f_and_1(int, int) | int f_and_1(int, int) |
| test.c:226:7:226:15 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | test.c:225:5:225:11 | int f_and_2(int, int) | int f_and_2(int, int) |
| test.c:226:7:226:15 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | test.c:225:5:225:11 | int f_and_2(int, int) | int f_and_2(int, int) |
| test.c:226:9:226:9 | ConditionalBranch: x | Conditional branch instruction ConditionalBranch: x with non-Boolean condition, in function '$@'. | test.c:225:5:225:11 | int f_and_2(int, int) | int f_and_2(int, int) |
| test.c:226:14:226:14 | ConditionalBranch: y | Conditional branch instruction ConditionalBranch: y with non-Boolean condition, in function '$@'. | test.c:225:5:225:11 | int f_and_2(int, int) | int f_and_2(int, int) |
| test.c:233:7:233:7 | ConditionalBranch: b | Conditional branch instruction ConditionalBranch: b with non-Boolean condition, in function '$@'. | test.c:232:6:232:19 | void f_if_ternary_1(int, int, int) | void f_if_ternary_1(int, int, int) |
| test.c:233:7:233:15 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | test.c:232:6:232:19 | void f_if_ternary_1(int, int, int) | void f_if_ternary_1(int, int, int) |
| test.c:245:31:245:31 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | test.c:245:24:245:24 | const void *[] a | const void *[] a |
| unaryopexpr.c:8:5:8:6 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | unaryopexpr.c:1:13:1:13 | void f() | void f() |
| whilestmt.c:2:9:2:9 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | whilestmt.c:1:13:1:26 | void always_false_1() | void always_false_1() |
| whilestmt.c:10:9:10:13 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | whilestmt.c:8:13:8:26 | void always_false_2() | void always_false_2() |
| whilestmt.c:10:9:10:13 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | whilestmt.c:8:13:8:26 | void always_false_2() | void always_false_2() |
| whilestmt.c:16:9:16:9 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | whilestmt.c:15:13:15:25 | void always_true_1() | void always_true_1() |
| whilestmt.c:24:9:24:9 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | whilestmt.c:23:13:23:25 | void always_true_2() | void always_true_2() |
| whilestmt.c:33:9:33:9 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | whilestmt.c:32:13:32:25 | void always_true_3() | void always_true_3() |
| whilestmt.c:41:9:41:14 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | whilestmt.c:39:13:39:18 | void normal() | void normal() |
missingCppType

View File

@@ -42,280 +42,4 @@ thisArgumentIsNonPointer
| pointer_to_member.cpp:23:5:23:54 | Call: call to expression | Call instruction 'Call: call to expression' has a `this` argument operand that is not an address, in function '$@'. | pointer_to_member.cpp:14:5:14:9 | int usePM(int PM::*) | int usePM(int PM::*) |
| pointer_to_member.cpp:24:5:24:49 | Call: call to expression | Call instruction 'Call: call to expression' has a `this` argument operand that is not an address, in function '$@'. | pointer_to_member.cpp:14:5:14:9 | int usePM(int PM::*) | int usePM(int PM::*) |
nonUniqueIRVariable
nonBooleanOperand
| break_labels.c:4:9:4:14 | ConditionalBranch: ... != ... | Conditional branch instruction ConditionalBranch: ... != ... with non-Boolean condition, in function '$@'. | break_labels.c:2:12:2:12 | int f(int) | int f(int) |
| break_labels.c:6:16:6:21 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | break_labels.c:2:12:2:12 | int f(int) | int f(int) |
| break_labels.c:7:17:7:24 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | break_labels.c:2:12:2:12 | int f(int) | int f(int) |
| break_labels.c:20:16:20:21 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | break_labels.c:16:6:16:10 | void f_for() | void f_for() |
| break_labels.c:21:13:21:18 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | break_labels.c:16:6:16:10 | void f_for() | void f_for() |
| break_labels.c:24:13:24:18 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | break_labels.c:16:6:16:10 | void f_for() | void f_for() |
| builtin.c:24:7:24:13 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | builtin.c:5:5:5:11 | int builtin(int, int) | int builtin(int, int) |
| builtin.c:28:7:28:29 | ConditionalBranch: call to __builtin_unpredictable | Conditional branch instruction ConditionalBranch: call to __builtin_unpredictable with non-Boolean condition, in function '$@'. | builtin.c:5:5:5:11 | int builtin(int, int) | int builtin(int, int) |
| builtin.c:47:7:47:22 | ConditionalBranch: call to __builtin_memchr | Conditional branch instruction ConditionalBranch: call to __builtin_memchr with non-Boolean condition, in function '$@'. | builtin.c:5:5:5:11 | int builtin(int, int) | int builtin(int, int) |
| dostmt.c:4:11:4:11 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | dostmt.c:1:6:1:17 | void always_false() | void always_false() |
| dostmt.c:12:11:12:11 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | dostmt.c:8:13:8:25 | void always_true_1() | void always_true_1() |
| dostmt.c:21:11:21:11 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | dostmt.c:16:13:16:25 | void always_true_2() | void always_true_2() |
| dostmt.c:28:11:28:11 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | dostmt.c:25:13:25:25 | void always_true_3() | void always_true_3() |
| dostmt.c:36:11:36:16 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | dostmt.c:32:13:32:18 | void normal() | void normal() |
| duff2.c:13:14:13:20 | ConditionalBranch: ... > ... | Conditional branch instruction ConditionalBranch: ... > ... with non-Boolean condition, in function '$@'. | duff2.c:2:6:2:12 | void duff2_8(int) | void duff2_8(int) |
| duff2.c:21:14:21:20 | ConditionalBranch: ... > ... | Conditional branch instruction ConditionalBranch: ... > ... with non-Boolean condition, in function '$@'. | duff2.c:16:6:16:12 | void duff2_2(int) | void duff2_2(int) |
| duff.c:13:22:13:28 | ConditionalBranch: ... > ... | Conditional branch instruction ConditionalBranch: ... > ... with non-Boolean condition, in function '$@'. | duff.c:2:13:2:13 | void f(int) | void f(int) |
| dummyblock.c:2:9:2:9 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | dummyblock.c:1:13:1:13 | void f() | void f() |
| ifelsestmt.c:2:6:2:6 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | ifelsestmt.c:1:13:1:26 | void always_false_1() | void always_false_1() |
| ifelsestmt.c:12:6:12:6 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | ifelsestmt.c:11:13:11:26 | void always_false_2() | void always_false_2() |
| ifelsestmt.c:20:6:20:6 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | ifelsestmt.c:19:13:19:25 | void always_true_1() | void always_true_1() |
| ifelsestmt.c:30:6:30:6 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | ifelsestmt.c:29:13:29:25 | void always_true_2() | void always_true_2() |
| ifelsestmt.c:38:6:38:11 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | ifelsestmt.c:37:13:37:18 | void normal(int, int) | void normal(int, int) |
| ifstmt.c:2:6:2:6 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | ifstmt.c:1:13:1:26 | void always_false_1() | void always_false_1() |
| ifstmt.c:9:6:9:6 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | ifstmt.c:8:13:8:26 | void always_false_2() | void always_false_2() |
| ifstmt.c:15:6:15:6 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | ifstmt.c:14:13:14:25 | void always_true_1() | void always_true_1() |
| ifstmt.c:22:6:22:6 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | ifstmt.c:21:13:21:25 | void always_true_2() | void always_true_2() |
| ifstmt.c:28:6:28:11 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | ifstmt.c:27:13:27:18 | void normal(int, int) | void normal(int, int) |
| landexpr.c:3:6:3:6 | ConditionalBranch: a | Conditional branch instruction ConditionalBranch: a with non-Boolean condition, in function '$@'. | landexpr.c:1:13:1:13 | void f() | void f() |
| landexpr.c:3:11:3:11 | ConditionalBranch: b | Conditional branch instruction ConditionalBranch: b with non-Boolean condition, in function '$@'. | landexpr.c:1:13:1:13 | void f() | void f() |
| lorexpr.c:3:6:3:6 | ConditionalBranch: a | Conditional branch instruction ConditionalBranch: a with non-Boolean condition, in function '$@'. | lorexpr.c:1:13:1:13 | void f() | void f() |
| lorexpr.c:3:11:3:11 | ConditionalBranch: b | Conditional branch instruction ConditionalBranch: b with non-Boolean condition, in function '$@'. | lorexpr.c:1:13:1:13 | void f() | void f() |
| misc.c:22:9:22:12 | ConditionalBranch: argi | Conditional branch instruction ConditionalBranch: argi with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:22:17:22:20 | ConditionalBranch: argj | Conditional branch instruction ConditionalBranch: argj with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:27:9:27:12 | ConditionalBranch: argi | Conditional branch instruction ConditionalBranch: argi with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:27:17:27:20 | ConditionalBranch: argj | Conditional branch instruction ConditionalBranch: argj with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:32:9:32:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:32:14:32:14 | ConditionalBranch: j | Conditional branch instruction ConditionalBranch: j with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:37:9:37:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:37:14:37:14 | ConditionalBranch: j | Conditional branch instruction ConditionalBranch: j with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:44:11:44:11 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:47:11:47:11 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:47:16:47:16 | ConditionalBranch: j | Conditional branch instruction ConditionalBranch: j with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:50:11:50:11 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:50:16:50:16 | ConditionalBranch: j | Conditional branch instruction ConditionalBranch: j with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:53:11:53:14 | ConditionalBranch: argi | Conditional branch instruction ConditionalBranch: argi with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:58:13:58:13 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:61:13:61:16 | ConditionalBranch: argi | Conditional branch instruction ConditionalBranch: argi with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:62:16:62:21 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:64:11:64:16 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:68:16:68:21 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:72:11:72:16 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:86:9:86:13 | ConditionalBranch: ... > ... | Conditional branch instruction ConditionalBranch: ... > ... with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:87:9:87:10 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:87:9:87:10 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:88:9:88:9 | ConditionalBranch: j | Conditional branch instruction ConditionalBranch: j with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:93:9:93:15 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | misc.c:91:6:91:33 | void gnuConditionalOmittedOperand(someStruct*) | void gnuConditionalOmittedOperand(someStruct*) |
| misc.c:94:9:94:19 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | misc.c:91:6:91:33 | void gnuConditionalOmittedOperand(someStruct*) | void gnuConditionalOmittedOperand(someStruct*) |
| misc.c:139:10:139:18 | ConditionalBranch: ... & ... | Conditional branch instruction ConditionalBranch: ... & ... with non-Boolean condition, in function '$@'. | misc.c:97:6:97:10 | void misc3() | void misc3() |
| misc.c:139:25:139:33 | ConditionalBranch: ... & ... | Conditional branch instruction ConditionalBranch: ... & ... with non-Boolean condition, in function '$@'. | misc.c:97:6:97:10 | void misc3() | void misc3() |
| misc.c:140:9:140:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:97:6:97:10 | void misc3() | void misc3() |
| misc.c:140:14:140:14 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:97:6:97:10 | void misc3() | void misc3() |
| misc.c:140:19:140:19 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:97:6:97:10 | void misc3() | void misc3() |
| misc.c:141:9:141:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:97:6:97:10 | void misc3() | void misc3() |
| misc.c:141:14:141:14 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:97:6:97:10 | void misc3() | void misc3() |
| misc.c:141:19:141:19 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:97:6:97:10 | void misc3() | void misc3() |
| misc.c:192:11:192:11 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | misc.c:191:6:191:20 | void unreachable_end() | void unreachable_end() |
| pruning.c:5:9:5:9 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | pruning.c:4:6:4:8 | void f_0() | void f_0() |
| pruning.c:13:9:13:9 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | pruning.c:12:6:12:8 | void f_1() | void f_1() |
| pruning.c:21:9:21:11 | ConditionalBranch: 256 | Conditional branch instruction ConditionalBranch: 256 with non-Boolean condition, in function '$@'. | pruning.c:20:6:20:10 | void f_256() | void f_256() |
| pruning.c:29:9:29:18 | ConditionalBranch: (uint8_t)... | Conditional branch instruction ConditionalBranch: (uint8_t)... with non-Boolean condition, in function '$@'. | pruning.c:28:6:28:16 | void f_uint8_t_0() | void f_uint8_t_0() |
| pruning.c:37:9:37:18 | ConditionalBranch: (uint8_t)... | Conditional branch instruction ConditionalBranch: (uint8_t)... with non-Boolean condition, in function '$@'. | pruning.c:36:6:36:16 | void f_uint8_t_1() | void f_uint8_t_1() |
| pruning.c:45:9:45:20 | ConditionalBranch: (uint8_t)... | Conditional branch instruction ConditionalBranch: (uint8_t)... with non-Boolean condition, in function '$@'. | pruning.c:44:6:44:18 | void f_uint8_t_256() | void f_uint8_t_256() |
| pruning.c:53:9:53:20 | ConditionalBranch: (uint8_t)... | Conditional branch instruction ConditionalBranch: (uint8_t)... with non-Boolean condition, in function '$@'. | pruning.c:52:6:52:18 | void f_uint8_t_257() | void f_uint8_t_257() |
| pruning.c:61:9:61:26 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | pruning.c:60:6:60:21 | void f_uint8_t_minus1() | void f_uint8_t_minus1() |
| pruning.c:70:9:70:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | pruning.c:68:6:68:14 | void f_v_int_0() | void f_v_int_0() |
| pruning.c:79:9:79:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | pruning.c:77:6:77:14 | void f_v_int_1() | void f_v_int_1() |
| pruning.c:88:9:88:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | pruning.c:86:6:86:16 | void f_v_int_256() | void f_v_int_256() |
| pruning.c:97:9:97:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | pruning.c:95:6:95:18 | void f_v_uint8_t_0() | void f_v_uint8_t_0() |
| pruning.c:106:9:106:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | pruning.c:104:6:104:18 | void f_v_uint8_t_1() | void f_v_uint8_t_1() |
| pruning.c:115:9:115:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | pruning.c:113:6:113:20 | void f_v_uint8_t_256() | void f_v_uint8_t_256() |
| pruning.c:124:9:124:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | pruning.c:122:6:122:20 | void f_v_uint8_t_257() | void f_v_uint8_t_257() |
| pruning.c:133:9:133:16 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | pruning.c:131:6:131:23 | void f_v_uint8_t_minus1() | void f_v_uint8_t_minus1() |
| questionexpr.c:3:6:3:11 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | questionexpr.c:1:13:1:13 | void f() | void f() |
| range_analysis.c:7:10:7:10 | ConditionalBranch: p | Conditional branch instruction ConditionalBranch: p with non-Boolean condition, in function '$@'. | range_analysis.c:5:5:5:9 | int test1(List*) | int test1(List*) |
| range_analysis.c:15:10:15:10 | ConditionalBranch: p | Conditional branch instruction ConditionalBranch: p with non-Boolean condition, in function '$@'. | range_analysis.c:13:5:13:9 | int test2(List*) | int test2(List*) |
| range_analysis.c:23:10:23:10 | ConditionalBranch: p | Conditional branch instruction ConditionalBranch: p with non-Boolean condition, in function '$@'. | range_analysis.c:21:5:21:9 | int test3(List*) | int test3(List*) |
| range_analysis.c:33:15:33:19 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:30:5:30:9 | int test4() | int test4() |
| range_analysis.c:42:15:42:19 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:39:5:39:9 | int test5() | int test5() |
| range_analysis.c:51:15:51:21 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:48:5:48:9 | int test6() | int test6() |
| range_analysis.c:58:7:58:11 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:57:5:57:9 | int test7(int) | int test7(int) |
| range_analysis.c:59:9:59:13 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:57:5:57:9 | int test7(int) | int test7(int) |
| range_analysis.c:67:7:67:15 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:66:5:66:9 | int test8(int, int) | int test8(int, int) |
| range_analysis.c:67:20:67:25 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:66:5:66:9 | int test8(int, int) | int test8(int, int) |
| range_analysis.c:68:9:68:15 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:66:5:66:9 | int test8(int, int) | int test8(int, int) |
| range_analysis.c:76:7:76:12 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | range_analysis.c:75:5:75:9 | int test9(int, int) | int test9(int, int) |
| range_analysis.c:77:9:77:13 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:75:5:75:9 | int test9(int, int) | int test9(int, int) |
| range_analysis.c:81:9:81:13 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:75:5:75:9 | int test9(int, int) | int test9(int, int) |
| range_analysis.c:89:7:89:11 | ConditionalBranch: ... > ... | Conditional branch instruction ConditionalBranch: ... > ... with non-Boolean condition, in function '$@'. | range_analysis.c:88:5:88:10 | int test10(int, int) | int test10(int, int) |
| range_analysis.c:90:9:90:13 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:88:5:88:10 | int test10(int, int) | int test10(int, int) |
| range_analysis.c:101:7:101:15 | ConditionalBranch: ... != ... | Conditional branch instruction ConditionalBranch: ... != ... with non-Boolean condition, in function '$@'. | range_analysis.c:98:5:98:10 | int test11(char*) | int test11(char*) |
| range_analysis.c:104:7:104:14 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | range_analysis.c:98:5:98:10 | int test11(char*) | int test11(char*) |
| range_analysis.c:106:9:106:17 | ConditionalBranch: ... != ... | Conditional branch instruction ConditionalBranch: ... != ... with non-Boolean condition, in function '$@'. | range_analysis.c:98:5:98:10 | int test11(char*) | int test11(char*) |
| range_analysis.c:109:9:109:16 | ConditionalBranch: ... != ... | Conditional branch instruction ConditionalBranch: ... != ... with non-Boolean condition, in function '$@'. | range_analysis.c:98:5:98:10 | int test11(char*) | int test11(char*) |
| range_analysis.c:124:11:124:36 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:122:5:122:10 | int test12() | int test12() |
| range_analysis.c:154:11:154:15 | ConditionalBranch: ... > ... | Conditional branch instruction ConditionalBranch: ... > ... with non-Boolean condition, in function '$@'. | range_analysis.c:153:11:153:16 | long long test15(long long) | long long test15(long long) |
| range_analysis.c:154:20:154:30 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | range_analysis.c:153:11:153:16 | long long test15(long long) | long long test15(long long) |
| range_analysis.c:161:7:161:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:161:17:161:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:166:7:166:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:166:17:166:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:171:7:171:13 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:171:18:171:24 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:176:7:176:13 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:176:18:176:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:181:7:181:13 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:181:18:181:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:186:7:186:13 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:186:18:186:24 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:200:7:200:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:200:17:200:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:200:28:200:33 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:200:38:200:44 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:204:7:204:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:204:17:204:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:204:28:204:33 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:204:38:204:44 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:208:7:208:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:208:17:208:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:208:28:208:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:208:40:208:46 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:212:7:212:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:212:17:212:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:212:28:212:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:212:40:212:45 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:216:7:216:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:216:17:216:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:216:28:216:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:216:40:216:46 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:228:7:228:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:228:17:228:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:228:28:228:33 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:228:38:228:44 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:232:7:232:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:232:17:232:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:232:28:232:33 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:232:38:232:44 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:236:7:236:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:236:17:236:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:236:28:236:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:236:40:236:46 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:240:7:240:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:240:17:240:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:240:28:240:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:240:40:240:45 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:244:7:244:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:244:17:244:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:244:28:244:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:244:40:244:46 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:256:7:256:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:256:19:256:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:256:30:256:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:256:40:256:46 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:260:7:260:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:260:19:260:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:260:30:260:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:260:40:260:46 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:264:7:264:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:264:19:264:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:264:30:264:37 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:264:42:264:48 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:268:7:268:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:268:19:268:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:268:30:268:37 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:268:42:268:47 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:272:7:272:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:272:19:272:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:272:30:272:37 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:272:42:272:48 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:284:7:284:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:284:19:284:24 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:284:29:284:34 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:284:39:284:45 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:288:7:288:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:288:19:288:24 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:288:29:288:34 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:288:39:288:45 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:292:7:292:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:292:19:292:24 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:292:29:292:36 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:292:41:292:47 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:296:7:296:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:296:19:296:24 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:296:29:296:36 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:296:41:296:46 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:300:7:300:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:300:19:300:24 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:300:29:300:36 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:300:41:300:47 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:312:7:312:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:312:19:312:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:312:30:312:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:312:40:312:46 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:316:7:316:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:316:19:316:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:316:30:316:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:316:40:316:46 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:320:7:320:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:320:19:320:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:320:30:320:37 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:320:42:320:48 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:324:7:324:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:324:19:324:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:324:30:324:37 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:324:42:324:47 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:328:7:328:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:328:19:328:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:328:30:328:37 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:328:42:328:48 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:338:7:338:11 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:336:5:336:10 | int test16(int) | int test16(int) |
| range_analysis.c:342:10:342:14 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:336:5:336:10 | int test16(int) | int test16(int) |
| range_analysis.c:346:7:346:11 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:336:5:336:10 | int test16(int) | int test16(int) |
| range_analysis.c:347:9:347:14 | ConditionalBranch: ... > ... | Conditional branch instruction ConditionalBranch: ... > ... with non-Boolean condition, in function '$@'. | range_analysis.c:336:5:336:10 | int test16(int) | int test16(int) |
| range_analysis.c:357:8:357:14 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:355:14:355:27 | unsigned int test_ternary01(unsigned int) | unsigned int test_ternary01(unsigned int) |
| range_analysis.c:358:8:358:15 | ConditionalBranch: ... >= ... | Conditional branch instruction ConditionalBranch: ... >= ... with non-Boolean condition, in function '$@'. | range_analysis.c:355:14:355:27 | unsigned int test_ternary01(unsigned int) | unsigned int test_ternary01(unsigned int) |
| range_analysis.c:365:7:365:13 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:355:14:355:27 | unsigned int test_ternary01(unsigned int) | unsigned int test_ternary01(unsigned int) |
| range_analysis.c:366:10:366:15 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | range_analysis.c:355:14:355:27 | unsigned int test_ternary01(unsigned int) | unsigned int test_ternary01(unsigned int) |
| range_analysis.c:367:10:367:17 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | range_analysis.c:355:14:355:27 | unsigned int test_ternary01(unsigned int) | unsigned int test_ternary01(unsigned int) |
| range_analysis.c:368:10:368:21 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | range_analysis.c:355:14:355:27 | unsigned int test_ternary01(unsigned int) | unsigned int test_ternary01(unsigned int) |
| range_analysis.c:369:10:369:36 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | range_analysis.c:355:14:355:27 | unsigned int test_ternary01(unsigned int) | unsigned int test_ternary01(unsigned int) |
| range_analysis.c:370:10:370:38 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | range_analysis.c:355:14:355:27 | unsigned int test_ternary01(unsigned int) | unsigned int test_ternary01(unsigned int) |
| range_analysis.c:371:10:371:39 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | range_analysis.c:355:14:355:27 | unsigned int test_ternary01(unsigned int) | unsigned int test_ternary01(unsigned int) |
| range_analysis.c:379:8:379:14 | ConditionalBranch: ... > ... | Conditional branch instruction ConditionalBranch: ... > ... with non-Boolean condition, in function '$@'. | range_analysis.c:377:14:377:27 | unsigned int test_ternary02(unsigned int) | unsigned int test_ternary02(unsigned int) |
| range_analysis.c:380:8:380:15 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:377:14:377:27 | unsigned int test_ternary02(unsigned int) | unsigned int test_ternary02(unsigned int) |
| range_analysis.c:384:7:384:14 | ConditionalBranch: ... >= ... | Conditional branch instruction ConditionalBranch: ... >= ... with non-Boolean condition, in function '$@'. | range_analysis.c:377:14:377:27 | unsigned int test_ternary02(unsigned int) | unsigned int test_ternary02(unsigned int) |
| range_analysis.c:385:10:385:21 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | range_analysis.c:377:14:377:27 | unsigned int test_ternary02(unsigned int) | unsigned int test_ternary02(unsigned int) |
| range_analysis.c:386:10:386:21 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | range_analysis.c:377:14:377:27 | unsigned int test_ternary02(unsigned int) | unsigned int test_ternary02(unsigned int) |
| range_analysis.c:387:10:387:38 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | range_analysis.c:377:14:377:27 | unsigned int test_ternary02(unsigned int) | unsigned int test_ternary02(unsigned int) |
| range_analysis.c:394:20:394:26 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:393:14:393:25 | unsigned int test_comma01(unsigned int) | unsigned int test_comma01(unsigned int) |
| switchbody.c:5:11:5:15 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | switchbody.c:4:5:4:16 | int switch_block(int) | int switch_block(int) |
| switchbody.c:16:11:16:15 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | switchbody.c:15:5:15:17 | int switch_single(int) | int switch_single(int) |
| switchbody.c:28:11:28:15 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | switchbody.c:27:5:27:19 | int switch_notblock(int) | int switch_notblock(int) |
| switchbody.c:29:9:29:9 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | switchbody.c:27:5:27:19 | int switch_notblock(int) | int switch_notblock(int) |
| test.c:3:9:3:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | test.c:2:6:2:11 | void f_if_1(int) | void f_if_1(int) |
| test.c:11:9:11:9 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | test.c:10:6:10:11 | void f_if_2() | void f_if_2() |
| test.c:19:9:19:9 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | test.c:18:6:18:11 | void f_if_3() | void f_if_3() |
| test.c:28:16:28:21 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | test.c:26:6:26:12 | void f_for_1() | void f_for_1() |
| test.c:36:16:36:16 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | test.c:34:6:34:12 | void f_for_2() | void f_for_2() |
| test.c:44:16:44:16 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | test.c:42:6:42:12 | void f_for_3() | void f_for_3() |
| test.c:51:11:51:11 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | test.c:50:6:50:14 | void f_while_1(int) | void f_while_1(int) |
| test.c:58:11:58:11 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | test.c:57:6:57:14 | void f_while_2() | void f_while_2() |
| test.c:65:11:65:11 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | test.c:64:6:64:14 | void f_while_3() | void f_while_3() |
| test.c:74:14:74:14 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | test.c:71:6:71:11 | void f_do_1(int) | void f_do_1(int) |
| test.c:81:14:81:14 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | test.c:78:6:78:11 | void f_do_2() | void f_do_2() |
| test.c:88:14:88:14 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | test.c:85:6:85:11 | void f_do_3() | void f_do_3() |
| test.c:93:13:93:13 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | test.c:92:6:92:13 | void f_cond_1(int) | void f_cond_1(int) |
| test.c:204:12:204:12 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | test.c:203:6:203:15 | void f_switch_7(int) | void f_switch_7(int) |
| test.c:219:7:219:7 | ConditionalBranch: x | Conditional branch instruction ConditionalBranch: x with non-Boolean condition, in function '$@'. | test.c:218:5:218:11 | int f_and_1(int, int) | int f_and_1(int, int) |
| test.c:219:12:219:13 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | test.c:218:5:218:11 | int f_and_1(int, int) | int f_and_1(int, int) |
| test.c:219:12:219:13 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | test.c:218:5:218:11 | int f_and_1(int, int) | int f_and_1(int, int) |
| test.c:226:7:226:15 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | test.c:225:5:225:11 | int f_and_2(int, int) | int f_and_2(int, int) |
| test.c:226:7:226:15 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | test.c:225:5:225:11 | int f_and_2(int, int) | int f_and_2(int, int) |
| test.c:226:9:226:9 | ConditionalBranch: x | Conditional branch instruction ConditionalBranch: x with non-Boolean condition, in function '$@'. | test.c:225:5:225:11 | int f_and_2(int, int) | int f_and_2(int, int) |
| test.c:226:14:226:14 | ConditionalBranch: y | Conditional branch instruction ConditionalBranch: y with non-Boolean condition, in function '$@'. | test.c:225:5:225:11 | int f_and_2(int, int) | int f_and_2(int, int) |
| test.c:233:7:233:7 | ConditionalBranch: b | Conditional branch instruction ConditionalBranch: b with non-Boolean condition, in function '$@'. | test.c:232:6:232:19 | void f_if_ternary_1(int, int, int) | void f_if_ternary_1(int, int, int) |
| test.c:233:7:233:15 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | test.c:232:6:232:19 | void f_if_ternary_1(int, int, int) | void f_if_ternary_1(int, int, int) |
| test.c:245:31:245:31 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | test.c:245:24:245:24 | const void *[] a | const void *[] a |
| unaryopexpr.c:8:5:8:6 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | unaryopexpr.c:1:13:1:13 | void f() | void f() |
| whilestmt.c:2:9:2:9 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | whilestmt.c:1:13:1:26 | void always_false_1() | void always_false_1() |
| whilestmt.c:10:9:10:13 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | whilestmt.c:8:13:8:26 | void always_false_2() | void always_false_2() |
| whilestmt.c:10:9:10:13 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | whilestmt.c:8:13:8:26 | void always_false_2() | void always_false_2() |
| whilestmt.c:16:9:16:9 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | whilestmt.c:15:13:15:25 | void always_true_1() | void always_true_1() |
| whilestmt.c:24:9:24:9 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | whilestmt.c:23:13:23:25 | void always_true_2() | void always_true_2() |
| whilestmt.c:33:9:33:9 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | whilestmt.c:32:13:32:25 | void always_true_3() | void always_true_3() |
| whilestmt.c:41:9:41:14 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | whilestmt.c:39:13:39:18 | void normal() | void normal() |
missingCppType

View File

@@ -33,271 +33,4 @@ thisArgumentIsNonPointer
| pointer_to_member.cpp:23:5:23:54 | Call: call to expression | Call instruction 'Call: call to expression' has a `this` argument operand that is not an address, in function '$@'. | pointer_to_member.cpp:14:5:14:9 | int usePM(int PM::*) | int usePM(int PM::*) |
| pointer_to_member.cpp:24:5:24:49 | Call: call to expression | Call instruction 'Call: call to expression' has a `this` argument operand that is not an address, in function '$@'. | pointer_to_member.cpp:14:5:14:9 | int usePM(int PM::*) | int usePM(int PM::*) |
nonUniqueIRVariable
nonBooleanOperand
| break_labels.c:4:9:4:14 | ConditionalBranch: ... != ... | Conditional branch instruction ConditionalBranch: ... != ... with non-Boolean condition, in function '$@'. | break_labels.c:2:12:2:12 | int f(int) | int f(int) |
| break_labels.c:6:16:6:21 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | break_labels.c:2:12:2:12 | int f(int) | int f(int) |
| break_labels.c:7:17:7:24 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | break_labels.c:2:12:2:12 | int f(int) | int f(int) |
| break_labels.c:20:16:20:21 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | break_labels.c:16:6:16:10 | void f_for() | void f_for() |
| break_labels.c:21:13:21:18 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | break_labels.c:16:6:16:10 | void f_for() | void f_for() |
| break_labels.c:24:13:24:18 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | break_labels.c:16:6:16:10 | void f_for() | void f_for() |
| builtin.c:24:7:24:13 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | builtin.c:5:5:5:11 | int builtin(int, int) | int builtin(int, int) |
| builtin.c:28:7:28:29 | ConditionalBranch: call to __builtin_unpredictable | Conditional branch instruction ConditionalBranch: call to __builtin_unpredictable with non-Boolean condition, in function '$@'. | builtin.c:5:5:5:11 | int builtin(int, int) | int builtin(int, int) |
| builtin.c:47:7:47:22 | ConditionalBranch: call to __builtin_memchr | Conditional branch instruction ConditionalBranch: call to __builtin_memchr with non-Boolean condition, in function '$@'. | builtin.c:5:5:5:11 | int builtin(int, int) | int builtin(int, int) |
| dostmt.c:4:11:4:11 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | dostmt.c:1:6:1:17 | void always_false() | void always_false() |
| dostmt.c:28:11:28:11 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | dostmt.c:25:13:25:25 | void always_true_3() | void always_true_3() |
| dostmt.c:36:11:36:16 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | dostmt.c:32:13:32:18 | void normal() | void normal() |
| duff2.c:13:14:13:20 | ConditionalBranch: ... > ... | Conditional branch instruction ConditionalBranch: ... > ... with non-Boolean condition, in function '$@'. | duff2.c:2:6:2:12 | void duff2_8(int) | void duff2_8(int) |
| duff2.c:21:14:21:20 | ConditionalBranch: ... > ... | Conditional branch instruction ConditionalBranch: ... > ... with non-Boolean condition, in function '$@'. | duff2.c:16:6:16:12 | void duff2_2(int) | void duff2_2(int) |
| duff.c:13:22:13:28 | ConditionalBranch: ... > ... | Conditional branch instruction ConditionalBranch: ... > ... with non-Boolean condition, in function '$@'. | duff.c:2:13:2:13 | void f(int) | void f(int) |
| dummyblock.c:2:9:2:9 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | dummyblock.c:1:13:1:13 | void f() | void f() |
| ifelsestmt.c:2:6:2:6 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | ifelsestmt.c:1:13:1:26 | void always_false_1() | void always_false_1() |
| ifelsestmt.c:12:6:12:6 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | ifelsestmt.c:11:13:11:26 | void always_false_2() | void always_false_2() |
| ifelsestmt.c:20:6:20:6 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | ifelsestmt.c:19:13:19:25 | void always_true_1() | void always_true_1() |
| ifelsestmt.c:30:6:30:6 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | ifelsestmt.c:29:13:29:25 | void always_true_2() | void always_true_2() |
| ifelsestmt.c:38:6:38:11 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | ifelsestmt.c:37:13:37:18 | void normal(int, int) | void normal(int, int) |
| ifstmt.c:2:6:2:6 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | ifstmt.c:1:13:1:26 | void always_false_1() | void always_false_1() |
| ifstmt.c:9:6:9:6 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | ifstmt.c:8:13:8:26 | void always_false_2() | void always_false_2() |
| ifstmt.c:15:6:15:6 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | ifstmt.c:14:13:14:25 | void always_true_1() | void always_true_1() |
| ifstmt.c:22:6:22:6 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | ifstmt.c:21:13:21:25 | void always_true_2() | void always_true_2() |
| ifstmt.c:28:6:28:11 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | ifstmt.c:27:13:27:18 | void normal(int, int) | void normal(int, int) |
| landexpr.c:3:6:3:6 | ConditionalBranch: a | Conditional branch instruction ConditionalBranch: a with non-Boolean condition, in function '$@'. | landexpr.c:1:13:1:13 | void f() | void f() |
| landexpr.c:3:11:3:11 | ConditionalBranch: b | Conditional branch instruction ConditionalBranch: b with non-Boolean condition, in function '$@'. | landexpr.c:1:13:1:13 | void f() | void f() |
| lorexpr.c:3:6:3:6 | ConditionalBranch: a | Conditional branch instruction ConditionalBranch: a with non-Boolean condition, in function '$@'. | lorexpr.c:1:13:1:13 | void f() | void f() |
| lorexpr.c:3:11:3:11 | ConditionalBranch: b | Conditional branch instruction ConditionalBranch: b with non-Boolean condition, in function '$@'. | lorexpr.c:1:13:1:13 | void f() | void f() |
| misc.c:22:9:22:12 | ConditionalBranch: argi | Conditional branch instruction ConditionalBranch: argi with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:22:17:22:20 | ConditionalBranch: argj | Conditional branch instruction ConditionalBranch: argj with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:27:9:27:12 | ConditionalBranch: argi | Conditional branch instruction ConditionalBranch: argi with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:27:17:27:20 | ConditionalBranch: argj | Conditional branch instruction ConditionalBranch: argj with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:32:9:32:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:32:14:32:14 | ConditionalBranch: j | Conditional branch instruction ConditionalBranch: j with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:37:9:37:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:37:14:37:14 | ConditionalBranch: j | Conditional branch instruction ConditionalBranch: j with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:44:11:44:11 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:47:11:47:11 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:47:16:47:16 | ConditionalBranch: j | Conditional branch instruction ConditionalBranch: j with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:50:11:50:11 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:50:16:50:16 | ConditionalBranch: j | Conditional branch instruction ConditionalBranch: j with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:53:11:53:14 | ConditionalBranch: argi | Conditional branch instruction ConditionalBranch: argi with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:58:13:58:13 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:61:13:61:16 | ConditionalBranch: argi | Conditional branch instruction ConditionalBranch: argi with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:62:16:62:21 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:64:11:64:16 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | misc.c:16:6:16:10 | void misc1(int, int) | void misc1(int, int) |
| misc.c:93:9:93:15 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | misc.c:91:6:91:33 | void gnuConditionalOmittedOperand(someStruct*) | void gnuConditionalOmittedOperand(someStruct*) |
| misc.c:94:9:94:19 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | misc.c:91:6:91:33 | void gnuConditionalOmittedOperand(someStruct*) | void gnuConditionalOmittedOperand(someStruct*) |
| misc.c:139:10:139:18 | ConditionalBranch: ... & ... | Conditional branch instruction ConditionalBranch: ... & ... with non-Boolean condition, in function '$@'. | misc.c:97:6:97:10 | void misc3() | void misc3() |
| misc.c:139:25:139:33 | ConditionalBranch: ... & ... | Conditional branch instruction ConditionalBranch: ... & ... with non-Boolean condition, in function '$@'. | misc.c:97:6:97:10 | void misc3() | void misc3() |
| misc.c:140:9:140:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:97:6:97:10 | void misc3() | void misc3() |
| misc.c:140:14:140:14 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:97:6:97:10 | void misc3() | void misc3() |
| misc.c:140:19:140:19 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:97:6:97:10 | void misc3() | void misc3() |
| misc.c:141:9:141:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:97:6:97:10 | void misc3() | void misc3() |
| misc.c:141:14:141:14 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:97:6:97:10 | void misc3() | void misc3() |
| misc.c:141:19:141:19 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | misc.c:97:6:97:10 | void misc3() | void misc3() |
| misc.c:192:11:192:11 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | misc.c:191:6:191:20 | void unreachable_end() | void unreachable_end() |
| pruning.c:5:9:5:9 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | pruning.c:4:6:4:8 | void f_0() | void f_0() |
| pruning.c:13:9:13:9 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | pruning.c:12:6:12:8 | void f_1() | void f_1() |
| pruning.c:21:9:21:11 | ConditionalBranch: 256 | Conditional branch instruction ConditionalBranch: 256 with non-Boolean condition, in function '$@'. | pruning.c:20:6:20:10 | void f_256() | void f_256() |
| pruning.c:29:9:29:18 | ConditionalBranch: (uint8_t)... | Conditional branch instruction ConditionalBranch: (uint8_t)... with non-Boolean condition, in function '$@'. | pruning.c:28:6:28:16 | void f_uint8_t_0() | void f_uint8_t_0() |
| pruning.c:37:9:37:18 | ConditionalBranch: (uint8_t)... | Conditional branch instruction ConditionalBranch: (uint8_t)... with non-Boolean condition, in function '$@'. | pruning.c:36:6:36:16 | void f_uint8_t_1() | void f_uint8_t_1() |
| pruning.c:45:9:45:20 | ConditionalBranch: (uint8_t)... | Conditional branch instruction ConditionalBranch: (uint8_t)... with non-Boolean condition, in function '$@'. | pruning.c:44:6:44:18 | void f_uint8_t_256() | void f_uint8_t_256() |
| pruning.c:53:9:53:20 | ConditionalBranch: (uint8_t)... | Conditional branch instruction ConditionalBranch: (uint8_t)... with non-Boolean condition, in function '$@'. | pruning.c:52:6:52:18 | void f_uint8_t_257() | void f_uint8_t_257() |
| pruning.c:61:9:61:26 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | pruning.c:60:6:60:21 | void f_uint8_t_minus1() | void f_uint8_t_minus1() |
| pruning.c:70:9:70:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | pruning.c:68:6:68:14 | void f_v_int_0() | void f_v_int_0() |
| pruning.c:79:9:79:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | pruning.c:77:6:77:14 | void f_v_int_1() | void f_v_int_1() |
| pruning.c:88:9:88:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | pruning.c:86:6:86:16 | void f_v_int_256() | void f_v_int_256() |
| pruning.c:97:9:97:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | pruning.c:95:6:95:18 | void f_v_uint8_t_0() | void f_v_uint8_t_0() |
| pruning.c:106:9:106:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | pruning.c:104:6:104:18 | void f_v_uint8_t_1() | void f_v_uint8_t_1() |
| pruning.c:115:9:115:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | pruning.c:113:6:113:20 | void f_v_uint8_t_256() | void f_v_uint8_t_256() |
| pruning.c:124:9:124:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | pruning.c:122:6:122:20 | void f_v_uint8_t_257() | void f_v_uint8_t_257() |
| pruning.c:133:9:133:16 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | pruning.c:131:6:131:23 | void f_v_uint8_t_minus1() | void f_v_uint8_t_minus1() |
| questionexpr.c:3:6:3:11 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | questionexpr.c:1:13:1:13 | void f() | void f() |
| range_analysis.c:7:10:7:10 | ConditionalBranch: p | Conditional branch instruction ConditionalBranch: p with non-Boolean condition, in function '$@'. | range_analysis.c:5:5:5:9 | int test1(List*) | int test1(List*) |
| range_analysis.c:15:10:15:10 | ConditionalBranch: p | Conditional branch instruction ConditionalBranch: p with non-Boolean condition, in function '$@'. | range_analysis.c:13:5:13:9 | int test2(List*) | int test2(List*) |
| range_analysis.c:23:10:23:10 | ConditionalBranch: p | Conditional branch instruction ConditionalBranch: p with non-Boolean condition, in function '$@'. | range_analysis.c:21:5:21:9 | int test3(List*) | int test3(List*) |
| range_analysis.c:33:15:33:19 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:30:5:30:9 | int test4() | int test4() |
| range_analysis.c:42:15:42:19 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:39:5:39:9 | int test5() | int test5() |
| range_analysis.c:51:15:51:21 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:48:5:48:9 | int test6() | int test6() |
| range_analysis.c:58:7:58:11 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:57:5:57:9 | int test7(int) | int test7(int) |
| range_analysis.c:59:9:59:13 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:57:5:57:9 | int test7(int) | int test7(int) |
| range_analysis.c:67:7:67:15 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:66:5:66:9 | int test8(int, int) | int test8(int, int) |
| range_analysis.c:67:20:67:25 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:66:5:66:9 | int test8(int, int) | int test8(int, int) |
| range_analysis.c:68:9:68:15 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:66:5:66:9 | int test8(int, int) | int test8(int, int) |
| range_analysis.c:76:7:76:12 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | range_analysis.c:75:5:75:9 | int test9(int, int) | int test9(int, int) |
| range_analysis.c:77:9:77:13 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:75:5:75:9 | int test9(int, int) | int test9(int, int) |
| range_analysis.c:81:9:81:13 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:75:5:75:9 | int test9(int, int) | int test9(int, int) |
| range_analysis.c:89:7:89:11 | ConditionalBranch: ... > ... | Conditional branch instruction ConditionalBranch: ... > ... with non-Boolean condition, in function '$@'. | range_analysis.c:88:5:88:10 | int test10(int, int) | int test10(int, int) |
| range_analysis.c:90:9:90:13 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:88:5:88:10 | int test10(int, int) | int test10(int, int) |
| range_analysis.c:101:7:101:15 | ConditionalBranch: ... != ... | Conditional branch instruction ConditionalBranch: ... != ... with non-Boolean condition, in function '$@'. | range_analysis.c:98:5:98:10 | int test11(char*) | int test11(char*) |
| range_analysis.c:104:7:104:14 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | range_analysis.c:98:5:98:10 | int test11(char*) | int test11(char*) |
| range_analysis.c:106:9:106:17 | ConditionalBranch: ... != ... | Conditional branch instruction ConditionalBranch: ... != ... with non-Boolean condition, in function '$@'. | range_analysis.c:98:5:98:10 | int test11(char*) | int test11(char*) |
| range_analysis.c:109:9:109:16 | ConditionalBranch: ... != ... | Conditional branch instruction ConditionalBranch: ... != ... with non-Boolean condition, in function '$@'. | range_analysis.c:98:5:98:10 | int test11(char*) | int test11(char*) |
| range_analysis.c:124:11:124:36 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:122:5:122:10 | int test12() | int test12() |
| range_analysis.c:154:11:154:15 | ConditionalBranch: ... > ... | Conditional branch instruction ConditionalBranch: ... > ... with non-Boolean condition, in function '$@'. | range_analysis.c:153:11:153:16 | long long test15(long long) | long long test15(long long) |
| range_analysis.c:154:20:154:30 | ConditionalBranch: ... == ... | Conditional branch instruction ConditionalBranch: ... == ... with non-Boolean condition, in function '$@'. | range_analysis.c:153:11:153:16 | long long test15(long long) | long long test15(long long) |
| range_analysis.c:161:7:161:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:161:17:161:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:166:7:166:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:166:17:166:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:171:7:171:13 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:171:18:171:24 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:176:7:176:13 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:176:18:176:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:181:7:181:13 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:181:18:181:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:186:7:186:13 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:186:18:186:24 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:158:5:158:14 | int test_unary(int) | int test_unary(int) |
| range_analysis.c:200:7:200:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:200:17:200:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:200:28:200:33 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:200:38:200:44 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:204:7:204:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:204:17:204:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:204:28:204:33 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:204:38:204:44 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:208:7:208:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:208:17:208:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:208:28:208:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:208:40:208:46 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:212:7:212:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:212:17:212:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:212:28:212:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:212:40:212:45 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:216:7:216:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:216:17:216:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:216:28:216:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:216:40:216:46 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:197:5:197:15 | int test_mult01(int, int) | int test_mult01(int, int) |
| range_analysis.c:228:7:228:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:228:17:228:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:228:28:228:33 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:228:38:228:44 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:232:7:232:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:232:17:232:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:232:28:232:33 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:232:38:232:44 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:236:7:236:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:236:17:236:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:236:28:236:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:236:40:236:46 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:240:7:240:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:240:17:240:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:240:28:240:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:240:40:240:45 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:244:7:244:12 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:244:17:244:23 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:244:28:244:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:244:40:244:46 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:225:5:225:15 | int test_mult02(int, int) | int test_mult02(int, int) |
| range_analysis.c:256:7:256:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:256:19:256:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:256:30:256:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:256:40:256:46 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:260:7:260:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:260:19:260:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:260:30:260:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:260:40:260:46 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:264:7:264:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:264:19:264:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:264:30:264:37 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:264:42:264:48 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:268:7:268:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:268:19:268:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:268:30:268:37 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:268:42:268:47 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:272:7:272:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:272:19:272:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:272:30:272:37 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:272:42:272:48 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:253:5:253:15 | int test_mult03(int, int) | int test_mult03(int, int) |
| range_analysis.c:284:7:284:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:284:19:284:24 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:284:29:284:34 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:284:39:284:45 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:288:7:288:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:288:19:288:24 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:288:29:288:34 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:288:39:288:45 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:292:7:292:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:292:19:292:24 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:292:29:292:36 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:292:41:292:47 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:296:7:296:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:296:19:296:24 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:296:29:296:36 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:296:41:296:46 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:300:7:300:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:300:19:300:24 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:300:29:300:36 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:300:41:300:47 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:281:5:281:15 | int test_mult04(int, int) | int test_mult04(int, int) |
| range_analysis.c:312:7:312:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:312:19:312:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:312:30:312:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:312:40:312:46 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:316:7:316:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:316:19:316:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:316:30:316:35 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:316:40:316:46 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:320:7:320:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:320:19:320:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:320:30:320:37 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:320:42:320:48 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:324:7:324:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:324:19:324:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:324:30:324:37 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:324:42:324:47 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:328:7:328:14 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:328:19:328:25 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:328:30:328:37 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:328:42:328:48 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:309:5:309:15 | int test_mult05(int, int) | int test_mult05(int, int) |
| range_analysis.c:338:7:338:11 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:336:5:336:10 | int test16(int) | int test16(int) |
| range_analysis.c:342:10:342:14 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:336:5:336:10 | int test16(int) | int test16(int) |
| range_analysis.c:346:7:346:11 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:336:5:336:10 | int test16(int) | int test16(int) |
| range_analysis.c:347:9:347:14 | ConditionalBranch: ... > ... | Conditional branch instruction ConditionalBranch: ... > ... with non-Boolean condition, in function '$@'. | range_analysis.c:336:5:336:10 | int test16(int) | int test16(int) |
| range_analysis.c:357:8:357:14 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:355:14:355:27 | unsigned int test_ternary01(unsigned int) | unsigned int test_ternary01(unsigned int) |
| range_analysis.c:358:8:358:15 | ConditionalBranch: ... >= ... | Conditional branch instruction ConditionalBranch: ... >= ... with non-Boolean condition, in function '$@'. | range_analysis.c:355:14:355:27 | unsigned int test_ternary01(unsigned int) | unsigned int test_ternary01(unsigned int) |
| range_analysis.c:365:7:365:13 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:355:14:355:27 | unsigned int test_ternary01(unsigned int) | unsigned int test_ternary01(unsigned int) |
| range_analysis.c:366:10:366:15 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | range_analysis.c:355:14:355:27 | unsigned int test_ternary01(unsigned int) | unsigned int test_ternary01(unsigned int) |
| range_analysis.c:367:10:367:17 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | range_analysis.c:355:14:355:27 | unsigned int test_ternary01(unsigned int) | unsigned int test_ternary01(unsigned int) |
| range_analysis.c:368:10:368:21 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | range_analysis.c:355:14:355:27 | unsigned int test_ternary01(unsigned int) | unsigned int test_ternary01(unsigned int) |
| range_analysis.c:369:10:369:36 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | range_analysis.c:355:14:355:27 | unsigned int test_ternary01(unsigned int) | unsigned int test_ternary01(unsigned int) |
| range_analysis.c:370:10:370:38 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | range_analysis.c:355:14:355:27 | unsigned int test_ternary01(unsigned int) | unsigned int test_ternary01(unsigned int) |
| range_analysis.c:371:10:371:39 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | range_analysis.c:355:14:355:27 | unsigned int test_ternary01(unsigned int) | unsigned int test_ternary01(unsigned int) |
| range_analysis.c:379:8:379:14 | ConditionalBranch: ... > ... | Conditional branch instruction ConditionalBranch: ... > ... with non-Boolean condition, in function '$@'. | range_analysis.c:377:14:377:27 | unsigned int test_ternary02(unsigned int) | unsigned int test_ternary02(unsigned int) |
| range_analysis.c:380:8:380:15 | ConditionalBranch: ... <= ... | Conditional branch instruction ConditionalBranch: ... <= ... with non-Boolean condition, in function '$@'. | range_analysis.c:377:14:377:27 | unsigned int test_ternary02(unsigned int) | unsigned int test_ternary02(unsigned int) |
| range_analysis.c:384:7:384:14 | ConditionalBranch: ... >= ... | Conditional branch instruction ConditionalBranch: ... >= ... with non-Boolean condition, in function '$@'. | range_analysis.c:377:14:377:27 | unsigned int test_ternary02(unsigned int) | unsigned int test_ternary02(unsigned int) |
| range_analysis.c:385:10:385:21 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | range_analysis.c:377:14:377:27 | unsigned int test_ternary02(unsigned int) | unsigned int test_ternary02(unsigned int) |
| range_analysis.c:386:10:386:21 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | range_analysis.c:377:14:377:27 | unsigned int test_ternary02(unsigned int) | unsigned int test_ternary02(unsigned int) |
| range_analysis.c:387:10:387:38 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | range_analysis.c:377:14:377:27 | unsigned int test_ternary02(unsigned int) | unsigned int test_ternary02(unsigned int) |
| range_analysis.c:394:20:394:26 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | range_analysis.c:393:14:393:25 | unsigned int test_comma01(unsigned int) | unsigned int test_comma01(unsigned int) |
| switchbody.c:5:11:5:15 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | switchbody.c:4:5:4:16 | int switch_block(int) | int switch_block(int) |
| switchbody.c:16:11:16:15 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | switchbody.c:15:5:15:17 | int switch_single(int) | int switch_single(int) |
| switchbody.c:28:11:28:15 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | switchbody.c:27:5:27:19 | int switch_notblock(int) | int switch_notblock(int) |
| test.c:3:9:3:9 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | test.c:2:6:2:11 | void f_if_1(int) | void f_if_1(int) |
| test.c:11:9:11:9 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | test.c:10:6:10:11 | void f_if_2() | void f_if_2() |
| test.c:19:9:19:9 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | test.c:18:6:18:11 | void f_if_3() | void f_if_3() |
| test.c:28:16:28:21 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | test.c:26:6:26:12 | void f_for_1() | void f_for_1() |
| test.c:36:16:36:16 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | test.c:34:6:34:12 | void f_for_2() | void f_for_2() |
| test.c:44:16:44:16 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | test.c:42:6:42:12 | void f_for_3() | void f_for_3() |
| test.c:51:11:51:11 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | test.c:50:6:50:14 | void f_while_1(int) | void f_while_1(int) |
| test.c:58:11:58:11 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | test.c:57:6:57:14 | void f_while_2() | void f_while_2() |
| test.c:65:11:65:11 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | test.c:64:6:64:14 | void f_while_3() | void f_while_3() |
| test.c:74:14:74:14 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | test.c:71:6:71:11 | void f_do_1(int) | void f_do_1(int) |
| test.c:81:14:81:14 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | test.c:78:6:78:11 | void f_do_2() | void f_do_2() |
| test.c:88:14:88:14 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | test.c:85:6:85:11 | void f_do_3() | void f_do_3() |
| test.c:93:13:93:13 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | test.c:92:6:92:13 | void f_cond_1(int) | void f_cond_1(int) |
| test.c:204:12:204:12 | ConditionalBranch: i | Conditional branch instruction ConditionalBranch: i with non-Boolean condition, in function '$@'. | test.c:203:6:203:15 | void f_switch_7(int) | void f_switch_7(int) |
| test.c:219:7:219:7 | ConditionalBranch: x | Conditional branch instruction ConditionalBranch: x with non-Boolean condition, in function '$@'. | test.c:218:5:218:11 | int f_and_1(int, int) | int f_and_1(int, int) |
| test.c:219:12:219:13 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | test.c:218:5:218:11 | int f_and_1(int, int) | int f_and_1(int, int) |
| test.c:219:12:219:13 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | test.c:218:5:218:11 | int f_and_1(int, int) | int f_and_1(int, int) |
| test.c:226:7:226:15 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | test.c:225:5:225:11 | int f_and_2(int, int) | int f_and_2(int, int) |
| test.c:226:7:226:15 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | test.c:225:5:225:11 | int f_and_2(int, int) | int f_and_2(int, int) |
| test.c:226:9:226:9 | ConditionalBranch: x | Conditional branch instruction ConditionalBranch: x with non-Boolean condition, in function '$@'. | test.c:225:5:225:11 | int f_and_2(int, int) | int f_and_2(int, int) |
| test.c:226:14:226:14 | ConditionalBranch: y | Conditional branch instruction ConditionalBranch: y with non-Boolean condition, in function '$@'. | test.c:225:5:225:11 | int f_and_2(int, int) | int f_and_2(int, int) |
| test.c:233:7:233:7 | ConditionalBranch: b | Conditional branch instruction ConditionalBranch: b with non-Boolean condition, in function '$@'. | test.c:232:6:232:19 | void f_if_ternary_1(int, int, int) | void f_if_ternary_1(int, int, int) |
| test.c:233:7:233:15 | ConditionalBranch: ... ? ... : ... | Conditional branch instruction ConditionalBranch: ... ? ... : ... with non-Boolean condition, in function '$@'. | test.c:232:6:232:19 | void f_if_ternary_1(int, int, int) | void f_if_ternary_1(int, int, int) |
| test.c:245:31:245:31 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | test.c:245:24:245:24 | const void *[] a | const void *[] a |
| unaryopexpr.c:8:5:8:6 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | unaryopexpr.c:1:13:1:13 | void f() | void f() |
| whilestmt.c:2:9:2:9 | ConditionalBranch: 0 | Conditional branch instruction ConditionalBranch: 0 with non-Boolean condition, in function '$@'. | whilestmt.c:1:13:1:26 | void always_false_1() | void always_false_1() |
| whilestmt.c:10:9:10:13 | ConditionalBranch: ! ... | Conditional branch instruction ConditionalBranch: ! ... with non-Boolean condition, in function '$@'. | whilestmt.c:8:13:8:26 | void always_false_2() | void always_false_2() |
| whilestmt.c:10:9:10:13 | LogicalNot: ! ... | Logical Not instruction LogicalNot: ! ... with non-Boolean operand, in function '$@'. | whilestmt.c:8:13:8:26 | void always_false_2() | void always_false_2() |
| whilestmt.c:16:9:16:9 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | whilestmt.c:15:13:15:25 | void always_true_1() | void always_true_1() |
| whilestmt.c:24:9:24:9 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | whilestmt.c:23:13:23:25 | void always_true_2() | void always_true_2() |
| whilestmt.c:33:9:33:9 | ConditionalBranch: 1 | Conditional branch instruction ConditionalBranch: 1 with non-Boolean condition, in function '$@'. | whilestmt.c:32:13:32:25 | void always_true_3() | void always_true_3() |
| whilestmt.c:41:9:41:14 | ConditionalBranch: ... < ... | Conditional branch instruction ConditionalBranch: ... < ... with non-Boolean condition, in function '$@'. | whilestmt.c:39:13:39:18 | void normal() | void normal() |
missingCppType

View File

@@ -3,7 +3,7 @@
"isRoot": true,
"tools": {
"paket": {
"version": "9.0.1",
"version": "8.0.3",
"commands": [
"paket"
]

View File

@@ -235,15 +235,14 @@
<Splits>$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',').Length)</Splits>
<PackageName>$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[0])</PackageName>
<PackageVersion>$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[1])</PackageVersion>
<Reference>$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[2])</Reference>
<AllPrivateAssets>$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[4])</AllPrivateAssets>
<CopyLocal Condition="%(PaketReferencesFileLinesInfo.Splits) &gt;= 6">$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[5])</CopyLocal>
<OmitContent Condition="%(PaketReferencesFileLinesInfo.Splits) &gt;= 7">$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[6])</OmitContent>
<ImportTargets Condition="%(PaketReferencesFileLinesInfo.Splits) &gt;= 8">$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[7])</ImportTargets>
<Aliases Condition="%(PaketReferencesFileLinesInfo.Splits) &gt;= 9">$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[8])</Aliases>
</PaketReferencesFileLinesInfo>
<PackageReference Condition=" '$(ManagePackageVersionsCentrally)' != 'true' Or '%(PaketReferencesFileLinesInfo.Reference)' == 'Direct' " Include="%(PaketReferencesFileLinesInfo.PackageName)">
<Version Condition=" '$(ManagePackageVersionsCentrally)' != 'true' ">%(PaketReferencesFileLinesInfo.PackageVersion)</Version>
<PackageReference Include="%(PaketReferencesFileLinesInfo.PackageName)">
<Version>%(PaketReferencesFileLinesInfo.PackageVersion)</Version>
<PrivateAssets Condition=" ('%(PaketReferencesFileLinesInfo.AllPrivateAssets)' == 'true') Or ('$(PackAsTool)' == 'true') ">All</PrivateAssets>
<ExcludeAssets Condition=" %(PaketReferencesFileLinesInfo.CopyLocal) == 'false' or %(PaketReferencesFileLinesInfo.AllPrivateAssets) == 'exclude'">runtime</ExcludeAssets>
<ExcludeAssets Condition=" %(PaketReferencesFileLinesInfo.OmitContent) == 'true'">$(ExcludeAssets);contentFiles</ExcludeAssets>
@@ -253,10 +252,6 @@
<AllowExplicitVersion>true</AllowExplicitVersion>
</PackageReference>
<PackageVersion Include="%(PaketReferencesFileLinesInfo.PackageName)">
<Version>%(PaketReferencesFileLinesInfo.PackageVersion)</Version>
</PackageVersion>
</ItemGroup>
<PropertyGroup>

View File

@@ -4,6 +4,8 @@ VisualStudioVersion = 15.0.27130.2036
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Semmle.Util", "extractor\Semmle.Util\Semmle.Util.csproj", "{CDD7AD69-0FD8-40F0-A9DA-F1077A2A85D6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Semmle.Extraction", "extractor\Semmle.Extraction\Semmle.Extraction.csproj", "{81EAAD75-4BE1-44E4-91DF-20778216DB64}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Semmle.Extraction.CSharp", "extractor\Semmle.Extraction.CSharp\Semmle.Extraction.CSharp.csproj", "{C4D62DA0-B64B-440B-86DC-AB52318CB8BF}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Semmle.Extraction.CSharp.DependencyFetching", "extractor\Semmle.Extraction.CSharp.DependencyFetching\Semmle.Extraction.CSharp.DependencyFetching.csproj", "{541D1AC5-E42C-4AB2-A1A4-C2355CE2A2EF}"

View File

@@ -1,7 +1,7 @@
<Project>
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<TargetFramework>net8.0</TargetFramework>
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
<Nullable>enable</Nullable>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>

View File

@@ -5,9 +5,9 @@ runs:
steps:
- uses: ./.github/actions/fetch-codeql
- name: Setup dotnet
uses: actions/setup-dotnet@v4
uses: actions/setup-dotnet@v3
with:
dotnet-version: 9.0.100
dotnet-version: 8.0.101
- name: Build Extractor
shell: bash
run: scripts/create-extractor-pack.sh

View File

@@ -14,7 +14,7 @@ codeql_csharp_library(
nowarn = ["CA1822"],
visibility = ["//csharp:__subpackages__"],
deps = [
"//csharp/extractor/Semmle.Extraction.CSharp",
"//csharp/extractor/Semmle.Extraction",
"//csharp/extractor/Semmle.Util",
],
)

View File

@@ -131,7 +131,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
}
// The version number should be kept in sync with the version .NET version used for building the application.
public const string LatestDotNetSdkVersion = "9.0.100";
public const string LatestDotNetSdkVersion = "8.0.101";
/// <summary>
/// Returns a script for downloading relevant versions of the

View File

@@ -15,7 +15,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
internal class NugetExeWrapper : IDisposable
{
private readonly string? nugetExe;
private readonly Semmle.Util.Logging.ILogger logger;
private readonly Util.Logging.ILogger logger;
public int PackageCount => fileProvider.PackagesConfigs.Count;
@@ -33,7 +33,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
/// <summary>
/// Create the package manager for a specified source tree.
/// </summary>
public NugetExeWrapper(FileProvider fileProvider, TemporaryDirectory packageDirectory, Semmle.Util.Logging.ILogger logger)
public NugetExeWrapper(FileProvider fileProvider, TemporaryDirectory packageDirectory, Util.Logging.ILogger logger)
{
this.fileProvider = fileProvider;
this.packageDirectory = packageDirectory;

View File

@@ -5,7 +5,7 @@
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj" />
<ProjectReference Include="..\Semmle.Extraction.CSharp\Semmle.Extraction.CSharp.csproj" />
<ProjectReference Include="..\Semmle.Extraction\Semmle.Extraction.csproj" />
<InternalsVisibleTo Include="Semmle.Extraction.Tests" />
</ItemGroup>

View File

@@ -2,7 +2,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net9.0</TargetFramework>
<TargetFramework>net8.0</TargetFramework>
<AssemblyName>Semmle.Extraction.CSharp.DependencyStubGenerator</AssemblyName>
<RootNamespace>Semmle.Extraction.CSharp.DependencyStubGenerator</RootNamespace>
<ImplicitUsings>enable</ImplicitUsings>

View File

@@ -6,18 +6,17 @@ load(
codeql_csharp_library(
name = "Semmle.Extraction.CSharp",
srcs = glob([
"CodeAnalysisExtensions/**/*.cs",
"Comments/**/*.cs",
"Entities/**/*.cs",
"Extractor/**/*.cs",
"Kinds/**/*.cs",
"Populators/**/*.cs",
"Trap/**/*.cs",
"*.cs",
]),
allow_unsafe_blocks = True,
visibility = ["//csharp:__subpackages__"],
deps = [
"//csharp/extractor/Semmle.Extraction",
"//csharp/extractor/Semmle.Extraction.CSharp.Util",
"//csharp/extractor/Semmle.Util",
"@paket.main//basic.compilerlog.util",

View File

@@ -0,0 +1,19 @@
namespace Semmle.Extraction.CSharp
{
/// <summary>
/// A factory for creating cached entities.
/// </summary>
internal abstract class CachedEntityFactory<TInit, TEntity>
: Extraction.CachedEntityFactory<TInit, TEntity> where TEntity : CachedEntity
{
/// <summary>
/// Initializes the entity, but does not generate any trap code.
/// </summary>
public sealed override TEntity Create(Extraction.Context cx, TInit init)
{
return Create((Context)cx, init);
}
public abstract TEntity Create(Context cx, TInit init);
}
}

View File

@@ -12,7 +12,7 @@ namespace Semmle.Extraction.CSharp.Comments
public IEnumerable<CommentLine> CommentLines => lines;
public Microsoft.CodeAnalysis.Location Location { get; private set; }
public Location Location { get; private set; }
public CommentBlock(CommentLine firstLine)
{
@@ -49,7 +49,7 @@ namespace Semmle.Extraction.CSharp.Comments
{
Location = !lines.Any()
? line.Location
: Microsoft.CodeAnalysis.Location.Create(
: Location.Create(
line.Location.SourceTree!,
new TextSpan(Location.SourceSpan.Start, line.Location.SourceSpan.End - Location.SourceSpan.Start));

View File

@@ -19,10 +19,10 @@ namespace Semmle.Extraction.CSharp
}
// Comments sorted by location.
private readonly SortedDictionary<Microsoft.CodeAnalysis.Location, CommentLine> comments = new SortedDictionary<Microsoft.CodeAnalysis.Location, CommentLine>(new LocationComparer());
private readonly SortedDictionary<Location, CommentLine> comments = new SortedDictionary<Location, CommentLine>(new LocationComparer());
// Program elements sorted by location.
private readonly SortedDictionary<Microsoft.CodeAnalysis.Location, Label> elements = new SortedDictionary<Microsoft.CodeAnalysis.Location, Label>(new LocationComparer());
private readonly SortedDictionary<Location, Label> elements = new SortedDictionary<Location, Label>(new LocationComparer());
private readonly Dictionary<Label, Key> duplicationGuardKeys = new Dictionary<Label, Key>();
@@ -33,9 +33,9 @@ namespace Semmle.Extraction.CSharp
return null;
}
private class LocationComparer : IComparer<Microsoft.CodeAnalysis.Location>
private class LocationComparer : IComparer<Location>
{
public int Compare(Microsoft.CodeAnalysis.Location? l1, Microsoft.CodeAnalysis.Location? l2) => CommentProcessor.Compare(l1, l2);
public int Compare(Location? l1, Location? l2) => CommentProcessor.Compare(l1, l2);
}
/// <summary>
@@ -44,7 +44,7 @@ namespace Semmle.Extraction.CSharp
/// <param name="l1">First location</param>
/// <param name="l2">Second location</param>
/// <returns>&lt;0 if l1 before l2, &gt;0 if l1 after l2, else 0.</returns>
private static int Compare(Microsoft.CodeAnalysis.Location? l1, Microsoft.CodeAnalysis.Location? l2)
private static int Compare(Location? l1, Location? l2)
{
if (object.ReferenceEquals(l1, l2))
return 0;
@@ -68,7 +68,7 @@ namespace Semmle.Extraction.CSharp
/// <param name="elementLabel">The label of the element in the trap file.</param>
/// <param name="duplicationGuardKey">The duplication guard key of the element, if any.</param>
/// <param name="loc">The location of the element.</param>
public void AddElement(Label elementLabel, Key? duplicationGuardKey, Microsoft.CodeAnalysis.Location? loc)
public void AddElement(Label elementLabel, Key? duplicationGuardKey, Location? loc)
{
if (loc is not null && loc.IsInSource)
elements[loc] = elementLabel;
@@ -78,7 +78,7 @@ namespace Semmle.Extraction.CSharp
// Ensure that commentBlock and element refer to the same file
// which can happen when processing multiple files.
private static void EnsureSameFile(Comments.CommentBlock commentBlock, ref KeyValuePair<Microsoft.CodeAnalysis.Location, Label>? element)
private static void EnsureSameFile(Comments.CommentBlock commentBlock, ref KeyValuePair<Location, Label>? element)
{
if (element is not null && element.Value.Key.SourceTree != commentBlock.Location.SourceTree)
element = null;
@@ -96,9 +96,9 @@ namespace Semmle.Extraction.CSharp
/// <param name="callback">Output binding information.</param>
private void GenerateBindings(
Comments.CommentBlock commentBlock,
KeyValuePair<Microsoft.CodeAnalysis.Location, Label>? previousElement,
KeyValuePair<Microsoft.CodeAnalysis.Location, Label>? nextElement,
KeyValuePair<Microsoft.CodeAnalysis.Location, Label>? parentElement,
KeyValuePair<Location, Label>? previousElement,
KeyValuePair<Location, Label>? nextElement,
KeyValuePair<Location, Label>? parentElement,
CommentBindingCallback callback
)
{
@@ -125,7 +125,7 @@ namespace Semmle.Extraction.CSharp
}
// Heuristic to decide which is the "best" element associated with the comment.
KeyValuePair<Microsoft.CodeAnalysis.Location, Label>? bestElement;
KeyValuePair<Location, Label>? bestElement;
if (previousElement is not null && previousElement.Value.Key.EndLine() == commentBlock.Location.StartLine())
{
@@ -180,14 +180,14 @@ namespace Semmle.Extraction.CSharp
private class ElementStack
{
// Invariant: the top of the stack must be contained by items below it.
private readonly Stack<KeyValuePair<Microsoft.CodeAnalysis.Location, Label>> elementStack = new();
private readonly Stack<KeyValuePair<Location, Label>> elementStack = new Stack<KeyValuePair<Location, Label>>();
/// <summary>
/// Add a new element to the stack.
/// </summary>
/// The stack is maintained.
/// <param name="value">The new element to push.</param>
public void Push(KeyValuePair<Microsoft.CodeAnalysis.Location, Label> value)
public void Push(KeyValuePair<Location, Label> value)
{
// Maintain the invariant by popping existing elements
while (elementStack.Count > 0 && !elementStack.Peek().Key.Contains(value.Key))
@@ -201,7 +201,7 @@ namespace Semmle.Extraction.CSharp
/// </summary>
/// <param name="l">The location of the comment.</param>
/// <returns>An element completely containing l, or null if none found.</returns>
public KeyValuePair<Microsoft.CodeAnalysis.Location, Label>? FindParent(Microsoft.CodeAnalysis.Location l) =>
public KeyValuePair<Location, Label>? FindParent(Location l) =>
elementStack.Where(v => v.Key.Contains(l)).FirstOrNull();
/// <summary>
@@ -209,7 +209,7 @@ namespace Semmle.Extraction.CSharp
/// </summary>
/// <param name="l">The location of the comment.</param>
/// <returns>The element before l, or null.</returns>
public KeyValuePair<Microsoft.CodeAnalysis.Location, Label>? FindBefore(Microsoft.CodeAnalysis.Location l)
public KeyValuePair<Location, Label>? FindBefore(Location l)
{
return elementStack
.Where(v => v.Key.SourceSpan.End < l.SourceSpan.Start)
@@ -222,7 +222,7 @@ namespace Semmle.Extraction.CSharp
/// <param name="comment">The location of the comment.</param>
/// <param name="next">The next element.</param>
/// <returns>The next element.</returns>
public KeyValuePair<Microsoft.CodeAnalysis.Location, Label>? FindAfter(Microsoft.CodeAnalysis.Location comment, KeyValuePair<Microsoft.CodeAnalysis.Location, Label>? next)
public KeyValuePair<Location, Label>? FindAfter(Location comment, KeyValuePair<Location, Label>? next)
{
var p = FindParent(comment);
return next.HasValue && p.HasValue && p.Value.Key.Before(next.Value.Key) ? null : next;
@@ -233,7 +233,7 @@ namespace Semmle.Extraction.CSharp
private void GenerateBindings(
Comments.CommentBlock block,
ElementStack elementStack,
KeyValuePair<Microsoft.CodeAnalysis.Location, Label>? nextElement,
KeyValuePair<Location, Label>? nextElement,
CommentBindingCallback cb
)
{
@@ -259,8 +259,8 @@ namespace Semmle.Extraction.CSharp
/// <param name="cb">Where to send the results.</param>
/// <returns>true if there are more comments to process, false otherwise.</returns>
private bool GenerateBindings(
IEnumerator<KeyValuePair<Microsoft.CodeAnalysis.Location, CommentLine>> commentEnumerator,
KeyValuePair<Microsoft.CodeAnalysis.Location, Label>? nextElement,
IEnumerator<KeyValuePair<Location, CommentLine>> commentEnumerator,
KeyValuePair<Location, Label>? nextElement,
ElementStack elementStack,
CommentBindingCallback cb
)
@@ -319,8 +319,8 @@ namespace Semmle.Extraction.CSharp
var elementStack = new ElementStack();
using IEnumerator<KeyValuePair<Microsoft.CodeAnalysis.Location, Label>> elementEnumerator = elements.GetEnumerator();
using IEnumerator<KeyValuePair<Microsoft.CodeAnalysis.Location, CommentLine>> commentEnumerator = comments.GetEnumerator();
using IEnumerator<KeyValuePair<Location, Label>> elementEnumerator = elements.GetEnumerator();
using IEnumerator<KeyValuePair<Location, CommentLine>> commentEnumerator = comments.GetEnumerator();
if (!commentEnumerator.MoveNext())
{
// There are no comments to process.

View File

@@ -3,8 +3,10 @@ using Microsoft.CodeAnalysis;
namespace Semmle.Extraction.CSharp.Entities
{
internal class Assembly : Location
internal class Assembly : Extraction.Entities.Location
{
public override Context Context => (Context)base.Context;
private readonly string assemblyPath;
private readonly IAssemblySymbol assembly;
private readonly bool isOutputAssembly;
@@ -54,7 +56,7 @@ namespace Semmle.Extraction.CSharp.Entities
return false;
}
public static Location Create(Context cx, Microsoft.CodeAnalysis.Location loc) => AssemblyConstructorFactory.Instance.CreateEntity(cx, loc, loc);
public static Extraction.Entities.Location Create(Context cx, Microsoft.CodeAnalysis.Location loc) => AssemblyConstructorFactory.Instance.CreateEntity(cx, loc, loc);
private class AssemblyConstructorFactory : CachedEntityFactory<Microsoft.CodeAnalysis.Location?, Assembly>
{

View File

@@ -151,9 +151,9 @@ namespace Semmle.Extraction.CSharp.Entities
public override Microsoft.CodeAnalysis.Location? ReportingLocation => attributeSyntax?.Name.GetLocation();
private Location? location;
private Semmle.Extraction.Entities.Location? location;
private Location Location =>
private Semmle.Extraction.Entities.Location Location =>
location ??= Context.CreateLocation(attributeSyntax is null
? entity.ReportingLocation
: attributeSyntax.Name.GetLocation());

View File

@@ -0,0 +1,12 @@
namespace Semmle.Extraction.CSharp.Entities
{
internal abstract class CachedEntity<T> : Extraction.CachedEntity<T> where T : notnull
{
public override Context Context => (Context)base.Context;
protected CachedEntity(Context context, T symbol)
: base(context, symbol)
{
}
}
}

View File

@@ -1,6 +1,8 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection.Metadata;
using System.Reflection.Metadata.Ecma335;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp.Syntax;
@@ -87,7 +89,7 @@ namespace Semmle.Extraction.CSharp.Entities
/// </summary>
public virtual Microsoft.CodeAnalysis.Location? FullLocation => Symbol.Locations.BestOrDefault();
public virtual IEnumerable<Location> Locations
public virtual IEnumerable<Extraction.Entities.Location> Locations
{
get
{
@@ -141,6 +143,6 @@ namespace Semmle.Extraction.CSharp.Entities
public override bool NeedsPopulation => Context.Defines(Symbol);
public Location Location => Context.CreateLocation(ReportingLocation);
public Extraction.Entities.Location Location => Context.CreateLocation(ReportingLocation);
}
}

View File

@@ -1,4 +1,5 @@
using System.IO;
using Semmle.Extraction.Entities;
namespace Semmle.Extraction.CSharp.Entities
{

View File

@@ -3,6 +3,7 @@ using System.Collections.Concurrent;
using System.IO;
using System.Linq;
using Microsoft.CodeAnalysis;
using Semmle.Extraction.Entities;
using Semmle.Util;
namespace Semmle.Extraction.CSharp.Entities

View File

@@ -116,7 +116,7 @@ namespace Semmle.Extraction.CSharp.Entities
}
}
private void ExtractSourceInitializer(TextWriter trapFile, ITypeSymbol? type, IMethodSymbol? symbol, ArgumentListSyntax arguments, Microsoft.CodeAnalysis.Location location)
private void ExtractSourceInitializer(TextWriter trapFile, ITypeSymbol? type, IMethodSymbol? symbol, ArgumentListSyntax arguments, Location location)
{
var initInfo = new ExpressionInfo(Context,
AnnotatedTypeSymbol.CreateNotAnnotated(type),

View File

@@ -15,7 +15,7 @@ namespace Semmle.Extraction.CSharp.Entities
{
private readonly IExpressionInfo info;
public AnnotatedTypeSymbol? Type { get; private set; }
public Location Location { get; }
public Extraction.Entities.Location Location { get; }
public ExprKind Kind { get; }
internal Expression(IExpressionInfo info, bool shouldPopulate = true)
@@ -62,7 +62,7 @@ namespace Semmle.Extraction.CSharp.Entities
type.PopulateGenerics();
}
public override Microsoft.CodeAnalysis.Location? ReportingLocation => Location.Symbol;
public override Location? ReportingLocation => Location.Symbol;
internal void SetType(ITypeSymbol? type)
{
@@ -138,7 +138,7 @@ namespace Semmle.Extraction.CSharp.Entities
/// Creates a generated expression from a typed constant.
/// </summary>
public static Expression? CreateGenerated(Context cx, TypedConstant constant, IExpressionParentEntity parent,
int childIndex, Location location)
int childIndex, Extraction.Entities.Location location)
{
if (constant.IsNull ||
constant.Type is null)
@@ -176,7 +176,7 @@ namespace Semmle.Extraction.CSharp.Entities
/// Creates a generated expression for a default argument value.
/// </summary>
public static Expression? CreateGenerated(Context cx, IParameterSymbol parameter, IExpressionParentEntity parent,
int childIndex, Location location)
int childIndex, Extraction.Entities.Location location)
{
if (!parameter.HasExplicitDefaultValue ||
parameter.Type is IErrorTypeSymbol)
@@ -315,7 +315,7 @@ namespace Semmle.Extraction.CSharp.Entities
/// <summary>
/// Given `b` in `a?.b.c`, return `(a?.b, a?.b)`.
///
///
/// Given `c` in `a?.b?.c.d`, return `(b?.c, a?.b?.c)`.
/// </summary>
/// <param name="node">A MemberBindingExpression.</param>

View File

@@ -10,14 +10,14 @@ namespace Semmle.Extraction.CSharp.Entities
{
public Context Context { get; }
public AnnotatedTypeSymbol? Type { get; }
public Location Location { get; }
public Extraction.Entities.Location Location { get; }
public ExprKind Kind { get; }
public IExpressionParentEntity Parent { get; }
public int Child { get; }
public bool IsCompilerGenerated { get; }
public string? ExprValue { get; }
public ExpressionInfo(Context cx, AnnotatedTypeSymbol? type, Location location, ExprKind kind,
public ExpressionInfo(Context cx, AnnotatedTypeSymbol? type, Extraction.Entities.Location location, ExprKind kind,
IExpressionParentEntity parent, int child, bool isCompilerGenerated, string? value)
{
Context = cx;

View File

@@ -115,9 +115,9 @@ namespace Semmle.Extraction.CSharp.Entities
}
}
private Location? cachedLocation;
private Extraction.Entities.Location? cachedLocation;
public Location Location
public Extraction.Entities.Location Location
{
get
{

View File

@@ -88,7 +88,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
public static Expression Create(ExpressionNodeInfo info) => new NormalArrayCreation(info).TryPopulate();
public static Expression CreateGenerated(Context cx, IExpressionParentEntity parent, int childIndex, ITypeSymbol type, IEnumerable<TypedConstant> items, Location location)
public static Expression CreateGenerated(Context cx, IExpressionParentEntity parent, int childIndex, ITypeSymbol type, IEnumerable<TypedConstant> items, Semmle.Extraction.Entities.Location location)
{
var info = new ExpressionInfo(
cx,

View File

@@ -32,7 +32,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
public override Microsoft.CodeAnalysis.Location ReportingLocation => Syntax.GetLocation();
public static Expression CreateGenerated(Context cx, IExpressionParentEntity parent, int childIndex, Microsoft.CodeAnalysis.ITypeSymbol type, object? value, Action<Expression, int> createChild, Location location)
public static Expression CreateGenerated(Context cx, IExpressionParentEntity parent, int childIndex, Microsoft.CodeAnalysis.ITypeSymbol type, object? value, Action<Expression, int> createChild, Extraction.Entities.Location location)
{
var info = new ExpressionInfo(
cx,

View File

@@ -15,7 +15,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
TypeAccess.Create(Context, Syntax.Type, this, 0);
}
public static Expression CreateGenerated(Context cx, IExpressionParentEntity parent, int childIndex, Location location, string? value)
public static Expression CreateGenerated(Context cx, IExpressionParentEntity parent, int childIndex, Extraction.Entities.Location location, string? value)
{
var info = new ExpressionInfo(
cx,

View File

@@ -55,7 +55,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
/// Creates a new generated expression with an implicit conversion added.
/// </summary>
public static Expression CreateGeneratedConversion(Context cx, IExpressionParentEntity parent, int childIndex, ITypeSymbol type, object value,
Location location)
Extraction.Entities.Location location)
{
ExpressionInfo create(ExprKind kind, string? v) =>
new ExpressionInfo(
@@ -85,7 +85,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
/// Creates a new generated cast expression.
/// </summary>
public static Expression CreateGenerated(Context cx, IExpressionParentEntity parent, int childIndex, ITypeSymbol type, object value,
Location location)
Extraction.Entities.Location location)
{
var info = new ExpressionInfo(cx,
AnnotatedTypeSymbol.CreateNotAnnotated(type),

View File

@@ -36,7 +36,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
}
}
public static Expression CreateGenerated(Context cx, IExpressionParentEntity parent, int index, Location location)
public static Expression CreateGenerated(Context cx, IExpressionParentEntity parent, int index, Extraction.Entities.Location location)
{
var info = new ExpressionInfo(
cx,

View File

@@ -37,7 +37,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
return GetExprKind(type, info.Node, info.Location, info.Context);
}
private static ExprKind GetExprKind(ITypeSymbol? type, ExpressionSyntax? expr, Location loc, Context context)
private static ExprKind GetExprKind(ITypeSymbol? type, ExpressionSyntax? expr, Extraction.Entities.Location loc, Context context)
{
switch (type?.SpecialType)
{
@@ -87,7 +87,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
}
public static Expression CreateGenerated(Context cx, IExpressionParentEntity parent, int childIndex, ITypeSymbol type, object? value,
Location location)
Extraction.Entities.Location location)
{
var kind = value is null ? ExprKind.NULL_LITERAL : GetExprKind(type, null, location, cx);
var info = new ExpressionInfo(
@@ -103,7 +103,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
return new Expression(info);
}
public static Expression CreateGeneratedNullLiteral(Context cx, IExpressionParentEntity parent, int childIndex, Location location)
public static Expression CreateGeneratedNullLiteral(Context cx, IExpressionParentEntity parent, int childIndex, Extraction.Entities.Location location)
{
var info = new ExpressionInfo(
cx,

View File

@@ -49,7 +49,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
// The `type` symbol must be a System.DateTime type and the value must be a System.DateTime object.
// The expression that is being created is a call to the System.DateTime(long) constructor, where
// the number of ticks from the `value` object is used as the argument to the constructor call.
public static Expression CreateGenerated(Context cx, IExpressionParentEntity parent, int childIndex, ITypeSymbol type, object? value, Location location)
public static Expression CreateGenerated(Context cx, IExpressionParentEntity parent, int childIndex, ITypeSymbol type, object? value, Extraction.Entities.Location location)
{
var constructorSymbol = GetDateTimeConstructor(type) ?? throw new InternalError("Could not find symbol for System.DateTime(long)");
var expr = new DateTimeObjectCreation(constructorSymbol, new ExpressionInfo(
@@ -68,4 +68,4 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
return expr.TryPopulate();
}
}
}
}

View File

@@ -7,7 +7,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
{
private This(IExpressionInfo info) : base(info) { }
public static This CreateImplicit(Context cx, ITypeSymbol @class, Location loc, IExpressionParentEntity parent, int child) =>
public static This CreateImplicit(Context cx, ITypeSymbol @class, Extraction.Entities.Location loc, IExpressionParentEntity parent, int child) =>
new This(new ExpressionInfo(cx, AnnotatedTypeSymbol.CreateNotAnnotated(@class), loc, Kinds.ExprKind.THIS_ACCESS, parent, child, isCompilerGenerated: true, null));
public static This CreateExplicit(ExpressionNodeInfo info) => new This(info.SetKind(ExprKind.THIS_ACCESS));

View File

@@ -35,7 +35,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
public static Expression Create(ExpressionNodeInfo info) => new TypeAccess(info).TryPopulate();
public static Expression CreateGenerated(Context cx, IExpressionParentEntity parent, int childIndex, Microsoft.CodeAnalysis.ITypeSymbol type, Location location)
public static Expression CreateGenerated(Context cx, IExpressionParentEntity parent, int childIndex, Microsoft.CodeAnalysis.ITypeSymbol type, Extraction.Entities.Location location)
{
var typeAccessInfo = new ExpressionInfo(
cx,

View File

@@ -17,7 +17,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
TypeAccess.Create(Context, Syntax.Type, this, TypeAccessIndex);
}
public static Expression CreateGenerated(Context cx, IExpressionParentEntity parent, int childIndex, Microsoft.CodeAnalysis.ITypeSymbol type, Location location)
public static Expression CreateGenerated(Context cx, IExpressionParentEntity parent, int childIndex, Microsoft.CodeAnalysis.ITypeSymbol type, Extraction.Entities.Location location)
{
var info = new ExpressionInfo(
cx,

View File

@@ -13,7 +13,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
{
private VariableDeclaration(IExpressionInfo info) : base(info) { }
public static VariableDeclaration Create(Context cx, ISymbol symbol, AnnotatedTypeSymbol? type, TypeSyntax? optionalSyntax, Location exprLocation, bool isVar, IExpressionParentEntity parent, int child)
public static VariableDeclaration Create(Context cx, ISymbol symbol, AnnotatedTypeSymbol? type, TypeSyntax? optionalSyntax, Extraction.Entities.Location exprLocation, bool isVar, IExpressionParentEntity parent, int child)
{
var ret = new VariableDeclaration(new ExpressionInfo(cx, type, exprLocation, ExprKind.LOCAL_VAR_DECL, parent, child, isCompilerGenerated: false, null));
cx.Try(null, null, () =>

View File

@@ -4,6 +4,7 @@ using System.Linq;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Semmle.Extraction.CSharp.Entities.Expressions;
using Semmle.Extraction.Entities;
using Semmle.Extraction.Kinds;
namespace Semmle.Extraction.CSharp.Entities
@@ -104,7 +105,7 @@ namespace Semmle.Extraction.CSharp.Entities
}
}
private Expression AddInitializerAssignment(TextWriter trapFile, ExpressionSyntax initializer, Location loc,
private Expression AddInitializerAssignment(TextWriter trapFile, ExpressionSyntax initializer, Extraction.Entities.Location loc,
string? constValue, ref int child)
{
var type = Symbol.GetAnnotatedType();

View File

@@ -6,36 +6,21 @@ using Semmle.Util;
namespace Semmle.Extraction.CSharp.Entities
{
public class File : CachedEntity<string>
internal class File : Extraction.Entities.File
{
protected readonly string originalPath;
private readonly Lazy<PathTransformer.ITransformedPath> transformedPathLazy;
protected PathTransformer.ITransformedPath TransformedPath => transformedPathLazy.Value;
public override Microsoft.CodeAnalysis.Location? ReportingLocation => null;
public override bool NeedsPopulation => true;
public override Context Context => (Context)base.Context;
protected File(Context cx, string path)
: base(cx, path)
{
originalPath = path;
var adjustedPath = BinaryLogExtractionContext.GetAdjustedPath(Context.ExtractionContext, originalPath) ?? path;
transformedPathLazy = new Lazy<PathTransformer.ITransformedPath>(() => Context.ExtractionContext.PathTransformer.Transform(adjustedPath));
}
public override void WriteId(EscapingTextWriter trapFile)
{
trapFile.Write(TransformedPath.DatabaseId);
trapFile.Write(";sourcefile");
}
public override void Populate(TextWriter trapFile)
{
trapFile.files(this, TransformedPath.Value);
if (TransformedPath.ParentDirectory is PathTransformer.ITransformedPath dir)
trapFile.containerparent(Folder.Create(Context, dir), this);
trapFile.containerparent(Extraction.Entities.Folder.Create(Context, dir), this);
var trees = Context.Compilation.SyntaxTrees.Where(t => t.FilePath == originalPath);

View File

@@ -0,0 +1,12 @@
namespace Semmle.Extraction.CSharp.Entities
{
internal abstract class FreshEntity : Extraction.FreshEntity
{
public override Context Context => (Context)base.Context;
protected FreshEntity(Context cx)
: base(cx)
{
}
}
}

View File

@@ -18,7 +18,7 @@ namespace Semmle.Extraction.CSharp.Entities
/// <summary>
/// The location of the expression.
/// </summary>
Location Location { get; }
Extraction.Entities.Location Location { get; }
/// <summary>
/// The kind of the expression.

View File

@@ -290,7 +290,7 @@ namespace Semmle.Extraction.CSharp.Entities
public Method OriginalDefinition => Create(Context, Symbol.OriginalDefinition);
public override Microsoft.CodeAnalysis.Location? FullLocation => ReportingLocation;
public override Location? FullLocation => ReportingLocation;
public override bool IsSourceDeclaration => Symbol.IsSourceDeclaration();

View File

@@ -3,12 +3,12 @@ using Microsoft.CodeAnalysis;
namespace Semmle.Extraction.CSharp.Entities
{
internal class Modifier : CachedEntity<string>
internal class Modifier : Extraction.CachedEntity<string>
{
private Modifier(Context cx, string init)
: base(cx, init) { }
public override Microsoft.CodeAnalysis.Location? ReportingLocation => null;
public override Location? ReportingLocation => null;
public override void WriteId(EscapingTextWriter trapFile)
{

View File

@@ -8,7 +8,7 @@ namespace Semmle.Extraction.CSharp.Entities
private Namespace(Context cx, INamespaceSymbol init)
: base(cx, init) { }
public override Microsoft.CodeAnalysis.Location? ReportingLocation => null;
public override Location? ReportingLocation => null;
public override void Populate(TextWriter trapFile)
{

View File

@@ -1,18 +1,22 @@
using System;
using System.IO;
using Microsoft.CodeAnalysis;
using Semmle.Util.Logging;
namespace Semmle.Extraction.CSharp.Entities
{
internal class NonGeneratedSourceLocation : SourceLocation
internal class NonGeneratedSourceLocation : Extraction.Entities.SourceLocation
{
protected NonGeneratedSourceLocation(Context cx, Microsoft.CodeAnalysis.Location init)
public override Context Context => (Context)base.Context;
protected NonGeneratedSourceLocation(Context cx, Location init)
: base(cx, init)
{
Position = init.GetLineSpan();
FileEntity = File.Create(Context, Position.Path);
}
public static NonGeneratedSourceLocation Create(Context cx, Microsoft.CodeAnalysis.Location loc) => SourceLocationFactory.Instance.CreateEntity(cx, loc, loc);
public static NonGeneratedSourceLocation Create(Context cx, Location loc) => SourceLocationFactory.Instance.CreateEntity(cx, loc, loc);
public override void Populate(TextWriter trapFile)
{
@@ -24,7 +28,7 @@ namespace Semmle.Extraction.CSharp.Entities
if (mapped.HasMappedPath && mapped.IsValid)
{
var path = Context.TryAdjustRelativeMappedFilePath(mapped.Path, Position.Path);
var mappedLoc = Create(Context, Microsoft.CodeAnalysis.Location.Create(path, default, mapped.Span));
var mappedLoc = Create(Context, Location.Create(path, default, mapped.Span));
trapFile.locations_mapped(this, mappedLoc);
}
@@ -54,11 +58,11 @@ namespace Semmle.Extraction.CSharp.Entities
trapFile.Write(Position.Span.End.Character);
}
private class SourceLocationFactory : CachedEntityFactory<Microsoft.CodeAnalysis.Location, NonGeneratedSourceLocation>
private class SourceLocationFactory : CachedEntityFactory<Location, NonGeneratedSourceLocation>
{
public static SourceLocationFactory Instance { get; } = new SourceLocationFactory();
public override NonGeneratedSourceLocation Create(Context cx, Microsoft.CodeAnalysis.Location init) => new NonGeneratedSourceLocation(cx, init);
public override NonGeneratedSourceLocation Create(Context cx, Location init) => new NonGeneratedSourceLocation(cx, init);
}
}
}

View File

@@ -4,6 +4,7 @@ using System.Linq;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Semmle.Extraction.CSharp.Populators;
using Semmle.Extraction.Entities;
namespace Semmle.Extraction.CSharp.Entities
{

View File

@@ -1,6 +1,7 @@
using System.IO;
using Microsoft.CodeAnalysis.CSharp;
using Semmle.Extraction.CSharp.Populators;
using Semmle.Extraction.Entities;
namespace Semmle.Extraction.CSharp.Entities
{

View File

@@ -1,6 +1,7 @@
using System.IO;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Semmle.Extraction.Entities;
using Semmle.Extraction.Kinds;
namespace Semmle.Extraction.CSharp.Entities.Statements

View File

@@ -101,7 +101,7 @@ namespace Semmle.Extraction.CSharp.Entities
public override IEnumerable<Type> TypeMentions => TypeArguments;
public override IEnumerable<Location> Locations
public override IEnumerable<Extraction.Entities.Location> Locations
{
get
{

View File

@@ -102,7 +102,7 @@ namespace Semmle.Extraction.CSharp.Entities
{
}
public override Microsoft.CodeAnalysis.Location ReportingLocation => throw new System.NotImplementedException();
public override Location ReportingLocation => throw new System.NotImplementedException();
public override bool NeedsPopulation => true;

View File

@@ -49,7 +49,7 @@ namespace Semmle.Extraction.CSharp.Entities
}
}
public override Microsoft.CodeAnalysis.Location? ReportingLocation => null;
public override Location? ReportingLocation => null;
public static TypeParameterConstraints Create(Context cx, TypeParameter p) =>
TypeParameterConstraintsFactory.Instance.CreateEntity(cx, (typeof(TypeParameterConstraints), p), p);
@@ -62,3 +62,4 @@ namespace Semmle.Extraction.CSharp.Entities
}
}
}

View File

@@ -2,9 +2,8 @@ using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Linq;
using Microsoft.CodeAnalysis;
using Semmle.Util.Logging;
using Semmle.Extraction.Entities;
namespace Semmle.Extraction.CSharp
{
@@ -12,453 +11,8 @@ namespace Semmle.Extraction.CSharp
/// State that needs to be available throughout the extraction process.
/// There is one Context object per trap output file.
/// </summary>
public class Context
internal class Context : Extraction.Context
{
/// <summary>
/// Access various extraction functions, e.g. logger, trap writer.
/// </summary>
public ExtractionContext ExtractionContext { get; }
/// <summary>
/// Access to the trap file.
/// </summary>
public TrapWriter TrapWriter { get; }
/// <summary>
/// Holds if assembly information should be prefixed to TRAP labels.
/// </summary>
public bool ShouldAddAssemblyTrapPrefix { get; }
public IList<object> TrapStackSuffix { get; } = new List<object>();
private int GetNewId() => TrapWriter.IdCounter++;
// A recursion guard against writing to the trap file whilst writing an id to the trap file.
private bool writingLabel = false;
private readonly Queue<IEntity> labelQueue = [];
protected void DefineLabel(IEntity entity)
{
if (writingLabel)
{
// Don't define a label whilst writing a label.
labelQueue.Enqueue(entity);
}
else
{
try
{
writingLabel = true;
entity.DefineLabel(TrapWriter.Writer);
}
finally
{
writingLabel = false;
if (labelQueue.Any())
{
DefineLabel(labelQueue.Dequeue());
}
}
}
}
#if DEBUG_LABELS
private void CheckEntityHasUniqueLabel(string id, CachedEntity entity)
{
if (idLabelCache.ContainsKey(id))
{
this.Extractor.Message(new Message("Label collision for " + id, entity.Label.ToString(), CreateLocation(entity.ReportingLocation), "", Severity.Warning));
}
else
{
idLabelCache[id] = entity;
}
}
#endif
protected Label GetNewLabel() => new Label(GetNewId());
internal TEntity CreateEntity<TInit, TEntity>(CachedEntityFactory<TInit, TEntity> factory, object cacheKey, TInit init)
where TEntity : Entities.CachedEntity =>
cacheKey is ISymbol s ? CreateEntity(factory, s, init, symbolEntityCache) : CreateEntity(factory, cacheKey, init, objectEntityCache);
internal TEntity CreateEntityFromSymbol<TSymbol, TEntity>(CachedEntityFactory<TSymbol, TEntity> factory, TSymbol init)
where TSymbol : ISymbol
where TEntity : Entities.CachedEntity => CreateEntity(factory, init, init, symbolEntityCache);
/// <summary>
/// Creates and populates a new entity, or returns the existing one from the cache.
/// </summary>
/// <param name="factory">The entity factory.</param>
/// <param name="cacheKey">The key used for caching.</param>
/// <param name="init">The initializer for the entity.</param>
/// <param name="dictionary">The dictionary to use for caching.</param>
/// <returns>The new/existing entity.</returns>
private TEntity CreateEntity<TInit, TCacheKey, TEntity>(CachedEntityFactory<TInit, TEntity> factory, TCacheKey cacheKey, TInit init, IDictionary<TCacheKey, Entities.CachedEntity> dictionary)
where TCacheKey : notnull
where TEntity : Entities.CachedEntity
{
if (dictionary.TryGetValue(cacheKey, out var cached))
return (TEntity)cached;
using (StackGuard)
{
var label = GetNewLabel();
var entity = factory.Create(this, init);
entity.Label = label;
dictionary[cacheKey] = entity;
DefineLabel(entity);
if (entity.NeedsPopulation)
Populate(init as ISymbol, entity);
#if DEBUG_LABELS
using var id = new EscapingTextWriter();
entity.WriteQuotedId(id);
CheckEntityHasUniqueLabel(id.ToString(), entity);
#endif
return entity;
}
}
/// <summary>
/// Creates a fresh label with ID "*", and set it on the
/// supplied <paramref name="entity"/> object.
/// </summary>
internal void AddFreshLabel(Entity entity)
{
entity.Label = GetNewLabel();
entity.DefineFreshLabel(TrapWriter.Writer);
}
#if DEBUG_LABELS
private readonly Dictionary<string, CachedEntity> idLabelCache = new Dictionary<string, CachedEntity>();
#endif
private readonly IDictionary<object, Entities.CachedEntity> objectEntityCache = new Dictionary<object, Entities.CachedEntity>();
private readonly IDictionary<ISymbol, Entities.CachedEntity> symbolEntityCache = new Dictionary<ISymbol, Entities.CachedEntity>(10000, SymbolEqualityComparer.Default);
/// <summary>
/// Queue of items to populate later.
/// The only reason for this is so that the call stack does not
/// grow indefinitely, causing a potential stack overflow.
/// </summary>
private readonly Queue<Action> populateQueue = new Queue<Action>();
/// <summary>
/// Enqueue the given action to be performed later.
/// </summary>
/// <param name="toRun">The action to run.</param>
public void PopulateLater(Action a, bool preserveDuplicationKey = true)
{
var key = preserveDuplicationKey ? GetCurrentTagStackKey() : null;
if (key is not null)
{
// If we are currently executing with a duplication guard, then the same
// guard must be used for the deferred action
populateQueue.Enqueue(() => WithDuplicationGuard(key, a));
}
else
{
populateQueue.Enqueue(a);
}
}
/// <summary>
/// Runs the main populate loop until there's nothing left to populate.
/// </summary>
public void PopulateAll()
{
while (populateQueue.Any())
{
try
{
populateQueue.Dequeue()();
}
catch (InternalError ex)
{
ExtractionError(new Message(ex.Text, ex.EntityText, CreateLocation(ex.Location), ex.StackTrace));
}
catch (Exception ex) // lgtm[cs/catch-of-all-exceptions]
{
ExtractionError($"Uncaught exception. {ex.Message}", null, CreateLocation(), ex.StackTrace);
}
}
}
private int currentRecursiveDepth = 0;
private const int maxRecursiveDepth = 150;
private void EnterScope()
{
if (currentRecursiveDepth >= maxRecursiveDepth)
throw new StackOverflowException($"Maximum nesting depth of {maxRecursiveDepth} exceeded");
++currentRecursiveDepth;
}
private void ExitScope()
{
--currentRecursiveDepth;
}
public IDisposable StackGuard => new ScopeGuard(this);
private sealed class ScopeGuard : IDisposable
{
private readonly Context cx;
public ScopeGuard(Context c)
{
cx = c;
cx.EnterScope();
}
public void Dispose()
{
cx.ExitScope();
}
}
private class PushEmitter : ITrapEmitter
{
private readonly Key key;
public PushEmitter(Key key)
{
this.key = key;
}
public void EmitTrap(TextWriter trapFile)
{
trapFile.Write(".push ");
key.AppendTo(trapFile);
trapFile.WriteLine();
}
}
private class PopEmitter : ITrapEmitter
{
public void EmitTrap(TextWriter trapFile)
{
trapFile.WriteLine(".pop");
}
}
private readonly Stack<Key> tagStack = new Stack<Key>();
/// <summary>
/// Populates an entity, handling the tag stack appropriately
/// </summary>
/// <param name="optionalSymbol">Symbol for reporting errors.</param>
/// <param name="entity">The entity to populate.</param>
/// <exception cref="InternalError">Thrown on invalid trap stack behaviour.</exception>
private void Populate(ISymbol? optionalSymbol, Entities.CachedEntity entity)
{
if (writingLabel)
{
// Don't write tuples etc if we're currently defining a label
PopulateLater(() => Populate(optionalSymbol, entity));
return;
}
bool duplicationGuard, deferred;
if (ExtractionContext.Mode is ExtractorMode.Standalone)
{
duplicationGuard = false;
deferred = false;
}
else
{
switch (entity.TrapStackBehaviour)
{
case TrapStackBehaviour.NeedsLabel:
if (!tagStack.Any())
ExtractionError("TagStack unexpectedly empty", optionalSymbol, entity);
duplicationGuard = false;
deferred = false;
break;
case TrapStackBehaviour.NoLabel:
duplicationGuard = false;
deferred = tagStack.Any();
break;
case TrapStackBehaviour.OptionalLabel:
duplicationGuard = false;
deferred = false;
break;
case TrapStackBehaviour.PushesLabel:
duplicationGuard = true;
deferred = tagStack.Any();
break;
default:
throw new InternalError("Unexpected TrapStackBehaviour");
}
}
var a = duplicationGuard && IsEntityDuplicationGuarded(entity, out var loc)
? (() =>
{
var args = new object[TrapStackSuffix.Count + 2];
args[0] = entity;
args[1] = loc;
for (var i = 0; i < TrapStackSuffix.Count; i++)
{
args[i + 2] = TrapStackSuffix[i];
}
WithDuplicationGuard(new Key(args), () => entity.Populate(TrapWriter.Writer));
})
: (Action)(() => this.Try(null, optionalSymbol, () => entity.Populate(TrapWriter.Writer)));
if (deferred)
populateQueue.Enqueue(a);
else
a();
}
protected Key? GetCurrentTagStackKey() => tagStack.Count > 0
? tagStack.Peek()
: null;
/// <summary>
/// Log an extraction error.
/// </summary>
/// <param name="message">The error message.</param>
/// <param name="entityText">A textual representation of the failed entity.</param>
/// <param name="location">The location of the error.</param>
/// <param name="stackTrace">An optional stack trace of the error, or null.</param>
/// <param name="severity">The severity of the error.</param>
public void ExtractionError(string message, string? entityText, Entities.Location? location, string? stackTrace = null, Severity severity = Severity.Error)
{
var msg = new Message(message, entityText, location, stackTrace, severity);
ExtractionError(msg);
}
/// <summary>
/// Log an extraction error.
/// </summary>
/// <param name="message">The text of the message.</param>
/// <param name="optionalSymbol">The symbol of the error, or null.</param>
/// <param name="optionalEntity">The entity of the error, or null.</param>
private void ExtractionError(string message, ISymbol? optionalSymbol, Entity optionalEntity)
{
if (!(optionalSymbol is null))
{
ExtractionError(message, optionalSymbol.ToDisplayString(), CreateLocation(optionalSymbol.Locations.BestOrDefault()));
}
else if (!(optionalEntity is null))
{
ExtractionError(message, optionalEntity.Label.ToString(), CreateLocation(optionalEntity.ReportingLocation));
}
else
{
ExtractionError(message, null, CreateLocation());
}
}
/// <summary>
/// Log an extraction message.
/// </summary>
/// <param name="msg">The message to log.</param>
private void ExtractionError(Message msg)
{
_ = new Entities.ExtractionMessage(this, msg);
ExtractionContext.Message(msg);
}
private void ExtractionError(InternalError error)
{
ExtractionError(new Message(error.Message, error.EntityText, CreateLocation(error.Location), error.StackTrace, Severity.Error));
}
private void ReportError(InternalError error)
{
if (!ExtractionContext.Mode.HasFlag(ExtractorMode.Standalone))
throw error;
ExtractionError(error);
}
/// <summary>
/// Signal an error in the program model.
/// </summary>
/// <param name="node">The syntax node causing the failure.</param>
/// <param name="msg">The error message.</param>
public void ModelError(SyntaxNode node, string msg)
{
ReportError(new InternalError(node, msg));
}
/// <summary>
/// Signal an error in the program model.
/// </summary>
/// <param name="symbol">Symbol causing the error.</param>
/// <param name="msg">The error message.</param>
public void ModelError(ISymbol symbol, string msg)
{
ReportError(new InternalError(symbol, msg));
}
/// <summary>
/// Signal an error in the program model.
/// </summary>
/// <param name="loc">The location of the error.</param>
/// <param name="msg">The error message.</param>
public void ModelError(CSharp.Entities.Location loc, string msg)
{
ReportError(new InternalError(loc.ReportingLocation, msg));
}
/// <summary>
/// Signal an error in the program model.
/// </summary>
/// <param name="msg">The error message.</param>
public void ModelError(string msg)
{
ReportError(new InternalError(msg));
}
/// <summary>
/// Tries the supplied action <paramref name="a"/>, and logs an uncaught
/// exception error if the action fails.
/// </summary>
/// <param name="node">Optional syntax node for error reporting.</param>
/// <param name="symbol">Optional symbol for error reporting.</param>
/// <param name="a">The action to perform.</param>
public void Try(SyntaxNode? node, ISymbol? symbol, Action a)
{
try
{
a();
}
catch (Exception ex) // lgtm[cs/catch-of-all-exceptions]
{
Message message;
if (node is not null)
{
message = Message.Create(this, ex.Message, node, ex.StackTrace);
}
else if (symbol is not null)
{
message = Message.Create(this, ex.Message, symbol, ex.StackTrace);
}
else if (ex is InternalError ie)
{
message = new Message(ie.Text, ie.EntityText, CreateLocation(ie.Location), ex.StackTrace);
}
else
{
message = new Message($"Uncaught exception. {ex.Message}", null, CreateLocation(), ex.StackTrace);
}
ExtractionError(message);
}
}
/// <summary>
/// The program database provided by Roslyn.
/// There's one per syntax tree, which makes things awkward.
@@ -523,11 +77,9 @@ namespace Semmle.Extraction.CSharp
internal CommentProcessor CommentGenerator { get; } = new CommentProcessor();
public Context(ExtractionContext extractionContext, Compilation c, TrapWriter trapWriter, IExtractionScope scope, bool shouldAddAssemblyTrapPrefix = false)
public Context(ExtractionContext extractionContext, Compilation c, TrapWriter trapWriter, IExtractionScope scope, bool addAssemblyTrapPrefix)
: base(extractionContext, trapWriter, addAssemblyTrapPrefix)
{
ExtractionContext = extractionContext;
TrapWriter = trapWriter;
ShouldAddAssemblyTrapPrefix = shouldAddAssemblyTrapPrefix;
Compilation = c;
this.scope = scope;
}
@@ -550,11 +102,7 @@ namespace Semmle.Extraction.CSharp
!SymbolEqualityComparer.Default.Equals(symbol, symbol.OriginalDefinition) ||
scope.InScope(symbol);
/// <summary>
/// Runs the given action <paramref name="a"/>, guarding for trap duplication
/// based on key <paramref name="key"/>.
/// </summary>
public void WithDuplicationGuard(Key key, Action a)
public override void WithDuplicationGuard(Key key, Action a)
{
if (IsAssemblyScope)
{
@@ -565,31 +113,21 @@ namespace Semmle.Extraction.CSharp
}
else
{
tagStack.Push(key);
TrapWriter.Emit(new PushEmitter(key));
try
{
a();
}
finally
{
TrapWriter.Emit(new PopEmitter());
tagStack.Pop();
}
base.WithDuplicationGuard(key, a);
}
}
public Entities.Location CreateLocation()
public override Extraction.Entities.Location CreateLocation()
{
return SourceTree is null
? Entities.GeneratedLocation.Create(this)
? GeneratedLocation.Create(this)
: CreateLocation(Microsoft.CodeAnalysis.Location.Create(SourceTree, Microsoft.CodeAnalysis.Text.TextSpan.FromBounds(0, 0)));
}
public Entities.Location CreateLocation(Microsoft.CodeAnalysis.Location? location)
public override Extraction.Entities.Location CreateLocation(Microsoft.CodeAnalysis.Location? location)
{
return (location is null || location.Kind == LocationKind.None)
? Entities.GeneratedLocation.Create(this)
? GeneratedLocation.Create(this)
: location.IsInSource
? Entities.NonGeneratedSourceLocation.Create(this, location)
: Entities.Assembly.Create(this, location);
@@ -607,7 +145,7 @@ namespace Semmle.Extraction.CSharp
CommentGenerator.AddElement(entity.Label, duplicationGuardKey, l);
}
private bool IsEntityDuplicationGuarded(IEntity entity, [NotNullWhen(true)] out Entities.Location? loc)
protected override bool IsEntityDuplicationGuarded(IEntity entity, [NotNullWhen(true)] out Extraction.Entities.Location? loc)
{
if (CreateLocation(entity.ReportingLocation) is Entities.NonGeneratedSourceLocation l)
{
@@ -631,7 +169,7 @@ namespace Semmle.Extraction.CSharp
/// </summary>
/// <param name="entity">The entity to extract.</param>
/// <returns>True only on the first call for a particular entity.</returns>
internal bool ExtractGenerics(CSharp.Entities.CachedEntity entity)
internal bool ExtractGenerics(CachedEntity entity)
{
if (extractedGenerics.Contains(entity.Label))
{

View File

@@ -161,15 +161,7 @@ namespace Semmle.Extraction.CSharp
var allCompilationData = reader.ReadAllCompilationData(filter);
var allFailed = true;
if (allCompilationData.Count == 0)
{
logger.LogWarning(" No compilations found in binary log.");
return ExitCode.Ok;
}
else
{
logger.LogInfo($" Found {allCompilationData.Count} compilations in binary log");
}
logger.LogInfo($" Found {allCompilationData.Count} compilations in binary log");
foreach (var compilationData in allCompilationData)
{

View File

@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<ProjectReference Include="..\Semmle.Extraction\Semmle.Extraction.csproj" />
<ProjectReference Include="..\Semmle.Extraction.CSharp.Util\Semmle.Extraction.CSharp.Util.csproj" />
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj" />
</ItemGroup>

View File

@@ -3,6 +3,7 @@ using Microsoft.CodeAnalysis.CSharp.Syntax;
using Semmle.Util;
using Semmle.Extraction.CSharp.Entities;
using Semmle.Extraction.CSharp.Entities.Expressions;
using Semmle.Extraction.Entities;
using Semmle.Extraction.Kinds;
namespace Semmle.Extraction.CSharp
@@ -16,22 +17,7 @@ namespace Semmle.Extraction.CSharp
/// </remarks>
internal static class Tuples
{
public static void containerparent(this TextWriter trapFile, Folder parent, IEntity child) =>
trapFile.WriteTuple("containerparent", parent, child);
internal static void extractor_messages(this TextWriter trapFile, ExtractionMessage error, Semmle.Util.Logging.Severity severity, string errorMessage, string entityText, Location location, string stackTrace) =>
trapFile.WriteTuple("extractor_messages", error, (int)severity, "C# extractor", errorMessage, entityText, location, stackTrace);
public static void files(this TextWriter trapFile, Entities.File file, string fullName) =>
trapFile.WriteTuple("files", file, fullName);
internal static void folders(this TextWriter trapFile, Folder folder, string path) =>
trapFile.WriteTuple("folders", folder, path);
public static void locations_default(this TextWriter trapFile, SourceLocation label, Entities.File file, int startLine, int startCol, int endLine, int endCol) =>
trapFile.WriteTuple("locations_default", label, file, startLine, startCol, endLine, endCol);
internal static void assemblies(this TextWriter trapFile, Assembly assembly, Entities.File file, string identifier, string name, string version) =>
internal static void assemblies(this System.IO.TextWriter trapFile, Assembly assembly, Extraction.Entities.File file, string identifier, string name, string version) =>
trapFile.WriteTuple("assemblies", assembly, file, identifier, name, version);
internal static void accessor_location(this TextWriter trapFile, Accessor accessorKey, Location location) =>
@@ -88,10 +74,10 @@ namespace Semmle.Extraction.CSharp
internal static void compilation_info(this TextWriter trapFile, Compilation compilation, string infoKey, string infoValue) =>
trapFile.WriteTuple("compilation_info", compilation, infoKey, infoValue);
internal static void compilation_compiling_files(this TextWriter trapFile, Compilation compilation, int index, Entities.File file) =>
internal static void compilation_compiling_files(this TextWriter trapFile, Compilation compilation, int index, Extraction.Entities.File file) =>
trapFile.WriteTuple("compilation_compiling_files", compilation, index, file);
internal static void compilation_referencing_files(this TextWriter trapFile, Compilation compilation, int index, Entities.File file) =>
internal static void compilation_referencing_files(this TextWriter trapFile, Compilation compilation, int index, Extraction.Entities.File file) =>
trapFile.WriteTuple("compilation_referencing_files", compilation, index, file);
internal static void compilation_finished(this TextWriter trapFile, Compilation compilation, float cpuSeconds, float elapsedSeconds) =>
@@ -412,7 +398,7 @@ namespace Semmle.Extraction.CSharp
internal static void pragma_warning_error_codes(this TextWriter trapFile, PragmaWarningDirective pragma, string errorCode, int child) =>
trapFile.WriteTuple("pragma_warning_error_codes", pragma, errorCode, child);
internal static void pragma_checksums(this TextWriter trapFile, PragmaChecksumDirective pragma, Entities.File file, string guid, string bytes) =>
internal static void pragma_checksums(this TextWriter trapFile, PragmaChecksumDirective pragma, Extraction.Entities.File file, string guid, string bytes) =>
trapFile.WriteTuple("pragma_checksums", pragma, file, guid, bytes);
internal static void directive_defines(this TextWriter trapFile, DefineDirective directive, string name) =>
@@ -436,7 +422,7 @@ namespace Semmle.Extraction.CSharp
internal static void directive_line_value(this TextWriter trapFile, LineDirective directive, int line) =>
trapFile.WriteTuple("directive_line_value", directive, line);
internal static void directive_line_file<T>(this TextWriter trapFile, LineOrSpanDirective<T> directive, Entities.File file) where T : LineOrSpanDirectiveTriviaSyntax =>
internal static void directive_line_file<T>(this TextWriter trapFile, LineOrSpanDirective<T> directive, Extraction.Entities.File file) where T : LineOrSpanDirectiveTriviaSyntax =>
trapFile.WriteTuple("directive_line_file", directive, file);
internal static void directive_line_offset(this TextWriter trapFile, LineSpanDirective directive, int offset) =>

View File

@@ -9,6 +9,7 @@ codeql_xunit_test(
"*.cs",
]),
deps = [
"//csharp/extractor/Semmle.Extraction",
"//csharp/extractor/Semmle.Extraction.CSharp",
"//csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching",
"//csharp/extractor/Semmle.Extraction.CSharp.Standalone:bin/Semmle.Extraction.CSharp.Standalone",

View File

@@ -1,5 +1,4 @@
using Xunit;
using Semmle.Extraction.CSharp;
namespace Semmle.Extraction.Tests
{

View File

@@ -4,7 +4,6 @@ using System.IO;
using System.Text.RegularExpressions;
using Semmle.Util;
using Semmle.Util.Logging;
using Semmle.Extraction.CSharp;
namespace Semmle.Extraction.Tests
{

View File

@@ -1,6 +1,5 @@
using Xunit;
using Semmle.Util;
using Semmle.Extraction.CSharp;
namespace Semmle.Extraction.Tests
{

View File

@@ -4,6 +4,7 @@
<ProjectReference Include="..\Semmle.Extraction.CSharp.StubGenerator\Semmle.Extraction.CSharp.StubGenerator.csproj" />
<ProjectReference Include="..\Semmle.Extraction.CSharp.Standalone\Semmle.Extraction.CSharp.Standalone.csproj" />
<ProjectReference Include="..\Semmle.Extraction.CSharp\Semmle.Extraction.CSharp.csproj" />
<ProjectReference Include="..\Semmle.Extraction\Semmle.Extraction.csproj" />
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj" />
</ItemGroup>
<Import Project="..\..\.paket\Paket.Restore.targets" />

View File

@@ -1,6 +1,6 @@
using Microsoft.CodeAnalysis;
namespace Semmle.Extraction.CSharp
namespace Semmle.Extraction
{
/// <summary>
/// The scope of symbols in an assembly.

View File

@@ -0,0 +1,36 @@
load(
"//misc/bazel:csharp.bzl",
"codeql_csharp_library",
)
config_setting(
name = "debug_build",
values = {
"compilation_mode": "dbg",
},
)
codeql_csharp_library(
name = "Semmle.Extraction",
srcs = glob([
"Entities/**/*.cs",
"Extractor/**/*.cs",
"*.cs",
]),
# enable via -c dbg on the bazel command line/in .bazelrc.local
defines = select({
":debug_build": [
"TRACE",
"DEBUG",
"DEBUG_LABELS",
],
"//conditions:default": [],
}),
internals_visible_to = ["Semmle.Extraction.CSharp"],
visibility = ["//csharp:__subpackages__"],
deps = [
"//csharp/extractor/Semmle.Util",
"@paket.main//microsoft.build",
"@paket.main//microsoft.codeanalysis",
],
)

View File

@@ -0,0 +1,500 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Linq;
using Microsoft.CodeAnalysis;
using Semmle.Util.Logging;
using Semmle.Extraction.Entities;
namespace Semmle.Extraction
{
/// <summary>
/// State that needs to be available throughout the extraction process.
/// There is one Context object per trap output file.
/// </summary>
public class Context
{
/// <summary>
/// Access various extraction functions, e.g. logger, trap writer.
/// </summary>
public ExtractionContext ExtractionContext { get; }
/// <summary>
/// Access to the trap file.
/// </summary>
public TrapWriter TrapWriter { get; }
/// <summary>
/// Holds if assembly information should be prefixed to TRAP labels.
/// </summary>
public bool ShouldAddAssemblyTrapPrefix { get; }
public IList<object> TrapStackSuffix { get; } = new List<object>();
private int GetNewId() => TrapWriter.IdCounter++;
// A recursion guard against writing to the trap file whilst writing an id to the trap file.
private bool writingLabel = false;
private readonly Queue<IEntity> labelQueue = [];
protected void DefineLabel(IEntity entity)
{
if (writingLabel)
{
// Don't define a label whilst writing a label.
labelQueue.Enqueue(entity);
}
else
{
try
{
writingLabel = true;
entity.DefineLabel(TrapWriter.Writer);
}
finally
{
writingLabel = false;
if (labelQueue.Any())
{
DefineLabel(labelQueue.Dequeue());
}
}
}
}
#if DEBUG_LABELS
private void CheckEntityHasUniqueLabel(string id, CachedEntity entity)
{
if (idLabelCache.ContainsKey(id))
{
this.Extractor.Message(new Message("Label collision for " + id, entity.Label.ToString(), CreateLocation(entity.ReportingLocation), "", Severity.Warning));
}
else
{
idLabelCache[id] = entity;
}
}
#endif
protected Label GetNewLabel() => new Label(GetNewId());
internal TEntity CreateEntity<TInit, TEntity>(CachedEntityFactory<TInit, TEntity> factory, object cacheKey, TInit init)
where TEntity : CachedEntity =>
cacheKey is ISymbol s ? CreateEntity(factory, s, init, symbolEntityCache) : CreateEntity(factory, cacheKey, init, objectEntityCache);
internal TEntity CreateEntityFromSymbol<TSymbol, TEntity>(CachedEntityFactory<TSymbol, TEntity> factory, TSymbol init)
where TSymbol : ISymbol
where TEntity : CachedEntity => CreateEntity(factory, init, init, symbolEntityCache);
/// <summary>
/// Creates and populates a new entity, or returns the existing one from the cache.
/// </summary>
/// <param name="factory">The entity factory.</param>
/// <param name="cacheKey">The key used for caching.</param>
/// <param name="init">The initializer for the entity.</param>
/// <param name="dictionary">The dictionary to use for caching.</param>
/// <returns>The new/existing entity.</returns>
private TEntity CreateEntity<TInit, TCacheKey, TEntity>(CachedEntityFactory<TInit, TEntity> factory, TCacheKey cacheKey, TInit init, IDictionary<TCacheKey, CachedEntity> dictionary)
where TCacheKey : notnull
where TEntity : CachedEntity
{
if (dictionary.TryGetValue(cacheKey, out var cached))
return (TEntity)cached;
using (StackGuard)
{
var label = GetNewLabel();
var entity = factory.Create(this, init);
entity.Label = label;
dictionary[cacheKey] = entity;
DefineLabel(entity);
if (entity.NeedsPopulation)
Populate(init as ISymbol, entity);
#if DEBUG_LABELS
using var id = new EscapingTextWriter();
entity.WriteQuotedId(id);
CheckEntityHasUniqueLabel(id.ToString(), entity);
#endif
return entity;
}
}
/// <summary>
/// Creates a fresh label with ID "*", and set it on the
/// supplied <paramref name="entity"/> object.
/// </summary>
internal void AddFreshLabel(Entity entity)
{
entity.Label = GetNewLabel();
entity.DefineFreshLabel(TrapWriter.Writer);
}
#if DEBUG_LABELS
private readonly Dictionary<string, CachedEntity> idLabelCache = new Dictionary<string, CachedEntity>();
#endif
private readonly IDictionary<object, CachedEntity> objectEntityCache = new Dictionary<object, CachedEntity>();
private readonly IDictionary<ISymbol, CachedEntity> symbolEntityCache = new Dictionary<ISymbol, CachedEntity>(10000, SymbolEqualityComparer.Default);
/// <summary>
/// Queue of items to populate later.
/// The only reason for this is so that the call stack does not
/// grow indefinitely, causing a potential stack overflow.
/// </summary>
private readonly Queue<Action> populateQueue = new Queue<Action>();
/// <summary>
/// Enqueue the given action to be performed later.
/// </summary>
/// <param name="toRun">The action to run.</param>
public void PopulateLater(Action a, bool preserveDuplicationKey = true)
{
var key = preserveDuplicationKey ? GetCurrentTagStackKey() : null;
if (key is not null)
{
// If we are currently executing with a duplication guard, then the same
// guard must be used for the deferred action
populateQueue.Enqueue(() => WithDuplicationGuard(key, a));
}
else
{
populateQueue.Enqueue(a);
}
}
/// <summary>
/// Runs the main populate loop until there's nothing left to populate.
/// </summary>
public void PopulateAll()
{
while (populateQueue.Any())
{
try
{
populateQueue.Dequeue()();
}
catch (InternalError ex)
{
ExtractionError(new Message(ex.Text, ex.EntityText, CreateLocation(ex.Location), ex.StackTrace));
}
catch (Exception ex) // lgtm[cs/catch-of-all-exceptions]
{
ExtractionError($"Uncaught exception. {ex.Message}", null, CreateLocation(), ex.StackTrace);
}
}
}
protected Context(ExtractionContext extractionContext, TrapWriter trapWriter, bool shouldAddAssemblyTrapPrefix = false)
{
ExtractionContext = extractionContext;
TrapWriter = trapWriter;
ShouldAddAssemblyTrapPrefix = shouldAddAssemblyTrapPrefix;
}
private int currentRecursiveDepth = 0;
private const int maxRecursiveDepth = 150;
private void EnterScope()
{
if (currentRecursiveDepth >= maxRecursiveDepth)
throw new StackOverflowException($"Maximum nesting depth of {maxRecursiveDepth} exceeded");
++currentRecursiveDepth;
}
private void ExitScope()
{
--currentRecursiveDepth;
}
public IDisposable StackGuard => new ScopeGuard(this);
private sealed class ScopeGuard : IDisposable
{
private readonly Context cx;
public ScopeGuard(Context c)
{
cx = c;
cx.EnterScope();
}
public void Dispose()
{
cx.ExitScope();
}
}
private class PushEmitter : ITrapEmitter
{
private readonly Key key;
public PushEmitter(Key key)
{
this.key = key;
}
public void EmitTrap(TextWriter trapFile)
{
trapFile.Write(".push ");
key.AppendTo(trapFile);
trapFile.WriteLine();
}
}
private class PopEmitter : ITrapEmitter
{
public void EmitTrap(TextWriter trapFile)
{
trapFile.WriteLine(".pop");
}
}
private readonly Stack<Key> tagStack = new Stack<Key>();
/// <summary>
/// Populates an entity, handling the tag stack appropriately
/// </summary>
/// <param name="optionalSymbol">Symbol for reporting errors.</param>
/// <param name="entity">The entity to populate.</param>
/// <exception cref="InternalError">Thrown on invalid trap stack behaviour.</exception>
private void Populate(ISymbol? optionalSymbol, CachedEntity entity)
{
if (writingLabel)
{
// Don't write tuples etc if we're currently defining a label
PopulateLater(() => Populate(optionalSymbol, entity));
return;
}
bool duplicationGuard, deferred;
if (ExtractionContext.Mode is ExtractorMode.Standalone)
{
duplicationGuard = false;
deferred = false;
}
else
{
switch (entity.TrapStackBehaviour)
{
case TrapStackBehaviour.NeedsLabel:
if (!tagStack.Any())
ExtractionError("TagStack unexpectedly empty", optionalSymbol, entity);
duplicationGuard = false;
deferred = false;
break;
case TrapStackBehaviour.NoLabel:
duplicationGuard = false;
deferred = tagStack.Any();
break;
case TrapStackBehaviour.OptionalLabel:
duplicationGuard = false;
deferred = false;
break;
case TrapStackBehaviour.PushesLabel:
duplicationGuard = true;
deferred = duplicationGuard && tagStack.Any();
break;
default:
throw new InternalError("Unexpected TrapStackBehaviour");
}
}
var a = duplicationGuard && IsEntityDuplicationGuarded(entity, out var loc)
? (() =>
{
var args = new object[TrapStackSuffix.Count + 2];
args[0] = entity;
args[1] = loc;
for (var i = 0; i < TrapStackSuffix.Count; i++)
{
args[i + 2] = TrapStackSuffix[i];
}
WithDuplicationGuard(new Key(args), () => entity.Populate(TrapWriter.Writer));
})
: (Action)(() => this.Try(null, optionalSymbol, () => entity.Populate(TrapWriter.Writer)));
if (deferred)
populateQueue.Enqueue(a);
else
a();
}
protected virtual bool IsEntityDuplicationGuarded(IEntity entity, [NotNullWhen(returnValue: true)] out Entities.Location? loc)
{
loc = null;
return false;
}
/// <summary>
/// Runs the given action <paramref name="a"/>, guarding for trap duplication
/// based on key <paramref name="key"/>.
/// </summary>
public virtual void WithDuplicationGuard(Key key, Action a)
{
tagStack.Push(key);
TrapWriter.Emit(new PushEmitter(key));
try
{
a();
}
finally
{
TrapWriter.Emit(new PopEmitter());
tagStack.Pop();
}
}
protected Key? GetCurrentTagStackKey() => tagStack.Count > 0
? tagStack.Peek()
: null;
/// <summary>
/// Log an extraction error.
/// </summary>
/// <param name="message">The error message.</param>
/// <param name="entityText">A textual representation of the failed entity.</param>
/// <param name="location">The location of the error.</param>
/// <param name="stackTrace">An optional stack trace of the error, or null.</param>
/// <param name="severity">The severity of the error.</param>
public void ExtractionError(string message, string? entityText, Entities.Location? location, string? stackTrace = null, Severity severity = Severity.Error)
{
var msg = new Message(message, entityText, location, stackTrace, severity);
ExtractionError(msg);
}
/// <summary>
/// Log an extraction error.
/// </summary>
/// <param name="message">The text of the message.</param>
/// <param name="optionalSymbol">The symbol of the error, or null.</param>
/// <param name="optionalEntity">The entity of the error, or null.</param>
private void ExtractionError(string message, ISymbol? optionalSymbol, Entity optionalEntity)
{
if (!(optionalSymbol is null))
{
ExtractionError(message, optionalSymbol.ToDisplayString(), CreateLocation(optionalSymbol.Locations.BestOrDefault()));
}
else if (!(optionalEntity is null))
{
ExtractionError(message, optionalEntity.Label.ToString(), CreateLocation(optionalEntity.ReportingLocation));
}
else
{
ExtractionError(message, null, CreateLocation());
}
}
/// <summary>
/// Log an extraction message.
/// </summary>
/// <param name="msg">The message to log.</param>
private void ExtractionError(Message msg)
{
new ExtractionMessage(this, msg);
ExtractionContext.Message(msg);
}
private void ExtractionError(InternalError error)
{
ExtractionError(new Message(error.Message, error.EntityText, CreateLocation(error.Location), error.StackTrace, Severity.Error));
}
private void ReportError(InternalError error)
{
if (!ExtractionContext.Mode.HasFlag(ExtractorMode.Standalone))
throw error;
ExtractionError(error);
}
/// <summary>
/// Signal an error in the program model.
/// </summary>
/// <param name="node">The syntax node causing the failure.</param>
/// <param name="msg">The error message.</param>
public void ModelError(SyntaxNode node, string msg)
{
ReportError(new InternalError(node, msg));
}
/// <summary>
/// Signal an error in the program model.
/// </summary>
/// <param name="symbol">Symbol causing the error.</param>
/// <param name="msg">The error message.</param>
public void ModelError(ISymbol symbol, string msg)
{
ReportError(new InternalError(symbol, msg));
}
/// <summary>
/// Signal an error in the program model.
/// </summary>
/// <param name="loc">The location of the error.</param>
/// <param name="msg">The error message.</param>
public void ModelError(Entities.Location loc, string msg)
{
ReportError(new InternalError(loc.ReportingLocation, msg));
}
/// <summary>
/// Signal an error in the program model.
/// </summary>
/// <param name="msg">The error message.</param>
public void ModelError(string msg)
{
ReportError(new InternalError(msg));
}
/// <summary>
/// Tries the supplied action <paramref name="a"/>, and logs an uncaught
/// exception error if the action fails.
/// </summary>
/// <param name="node">Optional syntax node for error reporting.</param>
/// <param name="symbol">Optional symbol for error reporting.</param>
/// <param name="a">The action to perform.</param>
public void Try(SyntaxNode? node, ISymbol? symbol, Action a)
{
try
{
a();
}
catch (Exception ex) // lgtm[cs/catch-of-all-exceptions]
{
Message message;
if (node is not null)
{
message = Message.Create(this, ex.Message, node, ex.StackTrace);
}
else if (symbol is not null)
{
message = Message.Create(this, ex.Message, symbol, ex.StackTrace);
}
else if (ex is InternalError ie)
{
message = new Message(ie.Text, ie.EntityText, CreateLocation(ie.Location), ex.StackTrace);
}
else
{
message = new Message($"Uncaught exception. {ex.Message}", null, CreateLocation(), ex.StackTrace);
}
ExtractionError(message);
}
}
public virtual Entities.Location CreateLocation() =>
GeneratedLocation.Create(this);
public virtual Entities.Location CreateLocation(Microsoft.CodeAnalysis.Location? location) =>
CreateLocation();
}
}

Some files were not shown because too many files have changed in this diff Show More