Merge branch 'main' into resolvable

This commit is contained in:
Geoffrey White
2024-11-22 11:45:47 +00:00
1531 changed files with 63645 additions and 7943 deletions

View File

@@ -23,6 +23,5 @@ 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,4 +8,3 @@ 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: 8.0.101
dotnet-version: 9.0.100
- name: Checkout repository
uses: actions/checkout@v4

View File

@@ -33,9 +33,9 @@ jobs:
# run with --check-only if running in a PR (github.sha != main)
if : ${{ github.event_name == 'pull_request' }}
shell: bash
run: codeql query compile -q -j0 */ql/{src,examples} --keep-going --warnings=error --check-only --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}" --compilation-cache-size=500
run: codeql query compile -q -j0 */ql/{src,examples} --keep-going --warnings=error --check-only --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}" --compilation-cache-size=500 --ram=56000
- name: compile queries - full
# do full compile if running on main - this populates the cache
if : ${{ github.event_name != 'pull_request' }}
shell: bash
run: codeql query compile -q -j0 */ql/{src,examples} --keep-going --warnings=error --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}" --compilation-cache-size=500
run: codeql query compile -q -j0 */ql/{src,examples} --keep-going --warnings=error --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}" --compilation-cache-size=500 --ram=56000

View File

@@ -48,7 +48,7 @@ jobs:
- name: "Build Swift extractor using Bazel"
run: |
bazel clean --expunge
bazel run //swift:create-extractor-pack --nouse_action_cache --noremote_accept_cached --noremote_upload_local_results --spawn_strategy=local
bazel run //swift:install --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: 8.0.101
dotnet-version: 9.0.100
- name: Extractor unit tests
run: |
dotnet tool restore
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
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
shell: bash
stubgentest:
runs-on: ubuntu-latest

View File

@@ -37,7 +37,7 @@ jobs:
run: |
DATABASE="${{ runner.temp }}/java-database"
codeql database analyze --format=sarif-latest --output=metrics-java.sarif -- "$DATABASE" ./java/ql/src/Metrics/Summaries/FrameworkCoverage.ql
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: metrics-java.sarif
path: metrics-java.sarif
@@ -64,7 +64,7 @@ jobs:
run: |
DATABASE="${{ runner.temp }}/csharp-database"
codeql database analyze --format=sarif-latest --output=metrics-csharp.sarif -- "$DATABASE" ./csharp/ql/src/Metrics/Summaries/FrameworkCoverage.ql
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: metrics-csharp.sarif
path: metrics-csharp.sarif

View File

@@ -71,21 +71,21 @@ jobs:
run: |
python base/misc/scripts/library-coverage/compare-folders.py out_base out_merge comparison.md
- name: Upload CSV package list
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: csv-framework-coverage-merge
path: |
out_merge/framework-coverage-*.csv
out_merge/framework-coverage-*.rst
- name: Upload CSV package list
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: csv-framework-coverage-base
path: |
out_base/framework-coverage-*.csv
out_base/framework-coverage-*.rst
- name: Upload comparison results
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: comparison
path: |
@@ -97,7 +97,7 @@ jobs:
env:
PR_NUMBER: ${{ github.event.pull_request.number }}
- name: Upload PR number
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: pr
path: pr/
@@ -117,7 +117,7 @@ jobs:
GITHUB_TOKEN: ${{ github.token }}
PR_NUMBER: ${{ github.event.pull_request.number }}
- name: Upload comment ID (if it exists)
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: comment
path: comment/

View File

@@ -30,7 +30,7 @@ jobs:
run: |
python script/misc/scripts/library-coverage/generate-timeseries.py codeqlModels
- name: Upload timeseries CSV
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: framework-coverage-timeseries
path: framework-coverage-timeseries-*.csv

View File

@@ -34,12 +34,12 @@ jobs:
run: |
python script/misc/scripts/library-coverage/generate-report.py ci codeqlModels script
- name: Upload CSV package list
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: framework-coverage-csv
path: framework-coverage-*.csv
- name: Upload RST package list
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: framework-coverage-rst
path: framework-coverage-*.rst

View File

@@ -38,14 +38,20 @@ jobs:
path: codeql-main
ref: main
- uses: ./codeql-main/.github/actions/fetch-codeql
# compute the shortname of the project that does not contain any special (disk) characters
- run: |
echo "SHORTNAME=${SLUG//[^a-zA-Z0-9_]/}" >> $GITHUB_OUTPUT
env:
SLUG: ${{ matrix.slug }}
id: shortname
- name: Download database
env:
SLUG: ${{ matrix.slug }}
GH_TOKEN: ${{ github.token }}
SHORTNAME: ${{ steps.shortname.outputs.SHORTNAME }}
run: |
set -x
mkdir lib-dbs
SHORTNAME=${SLUG//[^a-zA-Z0-9_]/}
gh api -H "Accept: application/zip" "/repos/${SLUG}/code-scanning/codeql/databases/java" > "$SHORTNAME.zip"
unzip -q -d "${SHORTNAME}-db" "${SHORTNAME}.zip"
mkdir "lib-dbs/$SHORTNAME/"
@@ -93,14 +99,14 @@ jobs:
name="diff_${basename/.model.yml/""}"
(diff -w -u $m $t | diff2html -i stdin -F $MODELS/$name.html) || true
done
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: models
name: models-${{ steps.shortname.outputs.SHORTNAME }}
path: tmp-models/**/**/*.model.yml
retention-days: 20
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: diffs
name: diffs-${{ steps.shortname.outputs.SHORTNAME }}
path: tmp-models/*.html
# An html file is only produced if the generated models differ.
if-no-files-found: ignore

View File

@@ -59,7 +59,7 @@ jobs:
find java -name "*.model.yml" -print0 | xargs -0 git add
git status
git diff --cached > models.patch
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: patch
path: models.patch

View File

@@ -17,8 +17,11 @@ jobs:
post_comment:
runs-on: ubuntu-latest
steps:
- name: Download artifact
run: gh run download "${WORKFLOW_RUN_ID}" --repo "${GITHUB_REPOSITORY}" --name "comment"
- name: Download artifacts
run: |
gh run download "${WORKFLOW_RUN_ID}" --repo "${GITHUB_REPOSITORY}" --name "comment-pr-number"
gh run download "${WORKFLOW_RUN_ID}" --repo "${GITHUB_REPOSITORY}" --name "comment-body"
gh run download "${WORKFLOW_RUN_ID}" --repo "${GITHUB_REPOSITORY}" --name "comment-id"
env:
GITHUB_TOKEN: ${{ github.token }}
WORKFLOW_RUN_ID: ${{ github.event.workflow_run.id }}

View File

@@ -36,9 +36,9 @@ jobs:
- run: echo "${PR_NUMBER}" > pr_number.txt
env:
PR_NUMBER: ${{ github.event.number }}
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: comment
name: comment-pr-number
path: pr_number.txt
if-no-files-found: error
retention-days: 1
@@ -78,9 +78,9 @@ jobs:
exit "${EXIT_CODE}"
- if: ${{ !cancelled() }}
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: comment
name: comment-body
path: comment_body.txt
if-no-files-found: error
retention-days: 1
@@ -94,9 +94,9 @@ jobs:
GITHUB_TOKEN: ${{ github.token }}
PR_NUMBER: ${{ github.event.number }}
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: comment
name: comment-id
path: comment_id.txt
if-no-files-found: error
retention-days: 1

View File

@@ -75,7 +75,7 @@ jobs:
sarif_file: ql-for-ql.sarif
category: ql-for-ql
- name: Sarif as artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: ql-for-ql.sarif
path: ql-for-ql.sarif
@@ -84,7 +84,7 @@ jobs:
mkdir split-sarif
node ./ql/scripts/split-sarif.js ql-for-ql.sarif split-sarif
- name: Upload langs as artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: ql-for-ql-langs
path: split-sarif

View File

@@ -65,7 +65,7 @@ jobs:
"${CODEQL}" dataset measure --threads 4 --output "stats/${{ matrix.repo }}/stats.xml" "${{ runner.temp }}/database/db-ql"
env:
CODEQL: ${{ steps.find-codeql.outputs.codeql-path }}
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: measurements
path: stats
@@ -76,14 +76,14 @@ jobs:
needs: measure
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v3
- uses: actions/download-artifact@v4
with:
name: measurements
path: stats
- run: |
python -m pip install --user lxml
find stats -name 'stats.xml' -print0 | sort -z | xargs -0 python ruby/scripts/merge_stats.py --output ql/ql/src/ql.dbscheme.stats --normalise ql_tokeninfo
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: ql.dbscheme.stats
path: ql/ql/src/ql.dbscheme.stats

View File

@@ -37,7 +37,7 @@ jobs:
run: |
python codeql/misc/scripts/generate-code-scanning-query-list.py > code-scanning-query-list.csv
- name: Upload code scanning query list
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: code-scanning-query-list
path: code-scanning-query-list.csv

View File

@@ -92,17 +92,17 @@ jobs:
- name: Generate dbscheme
if: ${{ matrix.os == 'ubuntu-latest' && steps.cache-extractor.outputs.cache-hit != 'true'}}
run: ../target/release/codeql-extractor-ruby generate --dbscheme ql/lib/ruby.dbscheme --library ql/lib/codeql/ruby/ast/internal/TreeSitter.qll
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
if: ${{ matrix.os == 'ubuntu-latest' }}
with:
name: ruby.dbscheme
path: ruby/ql/lib/ruby.dbscheme
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
if: ${{ matrix.os == 'ubuntu-latest' }}
with:
name: TreeSitter.qll
path: ruby/ql/lib/codeql/ruby/ast/internal/TreeSitter.qll
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: extractor-${{ matrix.os }}
path: |
@@ -134,7 +134,7 @@ jobs:
PACK_FOLDER=$(readlink -f "$PACKS"/codeql/ruby-queries/*)
codeql generate query-help --format=sarifv2.1.0 --output="${PACK_FOLDER}/rules.sarif" ql/src
(cd ql/src; find queries \( -name '*.qhelp' -o -name '*.rb' -o -name '*.erb' \) -exec bash -c 'mkdir -p "'"${PACK_FOLDER}"'/$(dirname "{}")"' \; -exec cp "{}" "${PACK_FOLDER}/{}" \;)
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: codeql-ruby-queries
path: |
@@ -147,19 +147,19 @@ jobs:
needs: [build, compile-queries]
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v3
- uses: actions/download-artifact@v4
with:
name: ruby.dbscheme
path: ruby/ruby
- uses: actions/download-artifact@v3
- uses: actions/download-artifact@v4
with:
name: extractor-ubuntu-latest
path: ruby/linux64
- uses: actions/download-artifact@v3
- uses: actions/download-artifact@v4
with:
name: extractor-windows-latest
path: ruby/win64
- uses: actions/download-artifact@v3
- uses: actions/download-artifact@v4
with:
name: extractor-macos-latest
path: ruby/osx64
@@ -172,13 +172,13 @@ jobs:
cp win64/codeql-extractor-ruby.exe ruby/tools/win64/extractor.exe
chmod +x ruby/tools/{linux64,osx64}/extractor
zip -rq codeql-ruby.zip ruby
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: codeql-ruby-pack
path: ruby/codeql-ruby.zip
retention-days: 1
include-hidden-files: true
- uses: actions/download-artifact@v3
- uses: actions/download-artifact@v4
with:
name: codeql-ruby-queries
path: ruby/qlpacks
@@ -190,7 +190,7 @@ jobs:
]
}' > .codeqlmanifest.json
zip -rq codeql-ruby-bundle.zip .codeqlmanifest.json ruby qlpacks
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: codeql-ruby-bundle
path: ruby/codeql-ruby-bundle.zip
@@ -214,7 +214,7 @@ jobs:
uses: ./.github/actions/fetch-codeql
- name: Download Ruby bundle
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: codeql-ruby-bundle
path: ${{ runner.temp }}

View File

@@ -52,9 +52,9 @@ jobs:
run: |
mkdir -p "stats/${{ matrix.repo }}"
codeql dataset measure --threads 4 --output "stats/${{ matrix.repo }}/stats.xml" "${{ runner.temp }}/database/db-ruby"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: measurements
name: measurements-${{ hashFiles('stats/**') }}
path: stats
retention-days: 1
@@ -63,14 +63,13 @@ jobs:
needs: measure
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v3
- uses: actions/download-artifact@v4
with:
name: measurements
path: stats
- run: |
python -m pip install --user lxml
find stats -name 'stats.xml' | sort | xargs python ruby/scripts/merge_stats.py --output ruby/ql/lib/ruby.dbscheme.stats --normalise ruby_tokeninfo
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: ruby.dbscheme.stats
path: ruby/ql/lib/ruby.dbscheme.stats

View File

@@ -98,7 +98,7 @@ jobs:
- name: Generate C++ files
run: |
bazel run //swift/codegen:codegen -- --generate=trap,cpp --cpp-output=$PWD/generated-cpp-files
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: swift-generated-cpp-files
path: generated-cpp-files/**

View File

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

251
Cargo.lock generated
View File

@@ -43,9 +43,9 @@ dependencies = [
[[package]]
name = "anstream"
version = "0.6.15"
version = "0.6.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526"
checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b"
dependencies = [
"anstyle",
"anstyle-parse",
@@ -58,43 +58,43 @@ dependencies = [
[[package]]
name = "anstyle"
version = "1.0.8"
version = "1.0.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1"
checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9"
[[package]]
name = "anstyle-parse"
version = "0.2.5"
version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb"
checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9"
dependencies = [
"utf8parse",
]
[[package]]
name = "anstyle-query"
version = "1.1.1"
version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a"
checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c"
dependencies = [
"windows-sys 0.52.0",
"windows-sys 0.59.0",
]
[[package]]
name = "anstyle-wincon"
version = "3.0.4"
version = "3.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8"
checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125"
dependencies = [
"anstyle",
"windows-sys 0.52.0",
"windows-sys 0.59.0",
]
[[package]]
name = "anyhow"
version = "1.0.87"
version = "1.0.93"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "10f00e1f6e58a40e807377c75c6a7f97bf9044fab57816f2414e6f5f4499d7b8"
checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775"
[[package]]
name = "argfile"
@@ -133,9 +133,9 @@ dependencies = [
[[package]]
name = "autocfg"
version = "1.3.0"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
[[package]]
name = "base64"
@@ -173,9 +173,9 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
[[package]]
name = "bytemuck"
version = "1.18.0"
version = "1.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae"
checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d"
[[package]]
name = "byteorder"
@@ -217,9 +217,9 @@ dependencies = [
[[package]]
name = "cc"
version = "1.1.18"
version = "1.1.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476"
checksum = "40545c26d092346d8a8dab71ee48e7685a7a9cba76e634790c215b41a4a7b4cf"
dependencies = [
"shlex",
]
@@ -274,7 +274,7 @@ dependencies = [
"chalk-derive",
"chalk-ir",
"ena",
"indexmap 2.5.0",
"indexmap 2.6.0",
"itertools 0.12.1",
"petgraph",
"rustc-hash",
@@ -298,9 +298,9 @@ dependencies = [
[[package]]
name = "clap"
version = "4.5.17"
version = "4.5.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac"
checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8"
dependencies = [
"clap_builder",
"clap_derive",
@@ -308,9 +308,9 @@ dependencies = [
[[package]]
name = "clap_builder"
version = "4.5.17"
version = "4.5.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73"
checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54"
dependencies = [
"anstream",
"anstyle",
@@ -320,9 +320,9 @@ dependencies = [
[[package]]
name = "clap_derive"
version = "4.5.13"
version = "4.5.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0"
checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab"
dependencies = [
"heck 0.5.0",
"proc-macro2",
@@ -389,10 +389,12 @@ 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",
@@ -409,9 +411,9 @@ dependencies = [
[[package]]
name = "colorchoice"
version = "1.0.2"
version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0"
checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990"
[[package]]
name = "core-foundation-sys"
@@ -657,9 +659,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
[[package]]
name = "flate2"
version = "1.0.33"
version = "1.0.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253"
checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0"
dependencies = [
"crc32fast",
"miniz_oxide",
@@ -721,8 +723,8 @@ dependencies = [
"aho-corasick",
"bstr",
"log",
"regex-automata 0.4.7",
"regex-syntax 0.8.4",
"regex-automata 0.4.8",
"regex-syntax 0.8.5",
]
[[package]]
@@ -737,6 +739,12 @@ version = "0.14.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
[[package]]
name = "hashbrown"
version = "0.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3"
[[package]]
name = "heck"
version = "0.4.1"
@@ -778,9 +786,9 @@ dependencies = [
[[package]]
name = "iana-time-zone"
version = "0.1.60"
version = "0.1.61"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220"
dependencies = [
"android_system_properties",
"core-foundation-sys",
@@ -818,12 +826,12 @@ dependencies = [
[[package]]
name = "indexmap"
version = "2.5.0"
version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5"
checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da"
dependencies = [
"equivalent",
"hashbrown 0.14.5",
"hashbrown 0.15.1",
"serde",
]
@@ -911,9 +919,9 @@ checksum = "8b23360e99b8717f20aaa4598f5a6541efbe30630039fbc7706cf954a87947ae"
[[package]]
name = "js-sys"
version = "0.3.70"
version = "0.3.72"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a"
checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9"
dependencies = [
"wasm-bindgen",
]
@@ -952,9 +960,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
[[package]]
name = "libc"
version = "0.2.158"
version = "0.2.162"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439"
checksum = "18d287de67fe55fd7e1581fe933d965a5a9477b38e949cfa9f8574ef01506398"
[[package]]
name = "libredox"
@@ -969,9 +977,9 @@ dependencies = [
[[package]]
name = "line-index"
version = "0.1.1"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67d61795376ae2683928c218fda7d7d7db136fd38c06b7552904667f0d55580a"
checksum = "3e27e0ed5a392a7f5ba0b3808a2afccff16c64933312c84b57618b49d1209bd2"
dependencies = [
"nohash-hasher",
"text-size",
@@ -1115,9 +1123,9 @@ dependencies = [
[[package]]
name = "once_cell"
version = "1.19.0"
version = "1.20.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
[[package]]
name = "oorandom"
@@ -1212,14 +1220,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db"
dependencies = [
"fixedbitset",
"indexmap 2.5.0",
"indexmap 2.6.0",
]
[[package]]
name = "pin-project-lite"
version = "0.2.14"
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff"
[[package]]
name = "powerfmt"
@@ -1238,9 +1246,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
version = "1.0.86"
version = "1.0.89"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e"
dependencies = [
"unicode-ident",
]
@@ -1404,7 +1412,7 @@ dependencies = [
"either",
"fst",
"hashbrown 0.14.5",
"indexmap 2.5.0",
"indexmap 2.6.0",
"itertools 0.12.1",
"la-arena",
"ra-ap-rustc_abi",
@@ -1469,7 +1477,7 @@ dependencies = [
"cov-mark",
"either",
"ena",
"indexmap 2.5.0",
"indexmap 2.6.0",
"itertools 0.12.1",
"la-arena",
"nohash-hasher",
@@ -1506,7 +1514,7 @@ dependencies = [
"crossbeam-channel",
"either",
"fst",
"indexmap 2.5.0",
"indexmap 2.6.0",
"itertools 0.12.1",
"line-index",
"memchr",
@@ -1615,7 +1623,7 @@ version = "0.0.232"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "809670622e93f105abc60ea0cb371cfaff990beae7ce534b127fb39b423b4b92"
dependencies = [
"indexmap 2.5.0",
"indexmap 2.6.0",
"ra_ap_base_db",
"ra_ap_intern",
"ra_ap_paths",
@@ -1671,7 +1679,7 @@ version = "0.0.232"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "370b302873eeafd07ccc6a714fc9395cae11e385955ccb78081093ee3b86f94e"
dependencies = [
"indexmap 2.5.0",
"indexmap 2.6.0",
"itertools 0.12.1",
"lock_api",
"oorandom",
@@ -1734,7 +1742,7 @@ checksum = "f1ac12decfd5cadd880177316fc16afc1f2c67f241f6290b51fd6f222e2bd4d5"
dependencies = [
"cov-mark",
"either",
"indexmap 2.5.0",
"indexmap 2.6.0",
"itertools 0.12.1",
"ra-ap-rustc_lexer",
"ra_ap_parser",
@@ -1804,7 +1812,7 @@ checksum = "d833eaa5422de9bb51ab1841fe505ed00fb51e64cce397e21de6c324bbcbffa0"
dependencies = [
"crossbeam-channel",
"fst",
"indexmap 2.5.0",
"indexmap 2.6.0",
"nohash-hasher",
"ra_ap_paths",
"ra_ap_stdx",
@@ -1881,23 +1889,23 @@ dependencies = [
[[package]]
name = "redox_syscall"
version = "0.5.3"
version = "0.5.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4"
checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f"
dependencies = [
"bitflags 2.6.0",
]
[[package]]
name = "regex"
version = "1.10.6"
version = "1.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619"
checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
dependencies = [
"aho-corasick",
"memchr",
"regex-automata 0.4.7",
"regex-syntax 0.8.4",
"regex-automata 0.4.8",
"regex-syntax 0.8.5",
]
[[package]]
@@ -1911,13 +1919,13 @@ dependencies = [
[[package]]
name = "regex-automata"
version = "0.4.7"
version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df"
checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3"
dependencies = [
"aho-corasick",
"memchr",
"regex-syntax 0.8.4",
"regex-syntax 0.8.5",
]
[[package]]
@@ -1928,9 +1936,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
[[package]]
name = "regex-syntax"
version = "0.8.4"
version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
[[package]]
name = "rowan"
@@ -2006,18 +2014,18 @@ dependencies = [
[[package]]
name = "serde"
version = "1.0.210"
version = "1.0.214"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a"
checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.210"
version = "1.0.214"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f"
checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766"
dependencies = [
"proc-macro2",
"quote",
@@ -2026,9 +2034,9 @@ dependencies = [
[[package]]
name = "serde_json"
version = "1.0.128"
version = "1.0.132"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8"
checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03"
dependencies = [
"itoa",
"memchr",
@@ -2038,15 +2046,15 @@ dependencies = [
[[package]]
name = "serde_with"
version = "3.9.0"
version = "3.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857"
checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817"
dependencies = [
"base64",
"chrono",
"hex",
"indexmap 1.9.3",
"indexmap 2.5.0",
"indexmap 2.6.0",
"serde",
"serde_derive",
"serde_json",
@@ -2056,9 +2064,9 @@ dependencies = [
[[package]]
name = "serde_with_macros"
version = "3.9.0"
version = "3.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350"
checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d"
dependencies = [
"darling",
"proc-macro2",
@@ -2072,7 +2080,7 @@ version = "0.9.34+deprecated"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
dependencies = [
"indexmap 2.5.0",
"indexmap 2.6.0",
"itoa",
"ryu",
"serde",
@@ -2134,6 +2142,12 @@ dependencies = [
"thread_local",
]
[[package]]
name = "streaming-iterator"
version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b2231b7c3057d5e4ad0156fb3dc807d900806020c5ffa3ee6ff2c8c76fb8520"
[[package]]
name = "strsim"
version = "0.11.1"
@@ -2142,9 +2156,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
[[package]]
name = "syn"
version = "2.0.77"
version = "2.0.87"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed"
checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d"
dependencies = [
"proc-macro2",
"quote",
@@ -2179,18 +2193,18 @@ checksum = "f18aa187839b2bdb1ad2fa35ead8c4c2976b64e4363c386d45ac0f7ee85c9233"
[[package]]
name = "thiserror"
version = "1.0.63"
version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724"
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
version = "1.0.63"
version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
dependencies = [
"proc-macro2",
"quote",
@@ -2301,20 +2315,22 @@ dependencies = [
[[package]]
name = "tree-sitter"
version = "0.23.0"
version = "0.24.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "20f4cd3642c47a85052a887d86704f4eac272969f61b686bdd3f772122aabaff"
checksum = "b67baf55e7e1b6806063b1e51041069c90afff16afcbbccd278d899f9d84bca4"
dependencies = [
"cc",
"regex",
"regex-syntax 0.8.4",
"regex-syntax 0.8.5",
"streaming-iterator",
"tree-sitter-language",
]
[[package]]
name = "tree-sitter-embedded-template"
version = "0.23.0"
source = "git+https://github.com/tree-sitter/tree-sitter-embedded-template.git?rev=62b0a6e45900a7dff7c37da95fec20a09968ba52#62b0a6e45900a7dff7c37da95fec20a09968ba52"
version = "0.23.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "790063ef14e5b67556abc0b3be0ed863fb41d65ee791cf8c0b20eb42a1fa46af"
dependencies = [
"cc",
"tree-sitter-language",
@@ -2322,8 +2338,9 @@ dependencies = [
[[package]]
name = "tree-sitter-json"
version = "0.23.0"
source = "git+https://github.com/tree-sitter/tree-sitter-json#8bfdb43f47ad805bb1ce093203cfcbaa8ed2c571"
version = "0.24.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4d727acca406c0020cffc6cf35516764f36c8e3dc4408e5ebe2cb35a947ec471"
dependencies = [
"cc",
"tree-sitter-language",
@@ -2331,14 +2348,15 @@ dependencies = [
[[package]]
name = "tree-sitter-language"
version = "0.1.0"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2545046bd1473dac6c626659cc2567c6c0ff302fc8b84a56c4243378276f7f57"
checksum = "e8ddffe35a0e5eeeadf13ff7350af564c6e73993a24db62caee1822b185c2600"
[[package]]
name = "tree-sitter-ql"
version = "0.23.0"
source = "git+https://github.com/tree-sitter/tree-sitter-ql#c73c31c89cb0019ef56fe8bc1723e7c36e0be607"
version = "0.23.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "80b7bcaf39acefbb199417a6ec2fd0c038083ba115da3e4f4426c820dc76d386"
dependencies = [
"cc",
"tree-sitter-language",
@@ -2346,8 +2364,9 @@ dependencies = [
[[package]]
name = "tree-sitter-ruby"
version = "0.23.0"
source = "git+https://github.com/tree-sitter/tree-sitter-ruby.git?rev=a66579f70d6f50ffd81a16fc3d3358e2ac173c88#a66579f70d6f50ffd81a16fc3d3358e2ac173c88"
version = "0.23.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be0484ea4ef6bb9c575b4fdabde7e31340a8d2dbc7d52b321ac83da703249f95"
dependencies = [
"cc",
"tree-sitter-language",
@@ -2355,9 +2374,9 @@ dependencies = [
[[package]]
name = "triomphe"
version = "0.1.13"
version = "0.1.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6631e42e10b40c0690bf92f404ebcfe6e1fdb480391d15f17cc8e96eeed5369"
checksum = "ef8f7726da4807b58ea5c96fdc122f80702030edc33b35aff9190a51148ccc85"
dependencies = [
"serde",
"stable_deref_trait",
@@ -2392,15 +2411,15 @@ checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe"
[[package]]
name = "unicode-properties"
version = "0.1.2"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "52ea75f83c0137a9b98608359a5f1af8144876eb67bcb1ce837368e906a9f524"
checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0"
[[package]]
name = "unicode-xid"
version = "0.2.5"
version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a"
checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
[[package]]
name = "unsafe-libyaml"
@@ -2444,9 +2463,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "wasm-bindgen"
version = "0.2.93"
version = "0.2.95"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5"
checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e"
dependencies = [
"cfg-if",
"once_cell",
@@ -2455,9 +2474,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-backend"
version = "0.2.93"
version = "0.2.95"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b"
checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358"
dependencies = [
"bumpalo",
"log",
@@ -2470,9 +2489,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
version = "0.2.93"
version = "0.2.95"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf"
checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -2480,9 +2499,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
version = "0.2.93"
version = "0.2.95"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836"
checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68"
dependencies = [
"proc-macro2",
"quote",
@@ -2493,9 +2512,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-shared"
version = "0.2.93"
version = "0.2.95"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484"
checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d"
[[package]]
name = "winapi"

View File

@@ -25,50 +25,53 @@ 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.16.1")
bazel_dep(name = "rules_dotnet", version = "0.17.4")
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)
# 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",
],
)
use_repo(cp, "py_deps")
# 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"
# deps for ruby+rust, but shortened due to windows file paths
r = use_extension(
"@rules_rust//crate_universe:extension.bzl",
"crate",
isolate = True,
)
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",
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",
],
versions = [RUST_VERSION],
)
use_repo(r, tree_sitter_extractors_deps = "r")
use_repo(rust, "rust_toolchains")
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 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")
dotnet = use_extension("@rules_dotnet//dotnet:extensions.bzl", "dotnet")
dotnet.toolchain(dotnet_version = "8.0.101")
dotnet.toolchain(dotnet_version = "9.0.100")
use_repo(dotnet, "dotnet_toolchains")
register_toolchains("@dotnet_toolchains//:all")

View File

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

View File

@@ -0,0 +1,4 @@
---
category: minorAnalysis
---
* The `Guards` library (`semmle.code.cpp.controlflow.Guards`) has been improved to recognize more guard conditions. Additionally, the guards library no longer considers guards in static local initializers or global initializers as `GuardCondition`s.

View File

@@ -5,6 +5,7 @@
import cpp
import semmle.code.cpp.ir.IR
private import semmle.code.cpp.ir.ValueNumbering
private import semmle.code.cpp.ir.implementation.raw.internal.TranslatedExpr
private import semmle.code.cpp.ir.implementation.raw.internal.InstructionTag
@@ -59,7 +60,91 @@ class MatchValue extends AbstractValue, TMatchValue {
}
/**
* A Boolean condition in the AST that guards one or more basic blocks.
* A value number such that at least one of the instructions is
* a `CompareInstruction`.
*/
private class CompareValueNumber extends ValueNumber {
CompareInstruction cmp;
CompareValueNumber() { cmp = this.getAnInstruction() }
/** Gets a `CompareInstruction` belonging to this value number. */
CompareInstruction getCompareInstruction() { result = cmp }
/**
* Gets the left and right operands of a `CompareInstruction` that
* belong to this value number.
*/
predicate hasOperands(Operand left, Operand right) {
left = cmp.getLeftOperand() and
right = cmp.getRightOperand()
}
}
private class CompareEQValueNumber extends CompareValueNumber {
override CompareEQInstruction cmp;
}
private class CompareNEValueNumber extends CompareValueNumber {
override CompareNEInstruction cmp;
}
private class CompareLTValueNumber extends CompareValueNumber {
override CompareLTInstruction cmp;
}
private class CompareGTValueNumber extends CompareValueNumber {
override CompareGTInstruction cmp;
}
private class CompareLEValueNumber extends CompareValueNumber {
override CompareLEInstruction cmp;
}
private class CompareGEValueNumber extends CompareValueNumber {
override CompareGEInstruction cmp;
}
/**
* A value number such that at least one of the instructions provides
* the integer value controlling a `SwitchInstruction`.
*/
private class SwitchConditionValueNumber extends ValueNumber {
SwitchInstruction switch;
pragma[nomagic]
SwitchConditionValueNumber() { this.getAnInstruction() = switch.getExpression() }
/** Gets an expression that belongs to this value number. */
Operand getExpressionOperand() { result = switch.getExpressionOperand() }
Instruction getSuccessor(CaseEdge kind) { result = switch.getSuccessor(kind) }
}
private class BuiltinExpectCallValueNumber extends ValueNumber {
BuiltinExpectCallInstruction instr;
BuiltinExpectCallValueNumber() { this.getAnInstruction() = instr }
ValueNumber getCondition() { result.getAnInstruction() = instr.getCondition() }
Operand getAUse() { result = instr.getAUse() }
}
private class LogicalNotValueNumber extends ValueNumber {
LogicalNotInstruction instr;
LogicalNotValueNumber() { this.getAnInstruction() = instr }
ValueNumber getUnary() { result.getAnInstruction() = instr.getUnary() }
}
/**
* A Boolean condition in the AST that guards one or more basic blocks. This includes
* operands of logical operators but not switch statements.
*
* For performance reasons conditions inside static local initializers or
* global initializers are not considered `GuardCondition`s.
*/
cached
class GuardCondition extends Expr {
@@ -369,6 +454,9 @@ private predicate nonExcludedIRAndBasicBlock(IRBlock irb, BasicBlock controlled)
*
* Note that `&&` and `||` don't have an explicit representation in the IR,
* and therefore will not appear as IRGuardConditions.
*
* For performance reasons conditions inside static local initializers or
* global initializers are not considered `IRGuardCondition`s.
*/
cached
class IRGuardCondition extends Instruction {
@@ -517,7 +605,7 @@ class IRGuardCondition extends Instruction {
cached
predicate comparesLt(Operand left, Operand right, int k, boolean isLessThan, boolean testIsTrue) {
exists(BooleanValue value |
compares_lt(this, left, right, k, isLessThan, value) and
compares_lt(valueNumber(this), left, right, k, isLessThan, value) and
value.getValue() = testIsTrue
)
}
@@ -528,7 +616,7 @@ class IRGuardCondition extends Instruction {
*/
cached
predicate comparesLt(Operand op, int k, boolean isLessThan, AbstractValue value) {
compares_lt(this, op, k, isLessThan, value)
compares_lt(valueNumber(this), op, k, isLessThan, value)
}
/**
@@ -538,7 +626,8 @@ class IRGuardCondition extends Instruction {
cached
predicate ensuresLt(Operand left, Operand right, int k, IRBlock block, boolean isLessThan) {
exists(AbstractValue value |
compares_lt(this, left, right, k, isLessThan, value) and this.valueControls(block, value)
compares_lt(valueNumber(this), left, right, k, isLessThan, value) and
this.valueControls(block, value)
)
}
@@ -549,7 +638,8 @@ class IRGuardCondition extends Instruction {
cached
predicate ensuresLt(Operand op, int k, IRBlock block, boolean isLessThan) {
exists(AbstractValue value |
compares_lt(this, op, k, isLessThan, value) and this.valueControls(block, value)
compares_lt(valueNumber(this), op, k, isLessThan, value) and
this.valueControls(block, value)
)
}
@@ -562,7 +652,7 @@ class IRGuardCondition extends Instruction {
Operand left, Operand right, int k, IRBlock pred, IRBlock succ, boolean isLessThan
) {
exists(AbstractValue value |
compares_lt(this, left, right, k, isLessThan, value) and
compares_lt(valueNumber(this), left, right, k, isLessThan, value) and
this.valueControlsEdge(pred, succ, value)
)
}
@@ -574,7 +664,7 @@ class IRGuardCondition extends Instruction {
cached
predicate ensuresLtEdge(Operand left, int k, IRBlock pred, IRBlock succ, boolean isLessThan) {
exists(AbstractValue value |
compares_lt(this, left, k, isLessThan, value) and
compares_lt(valueNumber(this), left, k, isLessThan, value) and
this.valueControlsEdge(pred, succ, value)
)
}
@@ -583,7 +673,7 @@ class IRGuardCondition extends Instruction {
cached
predicate comparesEq(Operand left, Operand right, int k, boolean areEqual, boolean testIsTrue) {
exists(BooleanValue value |
compares_eq(this, left, right, k, areEqual, value) and
compares_eq(valueNumber(this), left, right, k, areEqual, value) and
value.getValue() = testIsTrue
)
}
@@ -591,7 +681,7 @@ class IRGuardCondition extends Instruction {
/** Holds if (determined by this guard) `op == k` evaluates to `areEqual` if this expression evaluates to `value`. */
cached
predicate comparesEq(Operand op, int k, boolean areEqual, AbstractValue value) {
unary_compares_eq(this, op, k, areEqual, false, value)
unary_compares_eq(valueNumber(this), op, k, areEqual, false, value)
}
/**
@@ -601,7 +691,8 @@ class IRGuardCondition extends Instruction {
cached
predicate ensuresEq(Operand left, Operand right, int k, IRBlock block, boolean areEqual) {
exists(AbstractValue value |
compares_eq(this, left, right, k, areEqual, value) and this.valueControls(block, value)
compares_eq(valueNumber(this), left, right, k, areEqual, value) and
this.valueControls(block, value)
)
}
@@ -612,7 +703,8 @@ class IRGuardCondition extends Instruction {
cached
predicate ensuresEq(Operand op, int k, IRBlock block, boolean areEqual) {
exists(AbstractValue value |
unary_compares_eq(this, op, k, areEqual, false, value) and this.valueControls(block, value)
unary_compares_eq(valueNumber(this), op, k, areEqual, false, value) and
this.valueControls(block, value)
)
}
@@ -625,7 +717,7 @@ class IRGuardCondition extends Instruction {
Operand left, Operand right, int k, IRBlock pred, IRBlock succ, boolean areEqual
) {
exists(AbstractValue value |
compares_eq(this, left, right, k, areEqual, value) and
compares_eq(valueNumber(this), left, right, k, areEqual, value) and
this.valueControlsEdge(pred, succ, value)
)
}
@@ -637,7 +729,7 @@ class IRGuardCondition extends Instruction {
cached
predicate ensuresEqEdge(Operand op, int k, IRBlock pred, IRBlock succ, boolean areEqual) {
exists(AbstractValue value |
unary_compares_eq(this, op, k, areEqual, false, value) and
unary_compares_eq(valueNumber(this), op, k, areEqual, false, value) and
this.valueControlsEdge(pred, succ, value)
)
}
@@ -725,13 +817,20 @@ class IRGuardCondition extends Instruction {
}
private Instruction getBranchForCondition(Instruction guard) {
result.(ConditionalBranchInstruction).getCondition() = guard
// There are a lot of guards inside global or static local initializers,
// and on certain databases this can make the `ensures*` predicates
// blow up.
// These guards are likely not super important anyway.
guard.getEnclosingFunction() instanceof Function and
(
result.(ConditionalBranchInstruction).getCondition() = guard
or
result.(SwitchInstruction).getExpression() = guard
)
or
exists(LogicalNotInstruction cond |
result = getBranchForCondition(cond) and cond.getUnary() = guard
)
or
result.(SwitchInstruction).getExpression() = guard
}
/**
@@ -740,7 +839,7 @@ private Instruction getBranchForCondition(Instruction guard) {
* Beware making mistaken logical implications here relating `areEqual` and `testIsTrue`.
*/
private predicate compares_eq(
Instruction test, Operand left, Operand right, int k, boolean areEqual, AbstractValue value
ValueNumber test, Operand left, Operand right, int k, boolean areEqual, AbstractValue value
) {
/* The simple case where the test *is* the comparison so areEqual = testIsTrue xor eq. */
exists(AbstractValue v | simple_comparison_eq(test, left, right, k, v) |
@@ -759,10 +858,10 @@ private predicate compares_eq(
or
/* (x is true => (left == right + k)) => (!x is false => (left == right + k)) */
exists(AbstractValue dual | value = dual.getDualValue() |
compares_eq(test.(LogicalNotInstruction).getUnary(), left, right, k, areEqual, dual)
compares_eq(test.(LogicalNotValueNumber).getUnary(), left, right, k, areEqual, dual)
)
or
compares_eq(test.(BuiltinExpectCallInstruction).getCondition(), left, right, k, areEqual, value)
compares_eq(test.(BuiltinExpectCallValueNumber).getCondition(), left, right, k, areEqual, value)
}
/**
@@ -801,12 +900,10 @@ private predicate compares_eq(
* latter.
*/
private predicate unary_compares_eq(
Instruction test, Operand op, int k, boolean areEqual, boolean inNonZeroCase, AbstractValue value
ValueNumber test, Operand op, int k, boolean areEqual, boolean inNonZeroCase, AbstractValue value
) {
/* The simple case where the test *is* the comparison so areEqual = testIsTrue xor eq. */
exists(AbstractValue v |
unary_simple_comparison_eq(test, k, inNonZeroCase, v) and op.getDef() = test
|
exists(AbstractValue v | unary_simple_comparison_eq(test, op, k, inNonZeroCase, v) |
areEqual = true and value = v
or
areEqual = false and value = v.getDualValue()
@@ -817,7 +914,7 @@ private predicate unary_compares_eq(
/* (x is true => (op == k)) => (!x is false => (op == k)) */
exists(AbstractValue dual, boolean inNonZeroCase0 |
value = dual.getDualValue() and
unary_compares_eq(test.(LogicalNotInstruction).getUnary(), op, k, inNonZeroCase0, areEqual, dual)
unary_compares_eq(test.(LogicalNotValueNumber).getUnary(), op, k, inNonZeroCase0, areEqual, dual)
|
k = 0 and inNonZeroCase = inNonZeroCase0
or
@@ -827,82 +924,95 @@ private predicate unary_compares_eq(
// ((test is `areEqual` => op == const + k2) and const == `k1`) =>
// test is `areEqual` => op == k1 + k2
inNonZeroCase = false and
exists(int k1, int k2, ConstantInstruction const |
exists(int k1, int k2, Instruction const |
compares_eq(test, op, const.getAUse(), k2, areEqual, value) and
int_value(const) = k1 and
k = k1 + k2
)
or
unary_compares_eq(test.(BuiltinExpectCallInstruction).getCondition(), op, k, areEqual,
unary_compares_eq(test.(BuiltinExpectCallValueNumber).getCondition(), op, k, areEqual,
inNonZeroCase, value)
}
/** Rearrange various simple comparisons into `left == right + k` form. */
private predicate simple_comparison_eq(
CompareInstruction cmp, Operand left, Operand right, int k, AbstractValue value
CompareValueNumber cmp, Operand left, Operand right, int k, AbstractValue value
) {
left = cmp.getLeftOperand() and
cmp instanceof CompareEQInstruction and
right = cmp.getRightOperand() and
cmp instanceof CompareEQValueNumber and
cmp.hasOperands(left, right) and
k = 0 and
value.(BooleanValue).getValue() = true
or
left = cmp.getLeftOperand() and
cmp instanceof CompareNEInstruction and
right = cmp.getRightOperand() and
cmp instanceof CompareNEValueNumber and
cmp.hasOperands(left, right) and
k = 0 and
value.(BooleanValue).getValue() = false
}
/**
* Rearrange various simple comparisons into `op == k` form.
* Holds if `op` is an operand that is eventually used in a unary comparison
* with a constant.
*/
private predicate isRelevantUnaryComparisonOperand(Operand op) {
// Base case: `op` is an operand of a `CompareEQInstruction` or `CompareNEInstruction`,
// and the other operand is a constant.
exists(CompareInstruction eq, Instruction instr |
eq.hasOperands(op, instr.getAUse()) and
exists(int_value(instr))
|
eq instanceof CompareEQInstruction
or
eq instanceof CompareNEInstruction
)
or
// C doesn't have int-to-bool conversions, so `if(x)` will just generate:
// r2_1(glval<int>) = VariableAddress[x]
// r2_2(int) = Load[x] : &:r2_1, m1_6
// v2_3(void) = ConditionalBranch : r2_2
exists(ConditionalBranchInstruction branch | branch.getConditionOperand() = op)
or
// If `!x` is a relevant unary comparison then so is `x`.
exists(LogicalNotInstruction logicalNot |
isRelevantUnaryComparisonOperand(unique( | | logicalNot.getAUse())) and
logicalNot.getUnaryOperand() = op
)
or
// If `y` is a relevant unary comparison and `y = x` then so is `x`.
not op.isDefinitionInexact() and
exists(CopyInstruction copy |
isRelevantUnaryComparisonOperand(unique( | | copy.getAUse())) and
op = copy.getSourceValueOperand()
)
or
// If phi(x1, x2) is a relevant unary comparison then so are `x1` and `x2`.
not op.isDefinitionInexact() and
exists(PhiInstruction phi |
isRelevantUnaryComparisonOperand(unique( | | phi.getAUse())) and
op = phi.getAnInputOperand()
)
or
// If `__builtin_expect(x)` is a relevant unary comparison then so is `x`.
exists(BuiltinExpectCallInstruction call |
isRelevantUnaryComparisonOperand(unique( | | call.getAUse())) and
op = call.getConditionOperand()
)
}
/** Rearrange various simple comparisons into `op == k` form. */
private predicate unary_simple_comparison_eq(
Instruction test, int k, boolean inNonZeroCase, AbstractValue value
ValueNumber test, Operand op, int k, boolean inNonZeroCase, AbstractValue value
) {
exists(SwitchInstruction switch, CaseEdge case |
test = switch.getExpression() and
exists(CaseEdge case, SwitchConditionValueNumber condition |
condition = test and
op = condition.getExpressionOperand() and
case = value.(MatchValue).getCase() and
exists(switch.getSuccessor(case)) and
exists(condition.getSuccessor(case)) and
case.getValue().toInt() = k and
inNonZeroCase = false
)
or
// Any instruction with an integral type could potentially be part of a
// check for nullness when used in a guard. So we include all integral
// typed instructions here. However, since some of these instructions are
// already included as guards in other cases, we exclude those here.
// These are instructions that compute a binary equality or inequality
// relation. For example, the following:
// ```cpp
// if(a == b + 42) { ... }
// ```
// generates the following IR:
// ```
// r1(glval<int>) = VariableAddress[a] :
// r2(int) = Load[a] : &:r1, m1
// r3(glval<int>) = VariableAddress[b] :
// r4(int) = Load[b] : &:r3, m2
// r5(int) = Constant[42] :
// r6(int) = Add : r4, r5
// r7(bool) = CompareEQ : r2, r6
// v1(void) = ConditionalBranch : r7
// ```
// and since `r7` is an integral typed instruction this predicate could
// include a case for when `r7` evaluates to true (in which case we would
// infer that `r6` was non-zero, and a case for when `r7` evaluates to false
// (in which case we would infer that `r6` was zero).
// However, since `a == b + 42` is already supported when reasoning about
// binary equalities we exclude those cases here.
not test.isGLValue() and
not simple_comparison_eq(test, _, _, _, _) and
not simple_comparison_lt(test, _, _, _) and
not test = any(SwitchInstruction switch).getExpression() and
(
test.getResultIRType() instanceof IRAddressType or
test.getResultIRType() instanceof IRIntegerType or
test.getResultIRType() instanceof IRBooleanType
) and
isRelevantUnaryComparisonOperand(op) and
op.getDef() = test.getAnInstruction() and
(
k = 1 and
value.(BooleanValue).getValue() = true and
@@ -919,10 +1029,12 @@ private class BuiltinExpectCallInstruction extends CallInstruction {
BuiltinExpectCallInstruction() { this.getStaticCallTarget().hasName("__builtin_expect") }
/** Gets the condition of this call. */
Instruction getCondition() {
Instruction getCondition() { result = this.getConditionOperand().getDef() }
Operand getConditionOperand() {
// The first parameter of `__builtin_expect` has type `long`. So we skip
// the conversion when inferring guards.
result = this.getArgument(0).(ConvertInstruction).getUnary()
result = this.getArgument(0).(ConvertInstruction).getUnaryOperand()
}
}
@@ -932,23 +1044,23 @@ private class BuiltinExpectCallInstruction extends CallInstruction {
* `__builtin_expect(left == right + k, _)` to `0`.
*/
private predicate builtin_expect_eq(
CompareInstruction cmp, Operand left, Operand right, int k, boolean areEqual, AbstractValue value
CompareValueNumber cmp, Operand left, Operand right, int k, boolean areEqual, AbstractValue value
) {
exists(BuiltinExpectCallInstruction call, Instruction const, AbstractValue innerValue |
exists(BuiltinExpectCallValueNumber call, Instruction const, AbstractValue innerValue |
int_value(const) = 0 and
cmp.hasOperands(call.getAUse(), const.getAUse()) and
compares_eq(call.getCondition(), left, right, k, areEqual, innerValue)
|
cmp instanceof CompareNEInstruction and
cmp instanceof CompareNEValueNumber and
value = innerValue
or
cmp instanceof CompareEQInstruction and
cmp instanceof CompareEQValueNumber and
value.getDualValue() = innerValue
)
}
private predicate complex_eq(
CompareInstruction cmp, Operand left, Operand right, int k, boolean areEqual, AbstractValue value
ValueNumber cmp, Operand left, Operand right, int k, boolean areEqual, AbstractValue value
) {
sub_eq(cmp, left, right, k, areEqual, value)
or
@@ -962,24 +1074,24 @@ private predicate complex_eq(
* an instruction that compares the value of `__builtin_expect(op == k, _)` to `0`.
*/
private predicate unary_builtin_expect_eq(
CompareInstruction cmp, Operand op, int k, boolean areEqual, boolean inNonZeroCase,
CompareValueNumber cmp, Operand op, int k, boolean areEqual, boolean inNonZeroCase,
AbstractValue value
) {
exists(BuiltinExpectCallInstruction call, Instruction const, AbstractValue innerValue |
exists(BuiltinExpectCallValueNumber call, Instruction const, AbstractValue innerValue |
int_value(const) = 0 and
cmp.hasOperands(call.getAUse(), const.getAUse()) and
unary_compares_eq(call.getCondition(), op, k, areEqual, inNonZeroCase, innerValue)
|
cmp instanceof CompareNEInstruction and
cmp instanceof CompareNEValueNumber and
value = innerValue
or
cmp instanceof CompareEQInstruction and
cmp instanceof CompareEQValueNumber and
value.getDualValue() = innerValue
)
}
private predicate unary_complex_eq(
Instruction test, Operand op, int k, boolean areEqual, boolean inNonZeroCase, AbstractValue value
ValueNumber test, Operand op, int k, boolean areEqual, boolean inNonZeroCase, AbstractValue value
) {
unary_sub_eq(test, op, k, areEqual, inNonZeroCase, value)
or
@@ -995,7 +1107,7 @@ private predicate unary_complex_eq(
/** Holds if `left < right + k` evaluates to `isLt` given that test is `testIsTrue`. */
private predicate compares_lt(
Instruction test, Operand left, Operand right, int k, boolean isLt, AbstractValue value
ValueNumber test, Operand left, Operand right, int k, boolean isLt, AbstractValue value
) {
/* In the simple case, the test is the comparison, so isLt = testIsTrue */
simple_comparison_lt(test, left, right, k) and
@@ -1008,23 +1120,22 @@ private predicate compares_lt(
or
/* (x is true => (left < right + k)) => (!x is false => (left < right + k)) */
exists(AbstractValue dual | value = dual.getDualValue() |
compares_lt(test.(LogicalNotInstruction).getUnary(), left, right, k, isLt, dual)
compares_lt(test.(LogicalNotValueNumber).getUnary(), left, right, k, isLt, dual)
)
}
/** Holds if `op < k` evaluates to `isLt` given that `test` evaluates to `value`. */
private predicate compares_lt(Instruction test, Operand op, int k, boolean isLt, AbstractValue value) {
unary_simple_comparison_lt(test, k, isLt, value) and
op.getDef() = test
private predicate compares_lt(ValueNumber test, Operand op, int k, boolean isLt, AbstractValue value) {
unary_simple_comparison_lt(test, op, k, isLt, value)
or
complex_lt(test, op, k, isLt, value)
or
/* (x is true => (op < k)) => (!x is false => (op < k)) */
exists(AbstractValue dual | value = dual.getDualValue() |
compares_lt(test.(LogicalNotInstruction).getUnary(), op, k, isLt, dual)
compares_lt(test.(LogicalNotValueNumber).getUnary(), op, k, isLt, dual)
)
or
exists(int k1, int k2, ConstantInstruction const |
exists(int k1, int k2, Instruction const |
compares_lt(test, op, const.getAUse(), k2, isLt, value) and
int_value(const) = k1 and
k = k1 + k2
@@ -1033,42 +1144,38 @@ private predicate compares_lt(Instruction test, Operand op, int k, boolean isLt,
/** `(a < b + k) => (b > a - k) => (b >= a + (1-k))` */
private predicate compares_ge(
Instruction test, Operand left, Operand right, int k, boolean isGe, AbstractValue value
ValueNumber test, Operand left, Operand right, int k, boolean isGe, AbstractValue value
) {
exists(int onemk | k = 1 - onemk | compares_lt(test, right, left, onemk, isGe, value))
}
/** Rearrange various simple comparisons into `left < right + k` form. */
private predicate simple_comparison_lt(CompareInstruction cmp, Operand left, Operand right, int k) {
left = cmp.getLeftOperand() and
cmp instanceof CompareLTInstruction and
right = cmp.getRightOperand() and
private predicate simple_comparison_lt(CompareValueNumber cmp, Operand left, Operand right, int k) {
cmp.hasOperands(left, right) and
cmp instanceof CompareLTValueNumber and
k = 0
or
left = cmp.getLeftOperand() and
cmp instanceof CompareLEInstruction and
right = cmp.getRightOperand() and
cmp.hasOperands(left, right) and
cmp instanceof CompareLEValueNumber and
k = 1
or
right = cmp.getLeftOperand() and
cmp instanceof CompareGTInstruction and
left = cmp.getRightOperand() and
cmp.hasOperands(right, left) and
cmp instanceof CompareGTValueNumber and
k = 0
or
right = cmp.getLeftOperand() and
cmp instanceof CompareGEInstruction and
left = cmp.getRightOperand() and
cmp.hasOperands(right, left) and
cmp instanceof CompareGEValueNumber and
k = 1
}
/** Rearrange various simple comparisons into `op < k` form. */
private predicate unary_simple_comparison_lt(
Instruction test, int k, boolean isLt, AbstractValue value
SwitchConditionValueNumber test, Operand op, int k, boolean isLt, AbstractValue value
) {
exists(SwitchInstruction switch, CaseEdge case |
test = switch.getExpression() and
exists(CaseEdge case |
test.getExpressionOperand() = op and
case = value.(MatchValue).getCase() and
exists(switch.getSuccessor(case)) and
exists(test.getSuccessor(case)) and
case.getMaxValue() > case.getMinValue()
|
// op <= k => op < k - 1
@@ -1081,7 +1188,7 @@ private predicate unary_simple_comparison_lt(
}
private predicate complex_lt(
CompareInstruction cmp, Operand left, Operand right, int k, boolean isLt, AbstractValue value
ValueNumber cmp, Operand left, Operand right, int k, boolean isLt, AbstractValue value
) {
sub_lt(cmp, left, right, k, isLt, value)
or
@@ -1089,7 +1196,7 @@ private predicate complex_lt(
}
private predicate complex_lt(
Instruction test, Operand left, int k, boolean isLt, AbstractValue value
ValueNumber test, Operand left, int k, boolean isLt, AbstractValue value
) {
sub_lt(test, left, k, isLt, value)
or
@@ -1099,7 +1206,7 @@ private predicate complex_lt(
// left - x < right + c => left < right + (c+x)
// left < (right - x) + c => left < right + (c-x)
private predicate sub_lt(
CompareInstruction cmp, Operand left, Operand right, int k, boolean isLt, AbstractValue value
ValueNumber cmp, Operand left, Operand right, int k, boolean isLt, AbstractValue value
) {
exists(SubInstruction lhs, int c, int x |
compares_lt(cmp, lhs.getAUse(), right, c, isLt, value) and
@@ -1130,7 +1237,7 @@ private predicate sub_lt(
)
}
private predicate sub_lt(Instruction test, Operand left, int k, boolean isLt, AbstractValue value) {
private predicate sub_lt(ValueNumber test, Operand left, int k, boolean isLt, AbstractValue value) {
exists(SubInstruction lhs, int c, int x |
compares_lt(test, lhs.getAUse(), c, isLt, value) and
left = lhs.getLeftOperand() and
@@ -1149,7 +1256,7 @@ private predicate sub_lt(Instruction test, Operand left, int k, boolean isLt, Ab
// left + x < right + c => left < right + (c-x)
// left < (right + x) + c => left < right + (c+x)
private predicate add_lt(
CompareInstruction cmp, Operand left, Operand right, int k, boolean isLt, AbstractValue value
ValueNumber cmp, Operand left, Operand right, int k, boolean isLt, AbstractValue value
) {
exists(AddInstruction lhs, int c, int x |
compares_lt(cmp, lhs.getAUse(), right, c, isLt, value) and
@@ -1192,7 +1299,7 @@ private predicate add_lt(
)
}
private predicate add_lt(Instruction test, Operand left, int k, boolean isLt, AbstractValue value) {
private predicate add_lt(ValueNumber test, Operand left, int k, boolean isLt, AbstractValue value) {
exists(AddInstruction lhs, int c, int x |
compares_lt(test, lhs.getAUse(), c, isLt, value) and
(
@@ -1217,7 +1324,7 @@ private predicate add_lt(Instruction test, Operand left, int k, boolean isLt, Ab
// left - x == right + c => left == right + (c+x)
// left == (right - x) + c => left == right + (c-x)
private predicate sub_eq(
CompareInstruction cmp, Operand left, Operand right, int k, boolean areEqual, AbstractValue value
ValueNumber cmp, Operand left, Operand right, int k, boolean areEqual, AbstractValue value
) {
exists(SubInstruction lhs, int c, int x |
compares_eq(cmp, lhs.getAUse(), right, c, areEqual, value) and
@@ -1250,7 +1357,7 @@ private predicate sub_eq(
// op - x == c => op == (c+x)
private predicate unary_sub_eq(
Instruction test, Operand op, int k, boolean areEqual, boolean inNonZeroCase, AbstractValue value
ValueNumber test, Operand op, int k, boolean areEqual, boolean inNonZeroCase, AbstractValue value
) {
inNonZeroCase = false and
exists(SubInstruction sub, int c, int x |
@@ -1272,7 +1379,7 @@ private predicate unary_sub_eq(
// left + x == right + c => left == right + (c-x)
// left == (right + x) + c => left == right + (c+x)
private predicate add_eq(
CompareInstruction cmp, Operand left, Operand right, int k, boolean areEqual, AbstractValue value
ValueNumber cmp, Operand left, Operand right, int k, boolean areEqual, AbstractValue value
) {
exists(AddInstruction lhs, int c, int x |
compares_eq(cmp, lhs.getAUse(), right, c, areEqual, value) and
@@ -1317,7 +1424,7 @@ private predicate add_eq(
// left + x == right + c => left == right + (c-x)
private predicate unary_add_eq(
Instruction test, Operand left, int k, boolean areEqual, boolean inNonZeroCase,
ValueNumber test, Operand left, int k, boolean areEqual, boolean inNonZeroCase,
AbstractValue value
) {
inNonZeroCase = false and
@@ -1351,6 +1458,4 @@ private class IntegerOrPointerConstantInstruction extends ConstantInstruction {
}
/** The int value of integer constant expression. */
private int int_value(Instruction i) {
result = i.(IntegerOrPointerConstantInstruction).getValue().toInt()
}
private int int_value(IntegerOrPointerConstantInstruction i) { result = i.getValue().toInt() }

View File

@@ -546,4 +546,26 @@ 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,4 +546,26 @@ 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,4 +546,26 @@ 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

@@ -8,7 +8,7 @@
<p>
This rule finds accesses through a pointer of a memory location that has already been freed (i.e. through a dangling pointer).
Such memory blocks have already been released to the dynamic memory manager, and modifying them can lead to anything
from a segfault to memory corruption that would cause subsequent calls to the dynamic memory manger to behave
from a segfault to memory corruption that would cause subsequent calls to the dynamic memory manager to behave
erratically, to a possible security vulnerability.
</p>

View File

@@ -40,4 +40,5 @@ 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::nonUniqueIRVariable(i, _, _, _) | i) as nonUniqueIRVariable,
count(Instruction i | IRConsistency::nonBooleanOperand(i, _, _, _) | i) as nonBooleanOperand

View File

@@ -0,0 +1,13 @@
/**
* @name Compiler errors
* @description A count of all compiler errors, grouped by error text.
* @kind metric
* @tags summary telemetry
* @id cpp/telemetry/compiler-errors
*/
import Metrics
from CppMetrics::ErrorCount m
where RankMetric<CppMetrics::ErrorCount>::getRank(m) <= 50
select m.toString(), m.getValue()

View File

@@ -0,0 +1,12 @@
/**
* @name Database quality
* @description Metrics that indicate the quality of the database.
* @kind metric
* @tags summary telemetry
* @id cpp/telemetry/database-quality
*/
import Metrics
from QualityMetric m
select m.toString(), m.getValue()

View File

@@ -0,0 +1,29 @@
import cpp
/**
* A syntax error.
*/
class SyntaxError extends CompilerError {
SyntaxError() {
this.getTag().matches("exp_%") or
this.getTag() =
[
"bad_data_member_initialization", "bad_pure_specifier", "bad_return", "bad_uuid_string",
"literal_without_initializer", "missing_class_definition", "missing_exception_declaration",
"nonstd_const_member_decl_not_allowed", "operator_name_not_allowed",
"wide_string_invalid_in_asm"
]
}
}
/**
* A cannot open file error.
* Typically this is due to a missing include.
*/
class CannotOpenFileError extends CompilerError {
CannotOpenFileError() { this.hasTag(["cannot_open_file", "cannot_open_file_reason"]) }
string getIncludedFile() {
result = this.getMessage().regexpCapture("cannot open source file '([^']+)'", 1)
}
}

View File

@@ -0,0 +1,12 @@
/**
* @name Extraction metrics
* @description Raw metrics relating to extraction.
* @kind metric
* @tags summary telemetry
* @id cpp/telemetry/extraction-metrics
*/
import Metrics
from ExtractionMetric m
select m.toString(), m.getValue()

View File

@@ -0,0 +1,269 @@
import cpp
import Diagnostics
/**
* A metric is a string with a value.
*/
abstract class Metric extends string {
bindingset[this]
Metric() { any() }
}
/**
* A metric that we want to report in cpp/telemetry/extraction-metrics
*/
abstract class ExtractionMetric extends Metric {
bindingset[this]
ExtractionMetric() { any() }
/** Gets the value of this metric. */
abstract int getValue();
}
/**
* A metric that provides a baseline for a SuccessMetric.
*/
abstract class BaseMetric extends ExtractionMetric {
bindingset[this]
BaseMetric() { any() }
}
/**
* A metric that is relative to another metric,
* so can be used to calculate percentages.
*
* For clarity, metrics should express success,
* so higher values means better.
*/
abstract class SuccessMetric extends ExtractionMetric {
bindingset[this]
SuccessMetric() { any() }
/** Gets the metric this is relative to. */
abstract BaseMetric getBaseline();
}
/**
* A metric used to report database quality.
*/
class QualityMetric extends Metric {
BaseMetric baseMetric;
SuccessMetric relativeMetric;
QualityMetric() {
baseMetric = relativeMetric.getBaseline() and this = "Percentage of " + relativeMetric
}
float getValue() {
baseMetric.getValue() > 0 and
result = 100.0 * relativeMetric.getValue() / baseMetric.getValue()
}
}
signature class RankedMetric extends Metric {
int getValue();
}
module RankMetric<RankedMetric M> {
int getRank(M s) { s = rank[result](M m | | m order by m.getValue() desc) }
}
/** Various metrics we want to report. */
module CppMetrics {
class Compilations extends BaseMetric {
Compilations() { this = "compilations" }
override int getValue() { result = count(Compilation c) }
}
class SourceAndHeaderFiles extends BaseMetric {
SourceAndHeaderFiles() { this = "source/header files" }
override int getValue() { result = count(File f | f.fromSource()) }
}
class SourceAndHeaderFilesWithoutErrors extends SuccessMetric {
SourceAndHeaderFilesWithoutErrors() { this = "source/header files without errors" }
override int getValue() {
result = count(File f | f.fromSource() and not exists(CompilerError e | f = e.getFile()))
}
override SourceAndHeaderFiles getBaseline() { any() }
}
class CompilationsWithoutErrors extends SuccessMetric {
CompilationsWithoutErrors() { this = "compilations without errors" }
override int getValue() {
result = count(Compilation c | not exists(Diagnostic d | d.getFile() = c.getAFileCompiled()))
}
override Compilations getBaseline() { any() }
}
class Expressions extends BaseMetric {
Expressions() { this = "expressions" }
override int getValue() { result = count(Expr e) }
}
class SucceededExpressions extends SuccessMetric {
SucceededExpressions() { this = "non-error expressions" }
override int getValue() { result = count(Expr e) - count(ErrorExpr e) }
override Expressions getBaseline() { any() }
}
class TypedExpressions extends SuccessMetric {
TypedExpressions() { this = "expressions with a known type" }
override int getValue() { result = count(Expr e | not e.getType() instanceof ErroneousType) }
override Expressions getBaseline() { any() }
}
class Calls extends BaseMetric {
Calls() { this = "calls" }
override int getValue() { result = count(Call c) }
}
class CallsWithExplicitTarget extends SuccessMetric {
CallsWithExplicitTarget() { this = "calls with an explicit target" }
override int getValue() {
result = count(Call c | not c.getTarget().getADeclarationEntry().isImplicit())
}
override Calls getBaseline() { any() }
}
class Variables extends BaseMetric {
Variables() { this = "variables" }
override int getValue() { result = count(Variable v) }
}
class VariablesKnownType extends SuccessMetric {
VariablesKnownType() { this = "variables with a known type" }
override int getValue() {
result = count(Variable v | not v.getType() instanceof ErroneousType)
}
override Variables getBaseline() { any() }
}
class LinesOfText extends BaseMetric {
LinesOfText() { this = "lines of text" }
override int getValue() { result = sum(File f | | f.getMetrics().getNumberOfLines()) }
}
class LinesOfCode extends BaseMetric {
LinesOfCode() { this = "lines of code" }
override int getValue() { result = sum(File f | | f.getMetrics().getNumberOfLinesOfCode()) }
}
private predicate errorLine(File file, int line) {
exists(Locatable l, Location loc |
loc = l.getLocation() and
loc.getFile() = file and
line in [loc.getStartLine() .. loc.getEndLine()]
|
l instanceof Diagnostic
or
l instanceof ErrorExpr
)
}
class SucceededLines extends SuccessMetric {
SucceededLines() { this = "lines of code without errors" }
override int getValue() {
result =
sum(File f | | f.getMetrics().getNumberOfLinesOfCode()) -
count(File f, int line | errorLine(f, line))
}
override LinesOfCode getBaseline() { any() }
}
class Functions extends BaseMetric {
Functions() { this = "functions" }
override int getValue() { result = count(Function f) }
}
class SucceededFunctions extends SuccessMetric {
SucceededFunctions() { this = "functions without errors" }
override int getValue() { result = count(Function f | not f.hasErrors()) }
override Functions getBaseline() { any() }
}
class Includes extends BaseMetric {
Includes() { this = "#include directives" }
override int getValue() { result = count(Include i) + count(CannotOpenFileError e) }
}
class SucceededIncludes extends SuccessMetric {
SucceededIncludes() { this = "successfully resolved #include directives" }
override int getValue() { result = count(Include i) }
override Includes getBaseline() { any() }
}
class SucceededIncludeCount extends Metric {
string includeText;
SucceededIncludeCount() {
exists(Include i |
i.getIncludeText() = includeText and
exists(i.getFile().getRelativePath()) // Only report includes from the repo
) and
this = "Successfully included " + includeText
}
int getValue() { result = count(Include i | i.getIncludeText() = includeText) }
string getIncludeText() { result = includeText }
}
class MissingIncludeCount extends Metric {
string includeText;
MissingIncludeCount() {
exists(CannotOpenFileError e | e.getIncludedFile() = includeText) and
this = "Failed to include '" + includeText + "'"
}
int getValue() { result = count(CannotOpenFileError e | e.getIncludedFile() = includeText) }
string getIncludeText() { result = includeText }
}
class CompilerErrors extends ExtractionMetric {
CompilerErrors() { this = "compiler errors" }
override int getValue() { result = count(CompilerError e) }
}
class ErrorCount extends Metric {
ErrorCount() { exists(CompilerError e | e.getMessage() = this) }
int getValue() { result = count(CompilerError e | e.getMessage() = this) }
}
class SyntaxErrorCount extends ExtractionMetric {
SyntaxErrorCount() { this = "syntax errors" }
override int getValue() { result = count(SyntaxError e) }
}
}

View File

@@ -0,0 +1,13 @@
/**
* @name Failed to include header file
* @description A count of all failed includes, grouped by filename.
* @kind metric
* @tags summary telemetry
* @id cpp/telemetry/failed-includes
*/
import Metrics
from CppMetrics::MissingIncludeCount e
where RankMetric<CppMetrics::MissingIncludeCount>::getRank(e) <= 50
select e.getIncludeText(), e.getValue()

View File

@@ -0,0 +1,13 @@
/**
* @name Successfully included header files
* @description A count of all succeeded includes, grouped by filename.
* @kind metric
* @tags summary telemetry
* @id cpp/telemetry/succeeded-includes
*/
import Metrics
from CppMetrics::SucceededIncludeCount m
where RankMetric<CppMetrics::SucceededIncludeCount>::getRank(m) <= 50
select m.getIncludeText(), m.getValue()

View File

@@ -18,9 +18,31 @@ class FreeCall extends FunctionCall {
FreeCall() { this.getTarget().hasGlobalName("free") }
}
predicate blockContainsPreprocessorBranches(BasicBlock bb) {
exists(PreprocessorBranch ppb, Location bbLoc, Location ppbLoc |
bbLoc = bb.(Stmt).getLocation() and ppbLoc = ppb.getLocation()
|
bbLoc.getFile() = ppb.getFile() and
bbLoc.getStartLine() < ppbLoc.getStartLine() and
ppbLoc.getEndLine() < bbLoc.getEndLine()
)
}
from GuardCondition gc, FreeCall fc, Variable v, BasicBlock bb
where
gc.ensuresEq(v.getAnAccess(), 0, bb, false) and
fc.getArgument(0) = v.getAnAccess() and
bb = fc.getEnclosingStmt()
bb = fc.getBasicBlock() and
(
// No block statement: if (x) free(x);
bb = fc.getEnclosingStmt()
or
// Block statement with a single nested statement: if (x) { free(x); }
strictcount(bb.(BlockStmt).getAStmt()) = 1
) and
strictcount(BasicBlock bb2 | gc.ensuresEq(_, 0, bb2, _) | bb2) = 1 and
not fc.isInMacroExpansion() and
not blockContainsPreprocessorBranches(bb) and
not (gc instanceof BinaryOperation and not gc instanceof ComparisonOperation) and
not exists(CommaExpr c | c.getAChild*() = fc)
select gc, "unnecessary NULL check before call to $@", fc, "free"

View File

@@ -17,6 +17,7 @@
| test.cpp:49:12:49:12 | Load: x | test.cpp:46:22:46:22 | ValueNumberBound | -1 | true | CompareLT: ... < ... | test.cpp:48:9:48:13 | test.cpp:48:9:48:13 |
| test.cpp:49:12:49:12 | Load: x | test.cpp:46:29:46:29 | ValueNumberBound | -2 | true | CompareLT: ... < ... | test.cpp:48:9:48:13 | test.cpp:48:9:48:13 |
| test.cpp:54:12:54:12 | Load: x | test.cpp:46:22:46:22 | ValueNumberBound | -1 | true | CompareLT: ... < ... | test.cpp:52:7:52:11 | test.cpp:52:7:52:11 |
| test.cpp:54:12:54:12 | Load: x | test.cpp:46:29:46:29 | ValueNumberBound | -2 | true | CompareLT: ... < ... | test.cpp:52:7:52:11 | test.cpp:52:7:52:11 |
| test.cpp:62:10:62:13 | Load: iter | test.cpp:60:17:60:17 | ValueNumberBound | 0 | false | NoReason | file://:0:0:0:0 | file://:0:0:0:0 |
| test.cpp:62:10:62:13 | Load: iter | test.cpp:60:17:60:17 | ValueNumberBound | 3 | true | CompareLT: ... < ... | test.cpp:61:32:61:51 | test.cpp:61:32:61:51 |
| test.cpp:62:10:62:13 | Load: iter | test.cpp:61:39:61:51 | ValueNumberBound | -1 | true | CompareLT: ... < ... | test.cpp:61:32:61:51 | test.cpp:61:32:61:51 |

View File

@@ -51,7 +51,7 @@ int test5(int x, int y, int z) {
}
if (x < y) {
if (y < z) {
sink(x); // x < z is not inferred here
sink(x); // x < z is inferred here
}
}
}

View File

@@ -0,0 +1,5 @@
| test.cpp:5:7:5:7 | x | unnecessary NULL check before call to $@ | test.cpp:6:5:6:8 | call to free | free |
| test.cpp:10:7:10:7 | x | unnecessary NULL check before call to $@ | test.cpp:11:5:11:8 | call to free | free |
| test.cpp:42:7:42:7 | x | unnecessary NULL check before call to $@ | test.cpp:43:5:43:8 | call to free | free |
| test.cpp:49:7:49:7 | x | unnecessary NULL check before call to $@ | test.cpp:50:5:50:8 | call to free | free |
| test.cpp:106:7:106:18 | ... != ... | unnecessary NULL check before call to $@ | test.cpp:107:5:107:8 | call to free | free |

View File

@@ -0,0 +1 @@
experimental/Best Practices/GuardedFree.ql

View File

@@ -0,0 +1,115 @@
extern "C" void free(void *ptr);
extern "C" int strcmp(const char *s1, const char *s2);
void test0(int *x) {
if (x) // BAD
free(x);
}
void test1(int *x) {
if (x) { // BAD
free(x);
}
}
void test2(int *x) {
if (x) { // GOOD: x is being accessed in the body of the if
*x = 42;
free(x);
}
}
void test3(int *x, bool b) {
if (x) { // GOOD: x is being accessed in the body of the if
if (b)
*x = 42;
free(x);
}
}
bool test4(char *x, char *y) {
if (!x || strcmp(x, y)) { // GOOD: x is being accessed in the guard and return value depends on x
free(x);
return true;
}
free(x);
return false;
}
void test5(char *x) {
if (x)
*x = 42;
if (x) { // BAD
free(x);
}
}
void test6(char *x) {
*x = 42;
if (x) { // BAD
free(x);
}
}
void test7(char *x) {
if (x || x) { // BAD [NOT DETECTED]
free(x);
}
}
bool test8(char *x) {
if (x) { // GOOD: return value depends on x
free(x);
return true;
}
return false;
}
#ifdef FOO
#define my_free(x) free(x - 1)
#else
#define my_free(x) free(x)
#endif
void test9(char *x) {
if (x) { // GOOD: macro may make free behave unexpectedly when compiled differently
my_free(x);
}
}
void test10(char *x) {
if (x) { // GOOD: #ifdef may make free behave unexpectedly when compiled differently
#ifdef FOO
free(x - 1);
#else
free(x);
#endif
}
}
#define TRY_FREE(x) \
if (x) free(x);
void test11(char *x) {
TRY_FREE(x) // BAD [NOT DETECTED]
}
bool test12(char *x) {
if (!x) // GOOD: return value depends on x
return false;
free(x);
return true;
}
void test13(char *x) {
if (x != nullptr) // BAD
free(x);
}
void inspect(char *x);
void test14(char *x) {
if (x != nullptr) // GOOD: x might be accessed in the first operand of the comma operator
inspect(x), free(x);
}

View File

@@ -42,6 +42,8 @@ astGuards
astGuardsCompare
| 7 | 0 < x+0 when ... > ... is true |
| 7 | 0 >= x+0 when ... > ... is false |
| 7 | ... > ... != 0 when ... > ... is true |
| 7 | ... > ... == 0 when ... > ... is false |
| 7 | x < 0+1 when ... > ... is false |
| 7 | x >= 0+1 when ... > ... is true |
| 17 | 0 < x+1 when ... < ... is false |
@@ -50,6 +52,12 @@ astGuardsCompare
| 17 | 1 < y+0 when ... && ... is true |
| 17 | 1 < y+0 when ... > ... is true |
| 17 | 1 >= y+0 when ... > ... is false |
| 17 | ... < ... != 0 when ... && ... is true |
| 17 | ... < ... != 0 when ... < ... is true |
| 17 | ... < ... == 0 when ... < ... is false |
| 17 | ... > ... != 0 when ... && ... is true |
| 17 | ... > ... != 0 when ... > ... is true |
| 17 | ... > ... == 0 when ... > ... is false |
| 17 | x < 0+0 when ... && ... is true |
| 17 | x < 0+0 when ... < ... is true |
| 17 | x >= 0+0 when ... < ... is false |
@@ -60,30 +68,42 @@ astGuardsCompare
| 18 | call to get == 0 when call to get is false |
| 26 | 0 < x+0 when ... > ... is true |
| 26 | 0 >= x+0 when ... > ... is false |
| 26 | ... > ... != 0 when ... > ... is true |
| 26 | ... > ... == 0 when ... > ... is false |
| 26 | x < 0+1 when ... > ... is false |
| 26 | x >= 0+1 when ... > ... is true |
| 31 | - ... != x+0 when ... == ... is false |
| 31 | - ... == x+0 when ... == ... is true |
| 31 | ... == ... != 0 when ... == ... is true |
| 31 | ... == ... == 0 when ... == ... is false |
| 31 | x != -1 when ... == ... is false |
| 31 | x != - ...+0 when ... == ... is false |
| 31 | x == -1 when ... == ... is true |
| 31 | x == - ...+0 when ... == ... is true |
| 34 | 10 < j+1 when ... < ... is false |
| 34 | 10 >= j+1 when ... < ... is true |
| 34 | ... < ... != 0 when ... < ... is true |
| 34 | ... < ... == 0 when ... < ... is false |
| 34 | j < 10+0 when ... < ... is true |
| 34 | j >= 10+0 when ... < ... is false |
| 42 | 10 < j+1 when ... < ... is false |
| 42 | 10 >= j+1 when ... < ... is true |
| 42 | ... < ... != 0 when ... < ... is true |
| 42 | ... < ... == 0 when ... < ... is false |
| 42 | call to getABool != 0 when call to getABool is true |
| 42 | call to getABool == 0 when call to getABool is false |
| 42 | j < 10+0 when ... < ... is true |
| 42 | j >= 10+0 when ... < ... is false |
| 44 | 0 < z+0 when ... > ... is true |
| 44 | 0 >= z+0 when ... > ... is false |
| 44 | ... > ... != 0 when ... > ... is true |
| 44 | ... > ... == 0 when ... > ... is false |
| 44 | z < 0+1 when ... > ... is false |
| 44 | z >= 0+1 when ... > ... is true |
| 45 | 0 < y+0 when ... > ... is true |
| 45 | 0 >= y+0 when ... > ... is false |
| 45 | ... > ... != 0 when ... > ... is true |
| 45 | ... > ... == 0 when ... > ... is false |
| 45 | y < 0+1 when ... > ... is false |
| 45 | y >= 0+1 when ... > ... is true |
| 58 | 0 != x+0 when ... == ... is false |
@@ -92,6 +112,12 @@ astGuardsCompare
| 58 | 0 < y+1 when ... \|\| ... is false |
| 58 | 0 == x+0 when ... == ... is true |
| 58 | 0 >= y+1 when ... < ... is true |
| 58 | ... < ... != 0 when ... < ... is true |
| 58 | ... < ... == 0 when ... < ... is false |
| 58 | ... < ... == 0 when ... \|\| ... is false |
| 58 | ... == ... != 0 when ... == ... is true |
| 58 | ... == ... == 0 when ... == ... is false |
| 58 | ... == ... == 0 when ... \|\| ... is false |
| 58 | x != 0 when ... == ... is false |
| 58 | x != 0 when ... \|\| ... is false |
| 58 | x != 0+0 when ... == ... is false |
@@ -103,6 +129,8 @@ astGuardsCompare
| 58 | y >= 0+0 when ... \|\| ... is false |
| 75 | 0 != x+0 when ... == ... is false |
| 75 | 0 == x+0 when ... == ... is true |
| 75 | ... == ... != 0 when ... == ... is true |
| 75 | ... == ... == 0 when ... == ... is false |
| 75 | x != 0 when ... == ... is false |
| 75 | x != 0+0 when ... == ... is false |
| 75 | x == 0 when ... == ... is true |
@@ -113,6 +141,12 @@ astGuardsCompare
| 85 | 0 == x+0 when ... && ... is true |
| 85 | 0 == x+0 when ... == ... is true |
| 85 | 0 == y+0 when ... != ... is false |
| 85 | ... != ... != 0 when ... != ... is true |
| 85 | ... != ... != 0 when ... && ... is true |
| 85 | ... != ... == 0 when ... != ... is false |
| 85 | ... == ... != 0 when ... && ... is true |
| 85 | ... == ... != 0 when ... == ... is true |
| 85 | ... == ... == 0 when ... == ... is false |
| 85 | x != 0 when ... == ... is false |
| 85 | x != 0+0 when ... == ... is false |
| 85 | x == 0 when ... && ... is true |
@@ -127,12 +161,16 @@ astGuardsCompare
| 85 | y == 0+0 when ... != ... is false |
| 94 | 0 != x+0 when ... != ... is true |
| 94 | 0 == x+0 when ... != ... is false |
| 94 | ... != ... != 0 when ... != ... is true |
| 94 | ... != ... == 0 when ... != ... is false |
| 94 | x != 0 when ... != ... is true |
| 94 | x != 0+0 when ... != ... is true |
| 94 | x == 0 when ... != ... is false |
| 94 | x == 0+0 when ... != ... is false |
| 102 | 10 < j+1 when ... < ... is false |
| 102 | 10 >= j+1 when ... < ... is true |
| 102 | ... < ... != 0 when ... < ... is true |
| 102 | ... < ... == 0 when ... < ... is false |
| 102 | j < 10+0 when ... < ... is true |
| 102 | j >= 10+0 when ... < ... is false |
| 109 | 0 != x+0 when ... == ... is false |
@@ -141,6 +179,12 @@ astGuardsCompare
| 109 | 0 < y+1 when ... \|\| ... is false |
| 109 | 0 == x+0 when ... == ... is true |
| 109 | 0 >= y+1 when ... < ... is true |
| 109 | ... < ... != 0 when ... < ... is true |
| 109 | ... < ... == 0 when ... < ... is false |
| 109 | ... < ... == 0 when ... \|\| ... is false |
| 109 | ... == ... != 0 when ... == ... is true |
| 109 | ... == ... == 0 when ... == ... is false |
| 109 | ... == ... == 0 when ... \|\| ... is false |
| 109 | x != 0 when ... == ... is false |
| 109 | x != 0 when ... \|\| ... is false |
| 109 | x != 0+0 when ... == ... is false |
@@ -173,6 +217,8 @@ astGuardsCompare
| 152 | y == 0 when y is false |
| 156 | ... + ... != x+0 when ... == ... is false |
| 156 | ... + ... == x+0 when ... == ... is true |
| 156 | ... == ... != 0 when ... == ... is true |
| 156 | ... == ... == 0 when ... == ... is false |
| 156 | x != ... + ...+0 when ... == ... is false |
| 156 | x != y+42 when ... == ... is false |
| 156 | x == ... + ...+0 when ... == ... is true |
@@ -181,6 +227,8 @@ astGuardsCompare
| 156 | y == x+-42 when ... == ... is true |
| 159 | ... - ... != x+0 when ... == ... is false |
| 159 | ... - ... == x+0 when ... == ... is true |
| 159 | ... == ... != 0 when ... == ... is true |
| 159 | ... == ... == 0 when ... == ... is false |
| 159 | x != ... - ...+0 when ... == ... is false |
| 159 | x != y+-42 when ... == ... is false |
| 159 | x == ... - ...+0 when ... == ... is true |
@@ -189,6 +237,8 @@ astGuardsCompare
| 159 | y == x+42 when ... == ... is true |
| 162 | ... + ... < x+1 when ... < ... is false |
| 162 | ... + ... >= x+1 when ... < ... is true |
| 162 | ... < ... != 0 when ... < ... is true |
| 162 | ... < ... == 0 when ... < ... is false |
| 162 | x < ... + ...+0 when ... < ... is true |
| 162 | x < y+42 when ... < ... is true |
| 162 | x >= ... + ...+0 when ... < ... is false |
@@ -197,6 +247,8 @@ astGuardsCompare
| 162 | y >= x+-41 when ... < ... is true |
| 165 | ... - ... < x+1 when ... < ... is false |
| 165 | ... - ... >= x+1 when ... < ... is true |
| 165 | ... < ... != 0 when ... < ... is true |
| 165 | ... < ... == 0 when ... < ... is false |
| 165 | x < ... - ...+0 when ... < ... is true |
| 165 | x < y+-42 when ... < ... is true |
| 165 | x >= ... - ...+0 when ... < ... is false |
@@ -205,6 +257,8 @@ astGuardsCompare
| 165 | y >= x+43 when ... < ... is true |
| 175 | 0 != call to foo+0 when ... == ... is false |
| 175 | 0 == call to foo+0 when ... == ... is true |
| 175 | ... == ... != 0 when ... == ... is true |
| 175 | ... == ... == 0 when ... == ... is false |
| 175 | call to foo != 0 when ... == ... is false |
| 175 | call to foo != 0+0 when ... == ... is false |
| 175 | call to foo == 0 when ... == ... is true |
@@ -414,10 +468,20 @@ astGuardsEnsure
| test.c:75:9:75:14 | ... == ... | test.c:75:9:75:9 | x | == | test.c:75:14:75:14 | 0 | 0 | 75 | 77 |
| test.c:75:9:75:14 | ... == ... | test.c:75:14:75:14 | 0 | != | test.c:75:9:75:9 | x | 0 | 78 | 79 |
| test.c:75:9:75:14 | ... == ... | test.c:75:14:75:14 | 0 | == | test.c:75:9:75:9 | x | 0 | 75 | 77 |
| test.c:75:9:75:14 | ... == ... | test.c:85:8:85:8 | x | != | test.c:85:13:85:13 | 0 | 0 | 78 | 79 |
| test.c:75:9:75:14 | ... == ... | test.c:85:8:85:8 | x | == | test.c:85:13:85:13 | 0 | 0 | 75 | 77 |
| test.c:75:9:75:14 | ... == ... | test.c:85:13:85:13 | 0 | != | test.c:85:8:85:8 | x | 0 | 78 | 79 |
| test.c:75:9:75:14 | ... == ... | test.c:85:13:85:13 | 0 | == | test.c:85:8:85:8 | x | 0 | 75 | 77 |
| test.c:85:8:85:13 | ... == ... | test.c:75:9:75:9 | x | == | test.c:75:14:75:14 | 0 | 0 | 85 | 85 |
| test.c:85:8:85:13 | ... == ... | test.c:75:9:75:9 | x | == | test.c:75:14:75:14 | 0 | 0 | 86 | 86 |
| test.c:85:8:85:13 | ... == ... | test.c:75:14:75:14 | 0 | == | test.c:75:9:75:9 | x | 0 | 85 | 85 |
| test.c:85:8:85:13 | ... == ... | test.c:75:14:75:14 | 0 | == | test.c:75:9:75:9 | x | 0 | 86 | 86 |
| test.c:85:8:85:13 | ... == ... | test.c:85:8:85:8 | x | == | test.c:85:13:85:13 | 0 | 0 | 85 | 85 |
| test.c:85:8:85:13 | ... == ... | test.c:85:8:85:8 | x | == | test.c:85:13:85:13 | 0 | 0 | 86 | 86 |
| test.c:85:8:85:13 | ... == ... | test.c:85:13:85:13 | 0 | == | test.c:85:8:85:8 | x | 0 | 85 | 85 |
| test.c:85:8:85:13 | ... == ... | test.c:85:13:85:13 | 0 | == | test.c:85:8:85:8 | x | 0 | 86 | 86 |
| test.c:85:8:85:23 | ... && ... | test.c:75:9:75:9 | x | == | test.c:75:14:75:14 | 0 | 0 | 86 | 86 |
| test.c:85:8:85:23 | ... && ... | test.c:75:14:75:14 | 0 | == | test.c:75:9:75:9 | x | 0 | 86 | 86 |
| test.c:85:8:85:23 | ... && ... | test.c:85:8:85:8 | x | == | test.c:85:13:85:13 | 0 | 0 | 86 | 86 |
| test.c:85:8:85:23 | ... && ... | test.c:85:13:85:13 | 0 | == | test.c:85:8:85:8 | x | 0 | 86 | 86 |
| test.c:85:8:85:23 | ... && ... | test.c:85:18:85:18 | y | != | test.c:85:23:85:23 | 0 | 0 | 86 | 86 |
@@ -491,16 +555,81 @@ astGuardsEnsure
| test.cpp:31:7:31:13 | ... == ... | test.cpp:31:12:31:13 | - ... | == | test.cpp:31:7:31:7 | x | 0 | 30 | 30 |
| test.cpp:31:7:31:13 | ... == ... | test.cpp:31:12:31:13 | - ... | == | test.cpp:31:7:31:7 | x | 0 | 31 | 32 |
astGuardsEnsure_const
| test.c:7:9:7:13 | ... > ... | test.c:7:9:7:13 | ... > ... | != | 0 | 7 | 9 |
| test.c:7:9:7:13 | ... > ... | test.c:7:9:7:13 | ... > ... | == | 0 | 10 | 11 |
| test.c:17:8:17:12 | ... < ... | test.c:17:8:17:12 | ... < ... | != | 0 | 17 | 17 |
| test.c:17:8:17:12 | ... < ... | test.c:17:8:17:12 | ... < ... | != | 0 | 18 | 18 |
| test.c:17:8:17:21 | ... && ... | test.c:17:8:17:12 | ... < ... | != | 0 | 18 | 18 |
| test.c:17:8:17:21 | ... && ... | test.c:17:17:17:21 | ... > ... | != | 0 | 18 | 18 |
| test.c:17:17:17:21 | ... > ... | test.c:17:17:17:21 | ... > ... | != | 0 | 18 | 18 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:15 | ... > ... | != | 0 | 26 | 28 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:15 | ... > ... | == | 0 | 2 | 2 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:15 | ... > ... | == | 0 | 31 | 34 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:15 | ... > ... | == | 0 | 34 | 34 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:15 | ... > ... | == | 0 | 39 | 42 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:15 | ... > ... | == | 0 | 42 | 42 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:15 | ... > ... | == | 0 | 42 | 44 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:15 | ... > ... | == | 0 | 45 | 45 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:15 | ... > ... | == | 0 | 45 | 47 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:15 | ... > ... | == | 0 | 51 | 53 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:15 | ... > ... | == | 0 | 56 | 58 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:15 | ... > ... | == | 0 | 58 | 58 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:15 | ... > ... | == | 0 | 58 | 66 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:15 | ... > ... | == | 0 | 62 | 62 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:21 | ... < ... | != | 0 | 34 | 34 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:21 | ... < ... | == | 0 | 2 | 2 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:21 | ... < ... | == | 0 | 39 | 42 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:21 | ... < ... | == | 0 | 42 | 42 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:21 | ... < ... | == | 0 | 42 | 44 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:21 | ... < ... | == | 0 | 45 | 45 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:21 | ... < ... | == | 0 | 45 | 47 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:21 | ... < ... | == | 0 | 51 | 53 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:21 | ... < ... | == | 0 | 56 | 58 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:21 | ... < ... | == | 0 | 58 | 58 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:21 | ... < ... | == | 0 | 58 | 66 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:21 | ... < ... | == | 0 | 62 | 62 |
| test.c:42:16:42:21 | ... < ... | test.c:42:16:42:21 | ... < ... | != | 0 | 42 | 42 |
| test.c:42:16:42:21 | ... < ... | test.c:42:16:42:21 | ... < ... | != | 0 | 42 | 44 |
| test.c:42:16:42:21 | ... < ... | test.c:42:16:42:21 | ... < ... | != | 0 | 45 | 45 |
| test.c:42:16:42:21 | ... < ... | test.c:42:16:42:21 | ... < ... | != | 0 | 45 | 47 |
| test.c:42:16:42:21 | ... < ... | test.c:42:16:42:21 | ... < ... | != | 0 | 51 | 53 |
| test.c:44:12:44:16 | ... > ... | test.c:44:12:44:16 | ... > ... | != | 0 | 45 | 45 |
| test.c:44:12:44:16 | ... > ... | test.c:44:12:44:16 | ... > ... | != | 0 | 45 | 47 |
| test.c:44:12:44:16 | ... > ... | test.c:44:12:44:16 | ... > ... | == | 0 | 42 | 42 |
| test.c:44:12:44:16 | ... > ... | test.c:44:12:44:16 | ... > ... | == | 0 | 51 | 53 |
| test.c:45:16:45:20 | ... > ... | test.c:45:16:45:20 | ... > ... | != | 0 | 45 | 47 |
| test.c:58:9:58:14 | ... == ... | test.c:58:9:58:9 | x | != | 0 | 58 | 58 |
| test.c:58:9:58:14 | ... == ... | test.c:58:9:58:9 | x | != | 0 | 62 | 62 |
| test.c:58:9:58:14 | ... == ... | test.c:58:9:58:14 | ... == ... | == | 0 | 58 | 58 |
| test.c:58:9:58:14 | ... == ... | test.c:58:9:58:14 | ... == ... | == | 0 | 62 | 62 |
| test.c:58:9:58:23 | ... \|\| ... | test.c:58:9:58:9 | x | != | 0 | 62 | 62 |
| test.c:58:9:58:23 | ... \|\| ... | test.c:58:9:58:14 | ... == ... | == | 0 | 62 | 62 |
| test.c:58:9:58:23 | ... \|\| ... | test.c:58:19:58:23 | ... < ... | == | 0 | 62 | 62 |
| test.c:58:19:58:23 | ... < ... | test.c:58:19:58:23 | ... < ... | == | 0 | 62 | 62 |
| test.c:75:9:75:14 | ... == ... | test.c:75:9:75:9 | x | != | 0 | 78 | 79 |
| test.c:75:9:75:14 | ... == ... | test.c:75:9:75:9 | x | == | 0 | 75 | 77 |
| test.c:75:9:75:14 | ... == ... | test.c:75:9:75:14 | ... == ... | != | 0 | 75 | 77 |
| test.c:75:9:75:14 | ... == ... | test.c:75:9:75:14 | ... == ... | == | 0 | 78 | 79 |
| test.c:75:9:75:14 | ... == ... | test.c:85:8:85:8 | x | != | 0 | 78 | 79 |
| test.c:75:9:75:14 | ... == ... | test.c:85:8:85:8 | x | == | 0 | 75 | 77 |
| test.c:75:9:75:14 | ... == ... | test.c:85:8:85:13 | ... == ... | != | 0 | 75 | 77 |
| test.c:75:9:75:14 | ... == ... | test.c:85:8:85:13 | ... == ... | == | 0 | 78 | 79 |
| test.c:85:8:85:13 | ... == ... | test.c:75:9:75:9 | x | == | 0 | 85 | 85 |
| test.c:85:8:85:13 | ... == ... | test.c:75:9:75:9 | x | == | 0 | 86 | 86 |
| test.c:85:8:85:13 | ... == ... | test.c:75:9:75:14 | ... == ... | != | 0 | 85 | 85 |
| test.c:85:8:85:13 | ... == ... | test.c:75:9:75:14 | ... == ... | != | 0 | 86 | 86 |
| test.c:85:8:85:13 | ... == ... | test.c:85:8:85:8 | x | == | 0 | 85 | 85 |
| test.c:85:8:85:13 | ... == ... | test.c:85:8:85:8 | x | == | 0 | 86 | 86 |
| test.c:85:8:85:13 | ... == ... | test.c:85:8:85:13 | ... == ... | != | 0 | 85 | 85 |
| test.c:85:8:85:13 | ... == ... | test.c:85:8:85:13 | ... == ... | != | 0 | 86 | 86 |
| test.c:85:8:85:23 | ... && ... | test.c:75:9:75:9 | x | == | 0 | 86 | 86 |
| test.c:85:8:85:23 | ... && ... | test.c:75:9:75:14 | ... == ... | != | 0 | 86 | 86 |
| test.c:85:8:85:23 | ... && ... | test.c:85:8:85:8 | x | == | 0 | 86 | 86 |
| test.c:85:8:85:23 | ... && ... | test.c:85:8:85:13 | ... == ... | != | 0 | 86 | 86 |
| test.c:85:8:85:23 | ... && ... | test.c:85:18:85:18 | y | != | 0 | 86 | 86 |
| test.c:85:8:85:23 | ... && ... | test.c:85:18:85:23 | ... != ... | != | 0 | 86 | 86 |
| test.c:85:18:85:23 | ... != ... | test.c:85:18:85:18 | y | != | 0 | 86 | 86 |
| test.c:85:18:85:23 | ... != ... | test.c:85:18:85:23 | ... != ... | != | 0 | 86 | 86 |
| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:11 | x | != | 0 | 94 | 96 |
| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:11 | x | == | 0 | 70 | 70 |
| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:11 | x | == | 0 | 99 | 102 |
@@ -509,16 +638,41 @@ astGuardsEnsure_const
| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:11 | x | == | 0 | 109 | 109 |
| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:11 | x | == | 0 | 109 | 117 |
| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:11 | x | == | 0 | 113 | 113 |
| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:16 | ... != ... | != | 0 | 94 | 96 |
| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:16 | ... != ... | == | 0 | 70 | 70 |
| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:16 | ... != ... | == | 0 | 99 | 102 |
| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:16 | ... != ... | == | 0 | 102 | 102 |
| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:16 | ... != ... | == | 0 | 107 | 109 |
| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:16 | ... != ... | == | 0 | 109 | 109 |
| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:16 | ... != ... | == | 0 | 109 | 117 |
| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:16 | ... != ... | == | 0 | 113 | 113 |
| test.c:102:16:102:21 | ... < ... | test.c:102:16:102:21 | ... < ... | != | 0 | 102 | 102 |
| test.c:102:16:102:21 | ... < ... | test.c:102:16:102:21 | ... < ... | == | 0 | 70 | 70 |
| test.c:102:16:102:21 | ... < ... | test.c:102:16:102:21 | ... < ... | == | 0 | 107 | 109 |
| test.c:102:16:102:21 | ... < ... | test.c:102:16:102:21 | ... < ... | == | 0 | 109 | 109 |
| test.c:102:16:102:21 | ... < ... | test.c:102:16:102:21 | ... < ... | == | 0 | 109 | 117 |
| test.c:102:16:102:21 | ... < ... | test.c:102:16:102:21 | ... < ... | == | 0 | 113 | 113 |
| test.c:109:9:109:14 | ... == ... | test.c:109:9:109:9 | x | != | 0 | 109 | 109 |
| test.c:109:9:109:14 | ... == ... | test.c:109:9:109:9 | x | != | 0 | 113 | 113 |
| test.c:109:9:109:14 | ... == ... | test.c:109:9:109:14 | ... == ... | == | 0 | 109 | 109 |
| test.c:109:9:109:14 | ... == ... | test.c:109:9:109:14 | ... == ... | == | 0 | 113 | 113 |
| test.c:109:9:109:23 | ... \|\| ... | test.c:109:9:109:9 | x | != | 0 | 113 | 113 |
| test.c:109:9:109:23 | ... \|\| ... | test.c:109:9:109:14 | ... == ... | == | 0 | 113 | 113 |
| test.c:109:9:109:23 | ... \|\| ... | test.c:109:19:109:23 | ... < ... | == | 0 | 113 | 113 |
| test.c:109:19:109:23 | ... < ... | test.c:109:19:109:23 | ... < ... | == | 0 | 113 | 113 |
| test.c:126:7:126:7 | 1 | test.c:126:7:126:7 | 1 | != | 0 | 126 | 126 |
| test.c:126:7:126:7 | 1 | test.c:126:7:126:7 | 1 | != | 0 | 126 | 128 |
| test.c:126:7:126:7 | 1 | test.c:126:7:126:7 | 1 | != | 0 | 131 | 131 |
| test.c:126:7:126:7 | 1 | test.c:126:7:126:7 | 1 | != | 0 | 131 | 132 |
| test.c:126:7:126:7 | 1 | test.c:126:7:126:7 | 1 | != | 0 | 134 | 123 |
| test.c:126:7:126:7 | 1 | test.c:127:9:127:9 | 1 | != | 0 | 126 | 126 |
| test.c:126:7:126:7 | 1 | test.c:127:9:127:9 | 1 | != | 0 | 126 | 128 |
| test.c:126:7:126:7 | 1 | test.c:127:9:127:9 | 1 | != | 0 | 131 | 131 |
| test.c:126:7:126:7 | 1 | test.c:127:9:127:9 | 1 | != | 0 | 131 | 132 |
| test.c:126:7:126:7 | 1 | test.c:127:9:127:9 | 1 | != | 0 | 134 | 123 |
| test.c:126:7:126:28 | ... && ... | test.c:126:7:126:7 | 1 | != | 0 | 126 | 128 |
| test.c:126:7:126:28 | ... && ... | test.c:126:12:126:26 | call to test3_condition | != | 0 | 126 | 128 |
| test.c:126:7:126:28 | ... && ... | test.c:127:9:127:9 | 1 | != | 0 | 126 | 128 |
| test.c:126:12:126:26 | call to test3_condition | test.c:126:12:126:26 | call to test3_condition | != | 0 | 126 | 128 |
| test.c:131:7:131:7 | b | test.c:131:7:131:7 | b | != | 0 | 131 | 132 |
| test.c:137:7:137:7 | 0 | test.c:137:7:137:7 | 0 | == | 0 | 142 | 136 |
@@ -529,8 +683,14 @@ astGuardsEnsure_const
| test.c:152:10:152:15 | ... && ... | test.c:152:10:152:10 | x | != | 0 | 151 | 152 |
| test.c:152:10:152:15 | ... && ... | test.c:152:15:152:15 | y | != | 0 | 151 | 152 |
| test.c:152:15:152:15 | y | test.c:152:15:152:15 | y | != | 0 | 151 | 152 |
| test.c:156:9:156:19 | ... == ... | test.c:156:9:156:19 | ... == ... | != | 0 | 156 | 157 |
| test.c:159:9:159:19 | ... == ... | test.c:159:9:159:19 | ... == ... | != | 0 | 159 | 160 |
| test.c:162:9:162:18 | ... < ... | test.c:162:9:162:18 | ... < ... | != | 0 | 162 | 163 |
| test.c:165:9:165:18 | ... < ... | test.c:165:9:165:18 | ... < ... | != | 0 | 165 | 166 |
| test.c:175:13:175:32 | ... == ... | test.c:175:13:175:15 | call to foo | != | 0 | 175 | 175 |
| test.c:175:13:175:32 | ... == ... | test.c:175:13:175:15 | call to foo | == | 0 | 175 | 175 |
| test.c:175:13:175:32 | ... == ... | test.c:175:13:175:32 | ... == ... | != | 0 | 175 | 175 |
| test.c:175:13:175:32 | ... == ... | test.c:175:13:175:32 | ... == ... | == | 0 | 175 | 175 |
| test.c:181:9:181:9 | x | test.c:181:9:181:9 | x | != | 0 | 181 | 182 |
| test.c:181:9:181:9 | x | test.c:181:9:181:9 | x | != | 0 | 186 | 180 |
| test.c:181:9:181:9 | x | test.c:181:9:181:9 | x | == | 0 | 183 | 184 |
@@ -539,6 +699,10 @@ astGuardsEnsure_const
| test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:7 | x | != | -1 | 34 | 34 |
| test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:7 | x | == | -1 | 30 | 30 |
| test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:7 | x | == | -1 | 31 | 32 |
| test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:13 | ... == ... | != | 0 | 30 | 30 |
| test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:13 | ... == ... | != | 0 | 31 | 32 |
| test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:13 | ... == ... | == | 0 | 30 | 30 |
| test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:13 | ... == ... | == | 0 | 34 | 34 |
| test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | != | 0 | 43 | 45 |
| test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | == | 0 | 53 | 53 |
irGuards
@@ -579,6 +743,8 @@ irGuards
irGuardsCompare
| 7 | 0 < x+0 when CompareGT: ... > ... is true |
| 7 | 0 >= x+0 when CompareGT: ... > ... is false |
| 7 | ... > ... != 0 when CompareGT: ... > ... is true |
| 7 | ... > ... == 0 when CompareGT: ... > ... is false |
| 7 | x < 0+1 when CompareGT: ... > ... is false |
| 7 | x < 1 when CompareGT: ... > ... is false |
| 7 | x >= 0+1 when CompareGT: ... > ... is true |
@@ -587,6 +753,10 @@ irGuardsCompare
| 17 | 0 >= x+1 when CompareLT: ... < ... is true |
| 17 | 1 < y+0 when CompareGT: ... > ... is true |
| 17 | 1 >= y+0 when CompareGT: ... > ... is false |
| 17 | ... < ... != 0 when CompareLT: ... < ... is true |
| 17 | ... < ... == 0 when CompareLT: ... < ... is false |
| 17 | ... > ... != 0 when CompareGT: ... > ... is true |
| 17 | ... > ... == 0 when CompareGT: ... > ... is false |
| 17 | x < 0 when CompareLT: ... < ... is true |
| 17 | x < 0+0 when CompareLT: ... < ... is true |
| 17 | x >= 0 when CompareLT: ... < ... is false |
@@ -599,24 +769,32 @@ irGuardsCompare
| 18 | call to get == 0 when CompareNE: (bool)... is false |
| 26 | 0 < x+0 when CompareGT: ... > ... is true |
| 26 | 0 >= x+0 when CompareGT: ... > ... is false |
| 26 | ... > ... != 0 when CompareGT: ... > ... is true |
| 26 | ... > ... == 0 when CompareGT: ... > ... is false |
| 26 | x < 0+1 when CompareGT: ... > ... is false |
| 26 | x < 1 when CompareGT: ... > ... is false |
| 26 | x >= 0+1 when CompareGT: ... > ... is true |
| 26 | x >= 1 when CompareGT: ... > ... is true |
| 31 | - ... != x+0 when CompareEQ: ... == ... is false |
| 31 | - ... == x+0 when CompareEQ: ... == ... is true |
| 31 | ... == ... != 0 when CompareEQ: ... == ... is true |
| 31 | ... == ... == 0 when CompareEQ: ... == ... is false |
| 31 | x != -1 when CompareEQ: ... == ... is false |
| 31 | x != - ...+0 when CompareEQ: ... == ... is false |
| 31 | x == -1 when CompareEQ: ... == ... is true |
| 31 | x == - ...+0 when CompareEQ: ... == ... is true |
| 34 | 10 < j+1 when CompareLT: ... < ... is false |
| 34 | 10 >= j+1 when CompareLT: ... < ... is true |
| 34 | ... < ... != 0 when CompareLT: ... < ... is true |
| 34 | ... < ... == 0 when CompareLT: ... < ... is false |
| 34 | j < 10 when CompareLT: ... < ... is true |
| 34 | j < 10+0 when CompareLT: ... < ... is true |
| 34 | j >= 10 when CompareLT: ... < ... is false |
| 34 | j >= 10+0 when CompareLT: ... < ... is false |
| 42 | 10 < j+1 when CompareLT: ... < ... is false |
| 42 | 10 >= j+1 when CompareLT: ... < ... is true |
| 42 | ... < ... != 0 when CompareLT: ... < ... is true |
| 42 | ... < ... == 0 when CompareLT: ... < ... is false |
| 42 | call to getABool != 0 when Call: call to getABool is true |
| 42 | call to getABool == 0 when Call: call to getABool is false |
| 42 | j < 10 when CompareLT: ... < ... is true |
@@ -625,12 +803,16 @@ irGuardsCompare
| 42 | j >= 10+0 when CompareLT: ... < ... is false |
| 44 | 0 < z+0 when CompareGT: ... > ... is true |
| 44 | 0 >= z+0 when CompareGT: ... > ... is false |
| 44 | ... > ... != 0 when CompareGT: ... > ... is true |
| 44 | ... > ... == 0 when CompareGT: ... > ... is false |
| 44 | z < 0+1 when CompareGT: ... > ... is false |
| 44 | z < 1 when CompareGT: ... > ... is false |
| 44 | z >= 0+1 when CompareGT: ... > ... is true |
| 44 | z >= 1 when CompareGT: ... > ... is true |
| 45 | 0 < y+0 when CompareGT: ... > ... is true |
| 45 | 0 >= y+0 when CompareGT: ... > ... is false |
| 45 | ... > ... != 0 when CompareGT: ... > ... is true |
| 45 | ... > ... == 0 when CompareGT: ... > ... is false |
| 45 | y < 0+1 when CompareGT: ... > ... is false |
| 45 | y < 1 when CompareGT: ... > ... is false |
| 45 | y >= 0+1 when CompareGT: ... > ... is true |
@@ -639,6 +821,10 @@ irGuardsCompare
| 58 | 0 < y+1 when CompareLT: ... < ... is false |
| 58 | 0 == x+0 when CompareEQ: ... == ... is true |
| 58 | 0 >= y+1 when CompareLT: ... < ... is true |
| 58 | ... < ... != 0 when CompareLT: ... < ... is true |
| 58 | ... < ... == 0 when CompareLT: ... < ... is false |
| 58 | ... == ... != 0 when CompareEQ: ... == ... is true |
| 58 | ... == ... == 0 when CompareEQ: ... == ... is false |
| 58 | x != 0 when CompareEQ: ... == ... is false |
| 58 | x != 0+0 when CompareEQ: ... == ... is false |
| 58 | x == 0 when CompareEQ: ... == ... is true |
@@ -649,6 +835,8 @@ irGuardsCompare
| 58 | y >= 0+0 when CompareLT: ... < ... is false |
| 75 | 0 != x+0 when CompareEQ: ... == ... is false |
| 75 | 0 == x+0 when CompareEQ: ... == ... is true |
| 75 | ... == ... != 0 when CompareEQ: ... == ... is true |
| 75 | ... == ... == 0 when CompareEQ: ... == ... is false |
| 75 | x != 0 when CompareEQ: ... == ... is false |
| 75 | x != 0+0 when CompareEQ: ... == ... is false |
| 75 | x == 0 when CompareEQ: ... == ... is true |
@@ -657,6 +845,10 @@ irGuardsCompare
| 85 | 0 != y+0 when CompareNE: ... != ... is true |
| 85 | 0 == x+0 when CompareEQ: ... == ... is true |
| 85 | 0 == y+0 when CompareNE: ... != ... is false |
| 85 | ... != ... != 0 when CompareNE: ... != ... is true |
| 85 | ... != ... == 0 when CompareNE: ... != ... is false |
| 85 | ... == ... != 0 when CompareEQ: ... == ... is true |
| 85 | ... == ... == 0 when CompareEQ: ... == ... is false |
| 85 | x != 0 when CompareEQ: ... == ... is false |
| 85 | x != 0+0 when CompareEQ: ... == ... is false |
| 85 | x == 0 when CompareEQ: ... == ... is true |
@@ -667,12 +859,16 @@ irGuardsCompare
| 85 | y == 0+0 when CompareNE: ... != ... is false |
| 94 | 0 != x+0 when CompareNE: ... != ... is true |
| 94 | 0 == x+0 when CompareNE: ... != ... is false |
| 94 | ... != ... != 0 when CompareNE: ... != ... is true |
| 94 | ... != ... == 0 when CompareNE: ... != ... is false |
| 94 | x != 0 when CompareNE: ... != ... is true |
| 94 | x != 0+0 when CompareNE: ... != ... is true |
| 94 | x == 0 when CompareNE: ... != ... is false |
| 94 | x == 0+0 when CompareNE: ... != ... is false |
| 102 | 10 < j+1 when CompareLT: ... < ... is false |
| 102 | 10 >= j+1 when CompareLT: ... < ... is true |
| 102 | ... < ... != 0 when CompareLT: ... < ... is true |
| 102 | ... < ... == 0 when CompareLT: ... < ... is false |
| 102 | j < 10 when CompareLT: ... < ... is true |
| 102 | j < 10+0 when CompareLT: ... < ... is true |
| 102 | j >= 10 when CompareLT: ... < ... is false |
@@ -681,6 +877,10 @@ irGuardsCompare
| 109 | 0 < y+1 when CompareLT: ... < ... is false |
| 109 | 0 == x+0 when CompareEQ: ... == ... is true |
| 109 | 0 >= y+1 when CompareLT: ... < ... is true |
| 109 | ... < ... != 0 when CompareLT: ... < ... is true |
| 109 | ... < ... == 0 when CompareLT: ... < ... is false |
| 109 | ... == ... != 0 when CompareEQ: ... == ... is true |
| 109 | ... == ... == 0 when CompareEQ: ... == ... is false |
| 109 | x != 0 when CompareEQ: ... == ... is false |
| 109 | x != 0+0 when CompareEQ: ... == ... is false |
| 109 | x == 0 when CompareEQ: ... == ... is true |
@@ -708,6 +908,8 @@ irGuardsCompare
| 152 | y == 0 when Load: y is false |
| 156 | ... + ... != x+0 when CompareEQ: ... == ... is false |
| 156 | ... + ... == x+0 when CompareEQ: ... == ... is true |
| 156 | ... == ... != 0 when CompareEQ: ... == ... is true |
| 156 | ... == ... == 0 when CompareEQ: ... == ... is false |
| 156 | x != ... + ...+0 when CompareEQ: ... == ... is false |
| 156 | x != y+42 when CompareEQ: ... == ... is false |
| 156 | x == ... + ...+0 when CompareEQ: ... == ... is true |
@@ -716,6 +918,8 @@ irGuardsCompare
| 156 | y == x+-42 when CompareEQ: ... == ... is true |
| 159 | ... - ... != x+0 when CompareEQ: ... == ... is false |
| 159 | ... - ... == x+0 when CompareEQ: ... == ... is true |
| 159 | ... == ... != 0 when CompareEQ: ... == ... is true |
| 159 | ... == ... == 0 when CompareEQ: ... == ... is false |
| 159 | x != ... - ...+0 when CompareEQ: ... == ... is false |
| 159 | x != y+-42 when CompareEQ: ... == ... is false |
| 159 | x == ... - ...+0 when CompareEQ: ... == ... is true |
@@ -724,6 +928,8 @@ irGuardsCompare
| 159 | y == x+42 when CompareEQ: ... == ... is true |
| 162 | ... + ... < x+1 when CompareLT: ... < ... is false |
| 162 | ... + ... >= x+1 when CompareLT: ... < ... is true |
| 162 | ... < ... != 0 when CompareLT: ... < ... is true |
| 162 | ... < ... == 0 when CompareLT: ... < ... is false |
| 162 | x < ... + ...+0 when CompareLT: ... < ... is true |
| 162 | x < y+42 when CompareLT: ... < ... is true |
| 162 | x >= ... + ...+0 when CompareLT: ... < ... is false |
@@ -732,6 +938,8 @@ irGuardsCompare
| 162 | y >= x+-41 when CompareLT: ... < ... is true |
| 165 | ... - ... < x+1 when CompareLT: ... < ... is false |
| 165 | ... - ... >= x+1 when CompareLT: ... < ... is true |
| 165 | ... < ... != 0 when CompareLT: ... < ... is true |
| 165 | ... < ... == 0 when CompareLT: ... < ... is false |
| 165 | x < ... - ...+0 when CompareLT: ... < ... is true |
| 165 | x < y+-42 when CompareLT: ... < ... is true |
| 165 | x >= ... - ...+0 when CompareLT: ... < ... is false |
@@ -740,6 +948,8 @@ irGuardsCompare
| 165 | y >= x+43 when CompareLT: ... < ... is true |
| 175 | 0 != call to foo+0 when CompareEQ: ... == ... is false |
| 175 | 0 == call to foo+0 when CompareEQ: ... == ... is true |
| 175 | ... == ... != 0 when CompareEQ: ... == ... is true |
| 175 | ... == ... == 0 when CompareEQ: ... == ... is false |
| 175 | call to foo != 0 when CompareEQ: ... == ... is false |
| 175 | call to foo != 0+0 when CompareEQ: ... == ... is false |
| 175 | call to foo == 0 when CompareEQ: ... == ... is true |
@@ -930,6 +1140,14 @@ irGuardsEnsure
| test.c:75:9:75:14 | CompareEQ: ... == ... | test.c:75:9:75:9 | Load: x | == | test.c:75:14:75:14 | Constant: 0 | 0 | 76 | 76 |
| test.c:75:9:75:14 | CompareEQ: ... == ... | test.c:75:14:75:14 | Constant: 0 | != | test.c:75:9:75:9 | Load: x | 0 | 79 | 79 |
| test.c:75:9:75:14 | CompareEQ: ... == ... | test.c:75:14:75:14 | Constant: 0 | == | test.c:75:9:75:9 | Load: x | 0 | 76 | 76 |
| test.c:75:9:75:14 | CompareEQ: ... == ... | test.c:85:8:85:8 | Load: x | != | test.c:85:13:85:13 | Constant: 0 | 0 | 79 | 79 |
| test.c:75:9:75:14 | CompareEQ: ... == ... | test.c:85:8:85:8 | Load: x | == | test.c:85:13:85:13 | Constant: 0 | 0 | 76 | 76 |
| test.c:75:9:75:14 | CompareEQ: ... == ... | test.c:85:13:85:13 | Constant: 0 | != | test.c:85:8:85:8 | Load: x | 0 | 79 | 79 |
| test.c:75:9:75:14 | CompareEQ: ... == ... | test.c:85:13:85:13 | Constant: 0 | == | test.c:85:8:85:8 | Load: x | 0 | 76 | 76 |
| test.c:85:8:85:13 | CompareEQ: ... == ... | test.c:75:9:75:9 | Load: x | == | test.c:75:14:75:14 | Constant: 0 | 0 | 85 | 85 |
| test.c:85:8:85:13 | CompareEQ: ... == ... | test.c:75:9:75:9 | Load: x | == | test.c:75:14:75:14 | Constant: 0 | 0 | 86 | 86 |
| test.c:85:8:85:13 | CompareEQ: ... == ... | test.c:75:14:75:14 | Constant: 0 | == | test.c:75:9:75:9 | Load: x | 0 | 85 | 85 |
| test.c:85:8:85:13 | CompareEQ: ... == ... | test.c:75:14:75:14 | Constant: 0 | == | test.c:75:9:75:9 | Load: x | 0 | 86 | 86 |
| test.c:85:8:85:13 | CompareEQ: ... == ... | test.c:85:8:85:8 | Load: x | == | test.c:85:13:85:13 | Constant: 0 | 0 | 85 | 85 |
| test.c:85:8:85:13 | CompareEQ: ... == ... | test.c:85:8:85:8 | Load: x | == | test.c:85:13:85:13 | Constant: 0 | 0 | 86 | 86 |
| test.c:85:8:85:13 | CompareEQ: ... == ... | test.c:85:13:85:13 | Constant: 0 | == | test.c:85:8:85:8 | Load: x | 0 | 85 | 85 |
@@ -1003,9 +1221,14 @@ irGuardsEnsure
irGuardsEnsure_const
| test.c:7:9:7:13 | CompareGT: ... > ... | test.c:7:9:7:9 | Load: x | < | 1 | 11 | 11 |
| test.c:7:9:7:13 | CompareGT: ... > ... | test.c:7:9:7:9 | Load: x | >= | 1 | 8 | 8 |
| test.c:7:9:7:13 | CompareGT: ... > ... | test.c:7:9:7:13 | CompareGT: ... > ... | != | 0 | 8 | 8 |
| test.c:7:9:7:13 | CompareGT: ... > ... | test.c:7:9:7:13 | CompareGT: ... > ... | == | 0 | 11 | 11 |
| test.c:17:8:17:12 | CompareLT: ... < ... | test.c:17:8:17:8 | Load: x | < | 0 | 17 | 17 |
| test.c:17:8:17:12 | CompareLT: ... < ... | test.c:17:8:17:8 | Load: x | < | 0 | 18 | 18 |
| test.c:17:8:17:12 | CompareLT: ... < ... | test.c:17:8:17:12 | CompareLT: ... < ... | != | 0 | 17 | 17 |
| test.c:17:8:17:12 | CompareLT: ... < ... | test.c:17:8:17:12 | CompareLT: ... < ... | != | 0 | 18 | 18 |
| test.c:17:17:17:21 | CompareGT: ... > ... | test.c:17:17:17:17 | Load: y | >= | 2 | 18 | 18 |
| test.c:17:17:17:21 | CompareGT: ... > ... | test.c:17:17:17:21 | CompareGT: ... > ... | != | 0 | 18 | 18 |
| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:11 | Load: x | < | 1 | 2 | 2 |
| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:11 | Load: x | < | 1 | 31 | 31 |
| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:11 | Load: x | < | 1 | 34 | 34 |
@@ -1021,6 +1244,21 @@ irGuardsEnsure_const
| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:11 | Load: x | < | 1 | 59 | 59 |
| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:11 | Load: x | < | 1 | 62 | 62 |
| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:11 | Load: x | >= | 1 | 27 | 27 |
| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:15 | CompareGT: ... > ... | != | 0 | 27 | 27 |
| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:15 | CompareGT: ... > ... | == | 0 | 2 | 2 |
| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:15 | CompareGT: ... > ... | == | 0 | 31 | 31 |
| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:15 | CompareGT: ... > ... | == | 0 | 34 | 34 |
| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:15 | CompareGT: ... > ... | == | 0 | 35 | 35 |
| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:15 | CompareGT: ... > ... | == | 0 | 39 | 39 |
| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:15 | CompareGT: ... > ... | == | 0 | 42 | 42 |
| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:15 | CompareGT: ... > ... | == | 0 | 43 | 43 |
| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:15 | CompareGT: ... > ... | == | 0 | 45 | 45 |
| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:15 | CompareGT: ... > ... | == | 0 | 46 | 46 |
| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:15 | CompareGT: ... > ... | == | 0 | 52 | 52 |
| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:15 | CompareGT: ... > ... | == | 0 | 56 | 56 |
| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:15 | CompareGT: ... > ... | == | 0 | 58 | 58 |
| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:15 | CompareGT: ... > ... | == | 0 | 59 | 59 |
| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:15 | CompareGT: ... > ... | == | 0 | 62 | 62 |
| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:16 | Load: j | < | 10 | 35 | 35 |
| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:16 | Load: j | >= | 10 | 2 | 2 |
| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:16 | Load: j | >= | 10 | 39 | 39 |
@@ -1033,22 +1271,58 @@ irGuardsEnsure_const
| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:16 | Load: j | >= | 10 | 58 | 58 |
| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:16 | Load: j | >= | 10 | 59 | 59 |
| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:16 | Load: j | >= | 10 | 62 | 62 |
| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:21 | CompareLT: ... < ... | != | 0 | 35 | 35 |
| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:21 | CompareLT: ... < ... | == | 0 | 2 | 2 |
| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:21 | CompareLT: ... < ... | == | 0 | 39 | 39 |
| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:21 | CompareLT: ... < ... | == | 0 | 42 | 42 |
| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:21 | CompareLT: ... < ... | == | 0 | 43 | 43 |
| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:21 | CompareLT: ... < ... | == | 0 | 45 | 45 |
| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:21 | CompareLT: ... < ... | == | 0 | 46 | 46 |
| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:21 | CompareLT: ... < ... | == | 0 | 52 | 52 |
| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:21 | CompareLT: ... < ... | == | 0 | 56 | 56 |
| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:21 | CompareLT: ... < ... | == | 0 | 58 | 58 |
| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:21 | CompareLT: ... < ... | == | 0 | 59 | 59 |
| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:21 | CompareLT: ... < ... | == | 0 | 62 | 62 |
| test.c:42:16:42:21 | CompareLT: ... < ... | test.c:42:16:42:16 | Load: j | < | 10 | 43 | 43 |
| test.c:42:16:42:21 | CompareLT: ... < ... | test.c:42:16:42:16 | Load: j | < | 10 | 45 | 45 |
| test.c:42:16:42:21 | CompareLT: ... < ... | test.c:42:16:42:16 | Load: j | < | 10 | 46 | 46 |
| test.c:42:16:42:21 | CompareLT: ... < ... | test.c:42:16:42:16 | Load: j | < | 10 | 52 | 52 |
| test.c:42:16:42:21 | CompareLT: ... < ... | test.c:42:16:42:21 | CompareLT: ... < ... | != | 0 | 43 | 43 |
| test.c:42:16:42:21 | CompareLT: ... < ... | test.c:42:16:42:21 | CompareLT: ... < ... | != | 0 | 45 | 45 |
| test.c:42:16:42:21 | CompareLT: ... < ... | test.c:42:16:42:21 | CompareLT: ... < ... | != | 0 | 46 | 46 |
| test.c:42:16:42:21 | CompareLT: ... < ... | test.c:42:16:42:21 | CompareLT: ... < ... | != | 0 | 52 | 52 |
| test.c:44:12:44:16 | CompareGT: ... > ... | test.c:44:12:44:12 | Load: z | < | 1 | 52 | 52 |
| test.c:44:12:44:16 | CompareGT: ... > ... | test.c:44:12:44:12 | Load: z | >= | 1 | 45 | 45 |
| test.c:44:12:44:16 | CompareGT: ... > ... | test.c:44:12:44:12 | Load: z | >= | 1 | 46 | 46 |
| test.c:44:12:44:16 | CompareGT: ... > ... | test.c:44:12:44:16 | CompareGT: ... > ... | != | 0 | 45 | 45 |
| test.c:44:12:44:16 | CompareGT: ... > ... | test.c:44:12:44:16 | CompareGT: ... > ... | != | 0 | 46 | 46 |
| test.c:44:12:44:16 | CompareGT: ... > ... | test.c:44:12:44:16 | CompareGT: ... > ... | == | 0 | 52 | 52 |
| test.c:45:16:45:20 | CompareGT: ... > ... | test.c:45:16:45:16 | Load: y | >= | 1 | 46 | 46 |
| test.c:45:16:45:20 | CompareGT: ... > ... | test.c:45:16:45:20 | CompareGT: ... > ... | != | 0 | 46 | 46 |
| test.c:58:9:58:14 | CompareEQ: ... == ... | test.c:58:9:58:9 | Load: x | != | 0 | 58 | 58 |
| test.c:58:9:58:14 | CompareEQ: ... == ... | test.c:58:9:58:9 | Load: x | != | 0 | 62 | 62 |
| test.c:58:9:58:14 | CompareEQ: ... == ... | test.c:58:9:58:14 | CompareEQ: ... == ... | == | 0 | 58 | 58 |
| test.c:58:9:58:14 | CompareEQ: ... == ... | test.c:58:9:58:14 | CompareEQ: ... == ... | == | 0 | 62 | 62 |
| test.c:58:19:58:23 | CompareLT: ... < ... | test.c:58:19:58:19 | Load: y | >= | 0 | 62 | 62 |
| test.c:58:19:58:23 | CompareLT: ... < ... | test.c:58:19:58:23 | CompareLT: ... < ... | == | 0 | 62 | 62 |
| test.c:75:9:75:14 | CompareEQ: ... == ... | test.c:75:9:75:9 | Load: x | != | 0 | 79 | 79 |
| test.c:75:9:75:14 | CompareEQ: ... == ... | test.c:75:9:75:9 | Load: x | == | 0 | 76 | 76 |
| test.c:75:9:75:14 | CompareEQ: ... == ... | test.c:75:9:75:14 | CompareEQ: ... == ... | != | 0 | 76 | 76 |
| test.c:75:9:75:14 | CompareEQ: ... == ... | test.c:75:9:75:14 | CompareEQ: ... == ... | == | 0 | 79 | 79 |
| test.c:75:9:75:14 | CompareEQ: ... == ... | test.c:85:8:85:8 | Load: x | != | 0 | 79 | 79 |
| test.c:75:9:75:14 | CompareEQ: ... == ... | test.c:85:8:85:8 | Load: x | == | 0 | 76 | 76 |
| test.c:75:9:75:14 | CompareEQ: ... == ... | test.c:85:8:85:13 | CompareEQ: ... == ... | != | 0 | 76 | 76 |
| test.c:75:9:75:14 | CompareEQ: ... == ... | test.c:85:8:85:13 | CompareEQ: ... == ... | == | 0 | 79 | 79 |
| test.c:85:8:85:13 | CompareEQ: ... == ... | test.c:75:9:75:9 | Load: x | == | 0 | 85 | 85 |
| test.c:85:8:85:13 | CompareEQ: ... == ... | test.c:75:9:75:9 | Load: x | == | 0 | 86 | 86 |
| test.c:85:8:85:13 | CompareEQ: ... == ... | test.c:75:9:75:14 | CompareEQ: ... == ... | != | 0 | 85 | 85 |
| test.c:85:8:85:13 | CompareEQ: ... == ... | test.c:75:9:75:14 | CompareEQ: ... == ... | != | 0 | 86 | 86 |
| test.c:85:8:85:13 | CompareEQ: ... == ... | test.c:85:8:85:8 | Load: x | == | 0 | 85 | 85 |
| test.c:85:8:85:13 | CompareEQ: ... == ... | test.c:85:8:85:8 | Load: x | == | 0 | 86 | 86 |
| test.c:85:8:85:13 | CompareEQ: ... == ... | test.c:85:8:85:13 | CompareEQ: ... == ... | != | 0 | 85 | 85 |
| test.c:85:8:85:13 | CompareEQ: ... == ... | test.c:85:8:85:13 | CompareEQ: ... == ... | != | 0 | 86 | 86 |
| test.c:85:18:85:23 | CompareNE: ... != ... | test.c:85:18:85:18 | Load: y | != | 0 | 86 | 86 |
| test.c:85:18:85:23 | CompareNE: ... != ... | test.c:85:18:85:23 | CompareNE: ... != ... | != | 0 | 86 | 86 |
| test.c:94:11:94:16 | CompareNE: ... != ... | test.c:94:11:94:11 | Load: x | != | 0 | 95 | 95 |
| test.c:94:11:94:16 | CompareNE: ... != ... | test.c:94:11:94:11 | Load: x | == | 0 | 70 | 70 |
| test.c:94:11:94:16 | CompareNE: ... != ... | test.c:94:11:94:11 | Load: x | == | 0 | 99 | 99 |
@@ -1058,34 +1332,78 @@ irGuardsEnsure_const
| test.c:94:11:94:16 | CompareNE: ... != ... | test.c:94:11:94:11 | Load: x | == | 0 | 109 | 109 |
| test.c:94:11:94:16 | CompareNE: ... != ... | test.c:94:11:94:11 | Load: x | == | 0 | 110 | 110 |
| test.c:94:11:94:16 | CompareNE: ... != ... | test.c:94:11:94:11 | Load: x | == | 0 | 113 | 113 |
| test.c:94:11:94:16 | CompareNE: ... != ... | test.c:94:11:94:16 | CompareNE: ... != ... | != | 0 | 95 | 95 |
| test.c:94:11:94:16 | CompareNE: ... != ... | test.c:94:11:94:16 | CompareNE: ... != ... | == | 0 | 70 | 70 |
| test.c:94:11:94:16 | CompareNE: ... != ... | test.c:94:11:94:16 | CompareNE: ... != ... | == | 0 | 99 | 99 |
| test.c:94:11:94:16 | CompareNE: ... != ... | test.c:94:11:94:16 | CompareNE: ... != ... | == | 0 | 102 | 102 |
| test.c:94:11:94:16 | CompareNE: ... != ... | test.c:94:11:94:16 | CompareNE: ... != ... | == | 0 | 103 | 103 |
| test.c:94:11:94:16 | CompareNE: ... != ... | test.c:94:11:94:16 | CompareNE: ... != ... | == | 0 | 107 | 107 |
| test.c:94:11:94:16 | CompareNE: ... != ... | test.c:94:11:94:16 | CompareNE: ... != ... | == | 0 | 109 | 109 |
| test.c:94:11:94:16 | CompareNE: ... != ... | test.c:94:11:94:16 | CompareNE: ... != ... | == | 0 | 110 | 110 |
| test.c:94:11:94:16 | CompareNE: ... != ... | test.c:94:11:94:16 | CompareNE: ... != ... | == | 0 | 113 | 113 |
| test.c:102:16:102:21 | CompareLT: ... < ... | test.c:102:16:102:16 | Load: j | < | 10 | 103 | 103 |
| test.c:102:16:102:21 | CompareLT: ... < ... | test.c:102:16:102:16 | Load: j | >= | 10 | 70 | 70 |
| test.c:102:16:102:21 | CompareLT: ... < ... | test.c:102:16:102:16 | Load: j | >= | 10 | 107 | 107 |
| test.c:102:16:102:21 | CompareLT: ... < ... | test.c:102:16:102:16 | Load: j | >= | 10 | 109 | 109 |
| test.c:102:16:102:21 | CompareLT: ... < ... | test.c:102:16:102:16 | Load: j | >= | 10 | 110 | 110 |
| test.c:102:16:102:21 | CompareLT: ... < ... | test.c:102:16:102:16 | Load: j | >= | 10 | 113 | 113 |
| test.c:102:16:102:21 | CompareLT: ... < ... | test.c:102:16:102:21 | CompareLT: ... < ... | != | 0 | 103 | 103 |
| test.c:102:16:102:21 | CompareLT: ... < ... | test.c:102:16:102:21 | CompareLT: ... < ... | == | 0 | 70 | 70 |
| test.c:102:16:102:21 | CompareLT: ... < ... | test.c:102:16:102:21 | CompareLT: ... < ... | == | 0 | 107 | 107 |
| test.c:102:16:102:21 | CompareLT: ... < ... | test.c:102:16:102:21 | CompareLT: ... < ... | == | 0 | 109 | 109 |
| test.c:102:16:102:21 | CompareLT: ... < ... | test.c:102:16:102:21 | CompareLT: ... < ... | == | 0 | 110 | 110 |
| test.c:102:16:102:21 | CompareLT: ... < ... | test.c:102:16:102:21 | CompareLT: ... < ... | == | 0 | 113 | 113 |
| test.c:109:9:109:14 | CompareEQ: ... == ... | test.c:109:9:109:9 | Load: x | != | 0 | 109 | 109 |
| test.c:109:9:109:14 | CompareEQ: ... == ... | test.c:109:9:109:9 | Load: x | != | 0 | 113 | 113 |
| test.c:109:9:109:14 | CompareEQ: ... == ... | test.c:109:9:109:14 | CompareEQ: ... == ... | == | 0 | 109 | 109 |
| test.c:109:9:109:14 | CompareEQ: ... == ... | test.c:109:9:109:14 | CompareEQ: ... == ... | == | 0 | 113 | 113 |
| test.c:109:19:109:23 | CompareLT: ... < ... | test.c:109:19:109:19 | Load: y | >= | 0 | 113 | 113 |
| test.c:109:19:109:23 | CompareLT: ... < ... | test.c:109:19:109:23 | CompareLT: ... < ... | == | 0 | 113 | 113 |
| test.c:126:7:126:7 | Constant: 1 | test.c:126:7:126:7 | Constant: 1 | != | 0 | 126 | 126 |
| test.c:126:7:126:7 | Constant: 1 | test.c:126:7:126:7 | Constant: 1 | != | 0 | 127 | 127 |
| test.c:126:7:126:7 | Constant: 1 | test.c:126:7:126:7 | Constant: 1 | != | 0 | 131 | 131 |
| test.c:126:7:126:7 | Constant: 1 | test.c:126:7:126:7 | Constant: 1 | != | 0 | 132 | 132 |
| test.c:126:7:126:7 | Constant: 1 | test.c:126:7:126:7 | Constant: 1 | != | 0 | 134 | 134 |
| test.c:126:7:126:7 | Constant: 1 | test.c:127:5:127:9 | Store: ... = ... | != | 0 | 126 | 126 |
| test.c:126:7:126:7 | Constant: 1 | test.c:127:5:127:9 | Store: ... = ... | != | 0 | 127 | 127 |
| test.c:126:7:126:7 | Constant: 1 | test.c:127:5:127:9 | Store: ... = ... | != | 0 | 131 | 131 |
| test.c:126:7:126:7 | Constant: 1 | test.c:127:5:127:9 | Store: ... = ... | != | 0 | 132 | 132 |
| test.c:126:7:126:7 | Constant: 1 | test.c:127:5:127:9 | Store: ... = ... | != | 0 | 134 | 134 |
| test.c:126:7:126:7 | Constant: 1 | test.c:127:9:127:9 | Constant: 1 | != | 0 | 126 | 126 |
| test.c:126:7:126:7 | Constant: 1 | test.c:127:9:127:9 | Constant: 1 | != | 0 | 127 | 127 |
| test.c:126:7:126:7 | Constant: 1 | test.c:127:9:127:9 | Constant: 1 | != | 0 | 131 | 131 |
| test.c:126:7:126:7 | Constant: 1 | test.c:127:9:127:9 | Constant: 1 | != | 0 | 132 | 132 |
| test.c:126:7:126:7 | Constant: 1 | test.c:127:9:127:9 | Constant: 1 | != | 0 | 134 | 134 |
| test.c:126:12:126:26 | Call: call to test3_condition | test.c:126:12:126:26 | Call: call to test3_condition | != | 0 | 127 | 127 |
| test.c:131:7:131:7 | Load: b | test.c:131:7:131:7 | Load: b | != | 0 | 132 | 132 |
| test.c:131:7:131:7 | Load: b | test.c:131:7:131:7 | Phi: b | != | 0 | 132 | 132 |
| test.c:137:7:137:7 | Constant: 0 | test.c:137:7:137:7 | Constant: 0 | == | 0 | 142 | 142 |
| test.c:146:7:146:8 | LogicalNot: ! ... | test.c:146:7:146:8 | LogicalNot: ! ... | != | 0 | 147 | 147 |
| test.c:146:8:146:8 | Load: x | test.c:145:16:145:16 | InitializeParameter: x | == | 0 | 147 | 147 |
| test.c:146:8:146:8 | Load: x | test.c:146:8:146:8 | Load: x | == | 0 | 147 | 147 |
| test.c:152:10:152:10 | Load: x | test.c:151:16:151:16 | InitializeParameter: x | != | 0 | 152 | 152 |
| test.c:152:10:152:10 | Load: x | test.c:152:10:152:10 | Load: x | != | 0 | 152 | 152 |
| test.c:152:15:152:15 | Load: y | test.c:151:23:151:23 | InitializeParameter: y | != | 0 | 152 | 152 |
| test.c:152:15:152:15 | Load: y | test.c:152:15:152:15 | Load: y | != | 0 | 152 | 152 |
| test.c:156:9:156:19 | CompareEQ: ... == ... | test.c:156:9:156:19 | CompareEQ: ... == ... | != | 0 | 156 | 157 |
| test.c:159:9:159:19 | CompareEQ: ... == ... | test.c:159:9:159:19 | CompareEQ: ... == ... | != | 0 | 159 | 160 |
| test.c:162:9:162:18 | CompareLT: ... < ... | test.c:162:9:162:18 | CompareLT: ... < ... | != | 0 | 162 | 163 |
| test.c:165:9:165:18 | CompareLT: ... < ... | test.c:165:9:165:18 | CompareLT: ... < ... | != | 0 | 165 | 166 |
| test.c:175:13:175:32 | CompareEQ: ... == ... | test.c:175:13:175:15 | Call: call to foo | != | 0 | 175 | 175 |
| test.c:175:13:175:32 | CompareEQ: ... == ... | test.c:175:13:175:15 | Call: call to foo | == | 0 | 175 | 175 |
| test.c:175:13:175:32 | CompareEQ: ... == ... | test.c:175:13:175:32 | CompareEQ: ... == ... | != | 0 | 175 | 175 |
| test.c:175:13:175:32 | CompareEQ: ... == ... | test.c:175:13:175:32 | CompareEQ: ... == ... | == | 0 | 175 | 175 |
| test.c:181:9:181:9 | Load: x | test.c:180:20:180:20 | InitializeParameter: x | != | 0 | 182 | 182 |
| test.c:181:9:181:9 | Load: x | test.c:180:20:180:20 | InitializeParameter: x | == | 0 | 184 | 184 |
| test.c:181:9:181:9 | Load: x | test.c:181:9:181:9 | Load: x | != | 0 | 182 | 182 |
| test.c:181:9:181:9 | Load: x | test.c:181:9:181:9 | Load: x | == | 0 | 184 | 184 |
| test.cpp:18:8:18:12 | CompareNE: (bool)... | test.cpp:18:8:18:10 | Call: call to get | != | 0 | 19 | 19 |
| test.cpp:18:8:18:12 | CompareNE: (bool)... | test.cpp:18:8:18:12 | CompareNE: (bool)... | != | 0 | 19 | 19 |
| test.cpp:31:7:31:13 | CompareEQ: ... == ... | test.cpp:31:7:31:7 | Load: x | != | -1 | 34 | 34 |
| test.cpp:31:7:31:13 | CompareEQ: ... == ... | test.cpp:31:7:31:7 | Load: x | == | -1 | 30 | 30 |
| test.cpp:31:7:31:13 | CompareEQ: ... == ... | test.cpp:31:7:31:7 | Load: x | == | -1 | 32 | 32 |
| test.cpp:31:7:31:13 | CompareEQ: ... == ... | test.cpp:31:7:31:13 | CompareEQ: ... == ... | != | 0 | 30 | 30 |
| test.cpp:31:7:31:13 | CompareEQ: ... == ... | test.cpp:31:7:31:13 | CompareEQ: ... == ... | != | 0 | 32 | 32 |
| test.cpp:31:7:31:13 | CompareEQ: ... == ... | test.cpp:31:7:31:13 | CompareEQ: ... == ... | == | 0 | 34 | 34 |
| test.cpp:42:13:42:20 | Call: call to getABool | test.cpp:42:13:42:20 | Call: call to getABool | != | 0 | 44 | 44 |
| test.cpp:42:13:42:20 | Call: call to getABool | test.cpp:42:13:42:20 | Call: call to getABool | == | 0 | 53 | 53 |

View File

@@ -1,5 +1,7 @@
| 7 | 0 < x+0 when ... > ... is true |
| 7 | 0 >= x+0 when ... > ... is false |
| 7 | ... > ... != 0 when ... > ... is true |
| 7 | ... > ... == 0 when ... > ... is false |
| 7 | x < 0+1 when ... > ... is false |
| 7 | x < 1 when ... > ... is false |
| 7 | x >= 0+1 when ... > ... is true |
@@ -10,6 +12,12 @@
| 17 | 1 < y+0 when ... && ... is true |
| 17 | 1 < y+0 when ... > ... is true |
| 17 | 1 >= y+0 when ... > ... is false |
| 17 | ... < ... != 0 when ... && ... is true |
| 17 | ... < ... != 0 when ... < ... is true |
| 17 | ... < ... == 0 when ... < ... is false |
| 17 | ... > ... != 0 when ... && ... is true |
| 17 | ... > ... != 0 when ... > ... is true |
| 17 | ... > ... == 0 when ... > ... is false |
| 17 | x < 0 when ... && ... is true |
| 17 | x < 0 when ... < ... is true |
| 17 | x < 0+0 when ... && ... is true |
@@ -26,24 +34,32 @@
| 18 | call to get == 0 when call to get is false |
| 26 | 0 < x+0 when ... > ... is true |
| 26 | 0 >= x+0 when ... > ... is false |
| 26 | ... > ... != 0 when ... > ... is true |
| 26 | ... > ... == 0 when ... > ... is false |
| 26 | x < 0+1 when ... > ... is false |
| 26 | x < 1 when ... > ... is false |
| 26 | x >= 0+1 when ... > ... is true |
| 26 | x >= 1 when ... > ... is true |
| 31 | - ... != x+0 when ... == ... is false |
| 31 | - ... == x+0 when ... == ... is true |
| 31 | ... == ... != 0 when ... == ... is true |
| 31 | ... == ... == 0 when ... == ... is false |
| 31 | x != -1 when ... == ... is false |
| 31 | x != - ...+0 when ... == ... is false |
| 31 | x == -1 when ... == ... is true |
| 31 | x == - ...+0 when ... == ... is true |
| 34 | 10 < j+1 when ... < ... is false |
| 34 | 10 >= j+1 when ... < ... is true |
| 34 | ... < ... != 0 when ... < ... is true |
| 34 | ... < ... == 0 when ... < ... is false |
| 34 | j < 10 when ... < ... is true |
| 34 | j < 10+0 when ... < ... is true |
| 34 | j >= 10 when ... < ... is false |
| 34 | j >= 10+0 when ... < ... is false |
| 42 | 10 < j+1 when ... < ... is false |
| 42 | 10 >= j+1 when ... < ... is true |
| 42 | ... < ... != 0 when ... < ... is true |
| 42 | ... < ... == 0 when ... < ... is false |
| 42 | call to getABool != 0 when call to getABool is true |
| 42 | call to getABool == 0 when call to getABool is false |
| 42 | j < 10 when ... < ... is true |
@@ -52,12 +68,16 @@
| 42 | j >= 10+0 when ... < ... is false |
| 44 | 0 < z+0 when ... > ... is true |
| 44 | 0 >= z+0 when ... > ... is false |
| 44 | ... > ... != 0 when ... > ... is true |
| 44 | ... > ... == 0 when ... > ... is false |
| 44 | z < 0+1 when ... > ... is false |
| 44 | z < 1 when ... > ... is false |
| 44 | z >= 0+1 when ... > ... is true |
| 44 | z >= 1 when ... > ... is true |
| 45 | 0 < y+0 when ... > ... is true |
| 45 | 0 >= y+0 when ... > ... is false |
| 45 | ... > ... != 0 when ... > ... is true |
| 45 | ... > ... == 0 when ... > ... is false |
| 45 | y < 0+1 when ... > ... is false |
| 45 | y < 1 when ... > ... is false |
| 45 | y >= 0+1 when ... > ... is true |
@@ -68,6 +88,12 @@
| 58 | 0 < y+1 when ... \|\| ... is false |
| 58 | 0 == x+0 when ... == ... is true |
| 58 | 0 >= y+1 when ... < ... is true |
| 58 | ... < ... != 0 when ... < ... is true |
| 58 | ... < ... == 0 when ... < ... is false |
| 58 | ... < ... == 0 when ... \|\| ... is false |
| 58 | ... == ... != 0 when ... == ... is true |
| 58 | ... == ... == 0 when ... == ... is false |
| 58 | ... == ... == 0 when ... \|\| ... is false |
| 58 | x != 0 when ... == ... is false |
| 58 | x != 0 when ... \|\| ... is false |
| 58 | x != 0+0 when ... == ... is false |
@@ -89,6 +115,8 @@
| 74 | i >= 11 when i is Case[11..20] |
| 75 | 0 != x+0 when ... == ... is false |
| 75 | 0 == x+0 when ... == ... is true |
| 75 | ... == ... != 0 when ... == ... is true |
| 75 | ... == ... == 0 when ... == ... is false |
| 75 | x != 0 when ... == ... is false |
| 75 | x != 0+0 when ... == ... is false |
| 75 | x == 0 when ... == ... is true |
@@ -99,6 +127,12 @@
| 85 | 0 == x+0 when ... && ... is true |
| 85 | 0 == x+0 when ... == ... is true |
| 85 | 0 == y+0 when ... != ... is false |
| 85 | ... != ... != 0 when ... != ... is true |
| 85 | ... != ... != 0 when ... && ... is true |
| 85 | ... != ... == 0 when ... != ... is false |
| 85 | ... == ... != 0 when ... && ... is true |
| 85 | ... == ... != 0 when ... == ... is true |
| 85 | ... == ... == 0 when ... == ... is false |
| 85 | x != 0 when ... == ... is false |
| 85 | x != 0+0 when ... == ... is false |
| 85 | x == 0 when ... && ... is true |
@@ -115,18 +149,26 @@
| 93 | c == 0 when c is false |
| 94 | 0 != x+0 when ... != ... is true |
| 94 | 0 == x+0 when ... != ... is false |
| 94 | ... != ... != 0 when ... != ... is true |
| 94 | ... != ... == 0 when ... != ... is false |
| 94 | x != 0 when ... != ... is true |
| 94 | x != 0+0 when ... != ... is true |
| 94 | x == 0 when ... != ... is false |
| 94 | x == 0+0 when ... != ... is false |
| 99 | f != 0 when f is true |
| 99 | f == 0 when f is false |
| 102 | 10 < j+1 when ... < ... is false |
| 102 | 10 >= j+1 when ... < ... is true |
| 102 | ... < ... != 0 when ... < ... is true |
| 102 | ... < ... == 0 when ... < ... is false |
| 102 | j < 10 when ... < ... is true |
| 102 | j < 10+0 when ... < ... is true |
| 102 | j >= 10 when ... < ... is false |
| 102 | j >= 10+0 when ... < ... is false |
| 105 | 0.0 != f+0 when ... != ... is true |
| 105 | 0.0 == f+0 when ... != ... is false |
| 105 | ... != ... != 0 when ... != ... is true |
| 105 | ... != ... == 0 when ... != ... is false |
| 105 | f != 0.0+0 when ... != ... is true |
| 105 | f == 0.0+0 when ... != ... is false |
| 109 | 0 != x+0 when ... == ... is false |
@@ -135,6 +177,12 @@
| 109 | 0 < y+1 when ... \|\| ... is false |
| 109 | 0 == x+0 when ... == ... is true |
| 109 | 0 >= y+1 when ... < ... is true |
| 109 | ... < ... != 0 when ... < ... is true |
| 109 | ... < ... == 0 when ... < ... is false |
| 109 | ... < ... == 0 when ... \|\| ... is false |
| 109 | ... == ... != 0 when ... == ... is true |
| 109 | ... == ... == 0 when ... == ... is false |
| 109 | ... == ... == 0 when ... \|\| ... is false |
| 109 | x != 0 when ... == ... is false |
| 109 | x != 0 when ... \|\| ... is false |
| 109 | x != 0+0 when ... == ... is false |
@@ -149,6 +197,8 @@
| 109 | y >= 0+0 when ... \|\| ... is false |
| 111 | 0.0 != i+0 when ... != ... is true |
| 111 | 0.0 == i+0 when ... != ... is false |
| 111 | ... != ... != 0 when ... != ... is true |
| 111 | ... != ... == 0 when ... != ... is false |
| 111 | i != 0.0+0 when ... != ... is true |
| 111 | i == 0.0+0 when ... != ... is false |
| 122 | b != 0 when b is true |
@@ -166,6 +216,8 @@
| 126 | call to test3_condition == 0 when call to test3_condition is false |
| 131 | ... + ... != a+0 when call to __builtin_expect is false |
| 131 | ... + ... == a+0 when call to __builtin_expect is true |
| 131 | ... == ... != 0 when call to __builtin_expect is true |
| 131 | ... == ... == 0 when call to __builtin_expect is false |
| 131 | a != ... + ...+0 when call to __builtin_expect is false |
| 131 | a != b+42 when call to __builtin_expect is false |
| 131 | a == ... + ...+0 when call to __builtin_expect is true |
@@ -176,6 +228,8 @@
| 131 | b == a+-42 when call to __builtin_expect is true |
| 131 | call to __builtin_expect != 0 when call to __builtin_expect is true |
| 131 | call to __builtin_expect == 0 when call to __builtin_expect is false |
| 135 | ... != ... != 0 when call to __builtin_expect is true |
| 135 | ... != ... == 0 when call to __builtin_expect is false |
| 135 | ... + ... != a+0 when call to __builtin_expect is true |
| 135 | ... + ... == a+0 when call to __builtin_expect is false |
| 135 | a != ... + ...+0 when call to __builtin_expect is true |
@@ -190,6 +244,8 @@
| 137 | 0 == 0 when 0 is false |
| 141 | 42 != a+0 when call to __builtin_expect is false |
| 141 | 42 == a+0 when call to __builtin_expect is true |
| 141 | ... == ... != 0 when call to __builtin_expect is true |
| 141 | ... == ... == 0 when call to __builtin_expect is false |
| 141 | a != 42 when call to __builtin_expect is false |
| 141 | a != 42+0 when call to __builtin_expect is false |
| 141 | a == 42 when call to __builtin_expect is true |
@@ -198,6 +254,8 @@
| 141 | call to __builtin_expect == 0 when call to __builtin_expect is false |
| 145 | 42 != a+0 when call to __builtin_expect is true |
| 145 | 42 == a+0 when call to __builtin_expect is false |
| 145 | ... != ... != 0 when call to __builtin_expect is true |
| 145 | ... != ... == 0 when call to __builtin_expect is false |
| 145 | a != 42 when call to __builtin_expect is true |
| 145 | a != 42+0 when call to __builtin_expect is true |
| 145 | a == 42 when call to __builtin_expect is false |

View File

@@ -99,10 +99,20 @@ binary
| test.c:75:9:75:14 | ... == ... | test.c:75:9:75:9 | x | == | test.c:75:14:75:14 | 0 | 0 | 75 | 77 |
| test.c:75:9:75:14 | ... == ... | test.c:75:14:75:14 | 0 | != | test.c:75:9:75:9 | x | 0 | 78 | 79 |
| test.c:75:9:75:14 | ... == ... | test.c:75:14:75:14 | 0 | == | test.c:75:9:75:9 | x | 0 | 75 | 77 |
| test.c:75:9:75:14 | ... == ... | test.c:85:8:85:8 | x | != | test.c:85:13:85:13 | 0 | 0 | 78 | 79 |
| test.c:75:9:75:14 | ... == ... | test.c:85:8:85:8 | x | == | test.c:85:13:85:13 | 0 | 0 | 75 | 77 |
| test.c:75:9:75:14 | ... == ... | test.c:85:13:85:13 | 0 | != | test.c:85:8:85:8 | x | 0 | 78 | 79 |
| test.c:75:9:75:14 | ... == ... | test.c:85:13:85:13 | 0 | == | test.c:85:8:85:8 | x | 0 | 75 | 77 |
| test.c:85:8:85:13 | ... == ... | test.c:75:9:75:9 | x | == | test.c:75:14:75:14 | 0 | 0 | 85 | 85 |
| test.c:85:8:85:13 | ... == ... | test.c:75:9:75:9 | x | == | test.c:75:14:75:14 | 0 | 0 | 86 | 86 |
| test.c:85:8:85:13 | ... == ... | test.c:75:14:75:14 | 0 | == | test.c:75:9:75:9 | x | 0 | 85 | 85 |
| test.c:85:8:85:13 | ... == ... | test.c:75:14:75:14 | 0 | == | test.c:75:9:75:9 | x | 0 | 86 | 86 |
| test.c:85:8:85:13 | ... == ... | test.c:85:8:85:8 | x | == | test.c:85:13:85:13 | 0 | 0 | 85 | 85 |
| test.c:85:8:85:13 | ... == ... | test.c:85:8:85:8 | x | == | test.c:85:13:85:13 | 0 | 0 | 86 | 86 |
| test.c:85:8:85:13 | ... == ... | test.c:85:13:85:13 | 0 | == | test.c:85:8:85:8 | x | 0 | 85 | 85 |
| test.c:85:8:85:13 | ... == ... | test.c:85:13:85:13 | 0 | == | test.c:85:8:85:8 | x | 0 | 86 | 86 |
| test.c:85:8:85:23 | ... && ... | test.c:75:9:75:9 | x | == | test.c:75:14:75:14 | 0 | 0 | 86 | 86 |
| test.c:85:8:85:23 | ... && ... | test.c:75:14:75:14 | 0 | == | test.c:75:9:75:9 | x | 0 | 86 | 86 |
| test.c:85:8:85:23 | ... && ... | test.c:85:8:85:8 | x | == | test.c:85:13:85:13 | 0 | 0 | 86 | 86 |
| test.c:85:8:85:23 | ... && ... | test.c:85:13:85:13 | 0 | == | test.c:85:8:85:8 | x | 0 | 86 | 86 |
| test.c:85:8:85:23 | ... && ... | test.c:85:18:85:18 | y | != | test.c:85:23:85:23 | 0 | 0 | 86 | 86 |
@@ -174,11 +184,18 @@ binary
unary
| test.c:7:9:7:13 | ... > ... | test.c:7:9:7:9 | x | < | 1 | 10 | 11 |
| test.c:7:9:7:13 | ... > ... | test.c:7:9:7:9 | x | >= | 1 | 7 | 9 |
| test.c:7:9:7:13 | ... > ... | test.c:7:9:7:13 | ... > ... | != | 0 | 7 | 9 |
| test.c:7:9:7:13 | ... > ... | test.c:7:9:7:13 | ... > ... | == | 0 | 10 | 11 |
| test.c:17:8:17:12 | ... < ... | test.c:17:8:17:8 | x | < | 0 | 17 | 17 |
| test.c:17:8:17:12 | ... < ... | test.c:17:8:17:8 | x | < | 0 | 18 | 18 |
| test.c:17:8:17:12 | ... < ... | test.c:17:8:17:12 | ... < ... | != | 0 | 17 | 17 |
| test.c:17:8:17:12 | ... < ... | test.c:17:8:17:12 | ... < ... | != | 0 | 18 | 18 |
| test.c:17:8:17:21 | ... && ... | test.c:17:8:17:8 | x | < | 0 | 18 | 18 |
| test.c:17:8:17:21 | ... && ... | test.c:17:8:17:12 | ... < ... | != | 0 | 18 | 18 |
| test.c:17:8:17:21 | ... && ... | test.c:17:17:17:17 | y | >= | 2 | 18 | 18 |
| test.c:17:8:17:21 | ... && ... | test.c:17:17:17:21 | ... > ... | != | 0 | 18 | 18 |
| test.c:17:17:17:21 | ... > ... | test.c:17:17:17:17 | y | >= | 2 | 18 | 18 |
| test.c:17:17:17:21 | ... > ... | test.c:17:17:17:21 | ... > ... | != | 0 | 18 | 18 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:11 | x | < | 1 | 2 | 2 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:11 | x | < | 1 | 31 | 34 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:11 | x | < | 1 | 34 | 34 |
@@ -193,6 +210,20 @@ unary
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:11 | x | < | 1 | 58 | 66 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:11 | x | < | 1 | 62 | 62 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:11 | x | >= | 1 | 26 | 28 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:15 | ... > ... | != | 0 | 26 | 28 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:15 | ... > ... | == | 0 | 2 | 2 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:15 | ... > ... | == | 0 | 31 | 34 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:15 | ... > ... | == | 0 | 34 | 34 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:15 | ... > ... | == | 0 | 39 | 42 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:15 | ... > ... | == | 0 | 42 | 42 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:15 | ... > ... | == | 0 | 42 | 44 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:15 | ... > ... | == | 0 | 45 | 45 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:15 | ... > ... | == | 0 | 45 | 47 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:15 | ... > ... | == | 0 | 51 | 53 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:15 | ... > ... | == | 0 | 56 | 58 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:15 | ... > ... | == | 0 | 58 | 58 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:15 | ... > ... | == | 0 | 58 | 66 |
| test.c:26:11:26:15 | ... > ... | test.c:26:11:26:15 | ... > ... | == | 0 | 62 | 62 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:16 | j | < | 10 | 34 | 34 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:16 | j | >= | 10 | 2 | 2 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:16 | j | >= | 10 | 39 | 42 |
@@ -205,28 +236,72 @@ unary
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:16 | j | >= | 10 | 58 | 58 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:16 | j | >= | 10 | 58 | 66 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:16 | j | >= | 10 | 62 | 62 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:21 | ... < ... | != | 0 | 34 | 34 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:21 | ... < ... | == | 0 | 2 | 2 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:21 | ... < ... | == | 0 | 39 | 42 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:21 | ... < ... | == | 0 | 42 | 42 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:21 | ... < ... | == | 0 | 42 | 44 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:21 | ... < ... | == | 0 | 45 | 45 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:21 | ... < ... | == | 0 | 45 | 47 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:21 | ... < ... | == | 0 | 51 | 53 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:21 | ... < ... | == | 0 | 56 | 58 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:21 | ... < ... | == | 0 | 58 | 58 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:21 | ... < ... | == | 0 | 58 | 66 |
| test.c:34:16:34:21 | ... < ... | test.c:34:16:34:21 | ... < ... | == | 0 | 62 | 62 |
| test.c:42:16:42:21 | ... < ... | test.c:42:16:42:16 | j | < | 10 | 42 | 42 |
| test.c:42:16:42:21 | ... < ... | test.c:42:16:42:16 | j | < | 10 | 42 | 44 |
| test.c:42:16:42:21 | ... < ... | test.c:42:16:42:16 | j | < | 10 | 45 | 45 |
| test.c:42:16:42:21 | ... < ... | test.c:42:16:42:16 | j | < | 10 | 45 | 47 |
| test.c:42:16:42:21 | ... < ... | test.c:42:16:42:16 | j | < | 10 | 51 | 53 |
| test.c:42:16:42:21 | ... < ... | test.c:42:16:42:21 | ... < ... | != | 0 | 42 | 42 |
| test.c:42:16:42:21 | ... < ... | test.c:42:16:42:21 | ... < ... | != | 0 | 42 | 44 |
| test.c:42:16:42:21 | ... < ... | test.c:42:16:42:21 | ... < ... | != | 0 | 45 | 45 |
| test.c:42:16:42:21 | ... < ... | test.c:42:16:42:21 | ... < ... | != | 0 | 45 | 47 |
| test.c:42:16:42:21 | ... < ... | test.c:42:16:42:21 | ... < ... | != | 0 | 51 | 53 |
| test.c:44:12:44:16 | ... > ... | test.c:44:12:44:12 | z | < | 1 | 42 | 42 |
| test.c:44:12:44:16 | ... > ... | test.c:44:12:44:12 | z | < | 1 | 51 | 53 |
| test.c:44:12:44:16 | ... > ... | test.c:44:12:44:12 | z | >= | 1 | 45 | 45 |
| test.c:44:12:44:16 | ... > ... | test.c:44:12:44:12 | z | >= | 1 | 45 | 47 |
| test.c:44:12:44:16 | ... > ... | test.c:44:12:44:16 | ... > ... | != | 0 | 45 | 45 |
| test.c:44:12:44:16 | ... > ... | test.c:44:12:44:16 | ... > ... | != | 0 | 45 | 47 |
| test.c:44:12:44:16 | ... > ... | test.c:44:12:44:16 | ... > ... | == | 0 | 42 | 42 |
| test.c:44:12:44:16 | ... > ... | test.c:44:12:44:16 | ... > ... | == | 0 | 51 | 53 |
| test.c:45:16:45:20 | ... > ... | test.c:45:16:45:16 | y | >= | 1 | 45 | 47 |
| test.c:45:16:45:20 | ... > ... | test.c:45:16:45:20 | ... > ... | != | 0 | 45 | 47 |
| test.c:58:9:58:14 | ... == ... | test.c:58:9:58:9 | x | != | 0 | 58 | 58 |
| test.c:58:9:58:14 | ... == ... | test.c:58:9:58:9 | x | != | 0 | 62 | 62 |
| test.c:58:9:58:14 | ... == ... | test.c:58:9:58:14 | ... == ... | == | 0 | 58 | 58 |
| test.c:58:9:58:14 | ... == ... | test.c:58:9:58:14 | ... == ... | == | 0 | 62 | 62 |
| test.c:58:9:58:23 | ... \|\| ... | test.c:58:9:58:9 | x | != | 0 | 62 | 62 |
| test.c:58:9:58:23 | ... \|\| ... | test.c:58:9:58:14 | ... == ... | == | 0 | 62 | 62 |
| test.c:58:9:58:23 | ... \|\| ... | test.c:58:19:58:19 | y | >= | 0 | 62 | 62 |
| test.c:58:9:58:23 | ... \|\| ... | test.c:58:19:58:23 | ... < ... | == | 0 | 62 | 62 |
| test.c:58:19:58:23 | ... < ... | test.c:58:19:58:19 | y | >= | 0 | 62 | 62 |
| test.c:58:19:58:23 | ... < ... | test.c:58:19:58:23 | ... < ... | == | 0 | 62 | 62 |
| test.c:75:9:75:14 | ... == ... | test.c:75:9:75:9 | x | != | 0 | 78 | 79 |
| test.c:75:9:75:14 | ... == ... | test.c:75:9:75:9 | x | == | 0 | 75 | 77 |
| test.c:75:9:75:14 | ... == ... | test.c:75:9:75:14 | ... == ... | != | 0 | 75 | 77 |
| test.c:75:9:75:14 | ... == ... | test.c:75:9:75:14 | ... == ... | == | 0 | 78 | 79 |
| test.c:75:9:75:14 | ... == ... | test.c:85:8:85:8 | x | != | 0 | 78 | 79 |
| test.c:75:9:75:14 | ... == ... | test.c:85:8:85:8 | x | == | 0 | 75 | 77 |
| test.c:75:9:75:14 | ... == ... | test.c:85:8:85:13 | ... == ... | != | 0 | 75 | 77 |
| test.c:75:9:75:14 | ... == ... | test.c:85:8:85:13 | ... == ... | == | 0 | 78 | 79 |
| test.c:85:8:85:13 | ... == ... | test.c:75:9:75:9 | x | == | 0 | 85 | 85 |
| test.c:85:8:85:13 | ... == ... | test.c:75:9:75:9 | x | == | 0 | 86 | 86 |
| test.c:85:8:85:13 | ... == ... | test.c:75:9:75:14 | ... == ... | != | 0 | 85 | 85 |
| test.c:85:8:85:13 | ... == ... | test.c:75:9:75:14 | ... == ... | != | 0 | 86 | 86 |
| test.c:85:8:85:13 | ... == ... | test.c:85:8:85:8 | x | == | 0 | 85 | 85 |
| test.c:85:8:85:13 | ... == ... | test.c:85:8:85:8 | x | == | 0 | 86 | 86 |
| test.c:85:8:85:13 | ... == ... | test.c:85:8:85:13 | ... == ... | != | 0 | 85 | 85 |
| test.c:85:8:85:13 | ... == ... | test.c:85:8:85:13 | ... == ... | != | 0 | 86 | 86 |
| test.c:85:8:85:23 | ... && ... | test.c:75:9:75:9 | x | == | 0 | 86 | 86 |
| test.c:85:8:85:23 | ... && ... | test.c:75:9:75:14 | ... == ... | != | 0 | 86 | 86 |
| test.c:85:8:85:23 | ... && ... | test.c:85:8:85:8 | x | == | 0 | 86 | 86 |
| test.c:85:8:85:23 | ... && ... | test.c:85:8:85:13 | ... == ... | != | 0 | 86 | 86 |
| test.c:85:8:85:23 | ... && ... | test.c:85:18:85:18 | y | != | 0 | 86 | 86 |
| test.c:85:8:85:23 | ... && ... | test.c:85:18:85:23 | ... != ... | != | 0 | 86 | 86 |
| test.c:85:18:85:23 | ... != ... | test.c:85:18:85:18 | y | != | 0 | 86 | 86 |
| test.c:85:18:85:23 | ... != ... | test.c:85:18:85:23 | ... != ... | != | 0 | 86 | 86 |
| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:11 | x | != | 0 | 94 | 96 |
| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:11 | x | == | 0 | 70 | 70 |
| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:11 | x | == | 0 | 99 | 102 |
@@ -235,24 +310,49 @@ unary
| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:11 | x | == | 0 | 109 | 109 |
| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:11 | x | == | 0 | 109 | 117 |
| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:11 | x | == | 0 | 113 | 113 |
| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:16 | ... != ... | != | 0 | 94 | 96 |
| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:16 | ... != ... | == | 0 | 70 | 70 |
| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:16 | ... != ... | == | 0 | 99 | 102 |
| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:16 | ... != ... | == | 0 | 102 | 102 |
| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:16 | ... != ... | == | 0 | 107 | 109 |
| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:16 | ... != ... | == | 0 | 109 | 109 |
| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:16 | ... != ... | == | 0 | 109 | 117 |
| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:16 | ... != ... | == | 0 | 113 | 113 |
| test.c:102:16:102:21 | ... < ... | test.c:102:16:102:16 | j | < | 10 | 102 | 102 |
| test.c:102:16:102:21 | ... < ... | test.c:102:16:102:16 | j | >= | 10 | 70 | 70 |
| test.c:102:16:102:21 | ... < ... | test.c:102:16:102:16 | j | >= | 10 | 107 | 109 |
| test.c:102:16:102:21 | ... < ... | test.c:102:16:102:16 | j | >= | 10 | 109 | 109 |
| test.c:102:16:102:21 | ... < ... | test.c:102:16:102:16 | j | >= | 10 | 109 | 117 |
| test.c:102:16:102:21 | ... < ... | test.c:102:16:102:16 | j | >= | 10 | 113 | 113 |
| test.c:102:16:102:21 | ... < ... | test.c:102:16:102:21 | ... < ... | != | 0 | 102 | 102 |
| test.c:102:16:102:21 | ... < ... | test.c:102:16:102:21 | ... < ... | == | 0 | 70 | 70 |
| test.c:102:16:102:21 | ... < ... | test.c:102:16:102:21 | ... < ... | == | 0 | 107 | 109 |
| test.c:102:16:102:21 | ... < ... | test.c:102:16:102:21 | ... < ... | == | 0 | 109 | 109 |
| test.c:102:16:102:21 | ... < ... | test.c:102:16:102:21 | ... < ... | == | 0 | 109 | 117 |
| test.c:102:16:102:21 | ... < ... | test.c:102:16:102:21 | ... < ... | == | 0 | 113 | 113 |
| test.c:109:9:109:14 | ... == ... | test.c:109:9:109:9 | x | != | 0 | 109 | 109 |
| test.c:109:9:109:14 | ... == ... | test.c:109:9:109:9 | x | != | 0 | 113 | 113 |
| test.c:109:9:109:14 | ... == ... | test.c:109:9:109:14 | ... == ... | == | 0 | 109 | 109 |
| test.c:109:9:109:14 | ... == ... | test.c:109:9:109:14 | ... == ... | == | 0 | 113 | 113 |
| test.c:109:9:109:23 | ... \|\| ... | test.c:109:9:109:9 | x | != | 0 | 113 | 113 |
| test.c:109:9:109:23 | ... \|\| ... | test.c:109:9:109:14 | ... == ... | == | 0 | 113 | 113 |
| test.c:109:9:109:23 | ... \|\| ... | test.c:109:19:109:19 | y | >= | 0 | 113 | 113 |
| test.c:109:9:109:23 | ... \|\| ... | test.c:109:19:109:23 | ... < ... | == | 0 | 113 | 113 |
| test.c:109:19:109:23 | ... < ... | test.c:109:19:109:19 | y | >= | 0 | 113 | 113 |
| test.c:109:19:109:23 | ... < ... | test.c:109:19:109:23 | ... < ... | == | 0 | 113 | 113 |
| test.c:126:7:126:7 | 1 | test.c:126:7:126:7 | 1 | != | 0 | 126 | 126 |
| test.c:126:7:126:7 | 1 | test.c:126:7:126:7 | 1 | != | 0 | 126 | 128 |
| test.c:126:7:126:7 | 1 | test.c:126:7:126:7 | 1 | != | 0 | 131 | 131 |
| test.c:126:7:126:7 | 1 | test.c:126:7:126:7 | 1 | != | 0 | 131 | 132 |
| test.c:126:7:126:7 | 1 | test.c:126:7:126:7 | 1 | != | 0 | 134 | 123 |
| test.c:126:7:126:7 | 1 | test.c:127:9:127:9 | 1 | != | 0 | 126 | 126 |
| test.c:126:7:126:7 | 1 | test.c:127:9:127:9 | 1 | != | 0 | 126 | 128 |
| test.c:126:7:126:7 | 1 | test.c:127:9:127:9 | 1 | != | 0 | 131 | 131 |
| test.c:126:7:126:7 | 1 | test.c:127:9:127:9 | 1 | != | 0 | 131 | 132 |
| test.c:126:7:126:7 | 1 | test.c:127:9:127:9 | 1 | != | 0 | 134 | 123 |
| test.c:126:7:126:28 | ... && ... | test.c:126:7:126:7 | 1 | != | 0 | 126 | 128 |
| test.c:126:7:126:28 | ... && ... | test.c:126:12:126:26 | call to test3_condition | != | 0 | 126 | 128 |
| test.c:126:7:126:28 | ... && ... | test.c:127:9:127:9 | 1 | != | 0 | 126 | 128 |
| test.c:126:12:126:26 | call to test3_condition | test.c:126:12:126:26 | call to test3_condition | != | 0 | 126 | 128 |
| test.c:131:7:131:7 | b | test.c:131:7:131:7 | b | != | 0 | 131 | 132 |
| test.c:137:7:137:7 | 0 | test.c:137:7:137:7 | 0 | == | 0 | 142 | 136 |
@@ -269,6 +369,10 @@ unary
| test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:7 | x | != | -1 | 34 | 34 |
| test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:7 | x | == | -1 | 30 | 30 |
| test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:7 | x | == | -1 | 31 | 32 |
| test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:13 | ... == ... | != | 0 | 30 | 30 |
| test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:13 | ... == ... | != | 0 | 31 | 32 |
| test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:13 | ... == ... | == | 0 | 30 | 30 |
| test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:13 | ... == ... | == | 0 | 34 | 34 |
| test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | != | 0 | 43 | 45 |
| test.cpp:42:13:42:20 | call to getABool | test.cpp:42:13:42:20 | call to getABool | == | 0 | 53 | 53 |
| test.cpp:61:10:61:10 | i | test.cpp:61:10:61:10 | i | == | 0 | 62 | 64 |
@@ -278,13 +382,20 @@ unary
| test.cpp:74:10:74:10 | i | test.cpp:74:10:74:10 | i | >= | 0 | 75 | 77 |
| test.cpp:74:10:74:10 | i | test.cpp:74:10:74:10 | i | >= | 11 | 78 | 79 |
| test.cpp:93:6:93:6 | c | test.cpp:93:6:93:6 | c | != | 0 | 93 | 94 |
| test.cpp:99:6:99:6 | f | test.cpp:99:6:99:6 | f | != | 0 | 99 | 100 |
| test.cpp:105:6:105:14 | ... != ... | test.cpp:105:6:105:14 | ... != ... | != | 0 | 105 | 106 |
| test.cpp:111:6:111:14 | ... != ... | test.cpp:111:6:111:14 | ... != ... | != | 0 | 111 | 112 |
| test.cpp:122:9:122:9 | b | test.cpp:122:9:122:9 | b | != | 0 | 123 | 125 |
| test.cpp:122:9:122:9 | b | test.cpp:122:9:122:9 | b | != | 0 | 125 | 125 |
| test.cpp:125:13:125:20 | ! ... | test.cpp:125:13:125:20 | ! ... | != | 0 | 125 | 125 |
| test.cpp:125:14:125:17 | call to safe | test.cpp:125:14:125:17 | call to safe | == | 0 | 125 | 125 |
| test.cpp:131:6:131:21 | call to __builtin_expect | test.cpp:131:6:131:21 | call to __builtin_expect | != | 0 | 131 | 132 |
| test.cpp:131:6:131:21 | call to __builtin_expect | test.cpp:131:23:131:33 | ... == ... | != | 0 | 131 | 132 |
| test.cpp:135:6:135:21 | call to __builtin_expect | test.cpp:135:6:135:21 | call to __builtin_expect | != | 0 | 135 | 136 |
| test.cpp:135:6:135:21 | call to __builtin_expect | test.cpp:135:23:135:33 | ... != ... | != | 0 | 135 | 136 |
| test.cpp:141:6:141:21 | call to __builtin_expect | test.cpp:141:6:141:21 | call to __builtin_expect | != | 0 | 141 | 142 |
| test.cpp:141:6:141:21 | call to __builtin_expect | test.cpp:141:23:141:23 | a | == | 42 | 141 | 142 |
| test.cpp:141:6:141:21 | call to __builtin_expect | test.cpp:141:23:141:29 | ... == ... | != | 0 | 141 | 142 |
| test.cpp:145:6:145:21 | call to __builtin_expect | test.cpp:145:6:145:21 | call to __builtin_expect | != | 0 | 145 | 146 |
| test.cpp:145:6:145:21 | call to __builtin_expect | test.cpp:145:23:145:23 | a | != | 42 | 145 | 146 |
| test.cpp:145:6:145:21 | call to __builtin_expect | test.cpp:145:23:145:29 | ... != ... | != | 0 | 145 | 146 |

View File

@@ -0,0 +1,10 @@
| 'this' may only be used inside a nonstatic member function | 1 |
| There was an error during this compilation | 1 |
| expected a ')' | 1 |
| expected a ';' | 1 |
| expected an expression | 1 |
| identifier 'no_such_function' is undefined | 1 |
| identifier 'nsf2' is undefined | 1 |
| identifier 'so_is_this' is undefined | 1 |
| identifier 'uint32_t' is undefined | 1 |
| too few arguments in function call | 1 |

View File

@@ -0,0 +1 @@
Telemetry/CompilerErrors.ql

View File

@@ -0,0 +1,9 @@
| Percentage of calls with an explicit target | 50.0 |
| Percentage of compilations without errors | 50.0 |
| Percentage of expressions with a known type | 30.0 |
| Percentage of functions without errors | 75.0 |
| Percentage of lines of code without errors | 63.1578947368421 |
| Percentage of non-error expressions | 30.0 |
| Percentage of source/header files without errors | 66.66666666666667 |
| Percentage of successfully resolved #include directives | 100.0 |
| Percentage of variables with a known type | 90.0 |

View File

@@ -0,0 +1 @@
Telemetry/DatabaseQuality.ql

View File

@@ -0,0 +1,7 @@
| test.cpp:6:13:6:31 | initializer for x | test.cpp:6:13:6:31 | <error expr> |
| test.cpp:7:5:7:8 | ExprStmt | file://:0:0:0:0 | <error expr> |
| test.cpp:8:5:8:23 | ExprStmt | file://:0:0:0:0 | <error expr> |
| test.cpp:9:5:9:21 | ExprStmt | file://:0:0:0:0 | <error expr> |
| test.cpp:11:5:11:8 | ExprStmt | file://:0:0:0:0 | <error expr> |
| test.cpp:15:5:15:8 | ExprStmt | file://:0:0:0:0 | <error expr> |
| test.cpp:16:5:16:16 | ExprStmt | file://:0:0:0:0 | <error expr> |

View File

@@ -0,0 +1,4 @@
import cpp
from ErrorExpr e
select e.getParent(), e

View File

@@ -0,0 +1,20 @@
| #include directives | 2 |
| calls | 2 |
| calls with an explicit target | 1 |
| compilations | 2 |
| compilations without errors | 1 |
| compiler errors | 10 |
| expressions | 10 |
| expressions with a known type | 3 |
| functions | 8 |
| functions without errors | 6 |
| lines of code | 19 |
| lines of code without errors | 12 |
| lines of text | 24 |
| non-error expressions | 3 |
| source/header files | 3 |
| source/header files without errors | 2 |
| successfully resolved #include directives | 2 |
| syntax errors | 3 |
| variables | 10 |
| variables with a known type | 9 |

View File

@@ -0,0 +1 @@
Telemetry/ExtractionMetrics.ql

View File

@@ -0,0 +1 @@
| "test.h" | 2 |

View File

@@ -0,0 +1 @@
Telemetry/SucceededIncludes.ql

View File

@@ -0,0 +1,10 @@
| file://:0:0:0:0 | There was an error during this compilation |
| test.cpp:6:14:6:14 | identifier 'no_such_function' is undefined |
| test.cpp:9:14:9:14 | identifier 'nsf2' is undefined |
| test.cpp:11:7:11:7 | too few arguments in function call |
| test.cpp:14:1:14:1 | identifier 'uint32_t' is undefined |
| test.cpp:15:5:15:5 | 'this' may only be used inside a nonstatic member function |
| test.cpp:15:10:15:10 | expected a ';' |
| test.cpp:16:5:16:5 | identifier 'so_is_this' is undefined |
| test.cpp:16:16:16:16 | expected a ')' |
| test.cpp:16:16:16:16 | expected an expression |

View File

@@ -0,0 +1,4 @@
import cpp
from Diagnostic d
select d

View File

@@ -0,0 +1 @@
| test.cpp:6:10:6:10 | x | This variable does not have a type. |

View File

@@ -0,0 +1,5 @@
import cpp
from Variable v
where v.getType() instanceof ErroneousType or not exists(v.getType())
select v, "This variable does not have a type."

View File

@@ -0,0 +1,6 @@
| test.c:3:6:3:6 | g |
| test.c:4:13:4:13 | no_such_function |
| test.cpp:5:6:5:25 | function_with_errors |
| test.cpp:14:10:14:12 | fn2 |
| test.h:2:5:2:5 | f |
| test.h:2:5:2:5 | f |

View File

@@ -0,0 +1,5 @@
import cpp
from Function fn
where fn.fromSource()
select fn

View File

@@ -0,0 +1,5 @@
#include "test.h"
void g() {
int x = no_such_function();
}

View File

@@ -0,0 +1,17 @@
// semmle-extractor-options: --expect_errors
#include "test.h"
void function_with_errors() {
auto x = no_such_function();
x+2;
no_such_function();
ADD(x+1, nsf2());
f(1);
f();
}
uint32_t fn2() {
this is a syntax error;
so_is_this(;
}

View File

@@ -0,0 +1,2 @@
#define ADD(A,B) ((A)+(B))
int f(int);

View File

@@ -4607,6 +4607,188 @@ 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>:
@@ -23614,6 +23796,296 @@ 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,6 +3296,278 @@ 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
@@ -19117,6 +19389,330 @@ 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,4 +29,42 @@ 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,4 +29,42 @@ 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,4 +81,26 @@ 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,4 +2695,26 @@ 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,4 +38,42 @@ 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,6 +3095,276 @@ 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
@@ -17439,6 +17709,328 @@ 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,4 +29,42 @@ 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,4 +29,42 @@ 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,4 +28,5 @@ nonUniqueEnclosingIRFunction
fieldAddressOnNonPointer
thisArgumentIsNonPointer
nonUniqueIRVariable
nonBooleanOperand
missingCppType

View File

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

View File

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

View File

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

View File

@@ -33,4 +33,271 @@ 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,4 +42,280 @@ 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,4 +33,271 @@ 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

@@ -52,6 +52,9 @@ edges
| test.cpp:541:39:541:40 | sscanf output argument | test.cpp:549:8:549:8 | e | provenance | |
| test.cpp:541:43:541:44 | sscanf output argument | test.cpp:545:8:545:8 | f | provenance | |
| test.cpp:541:43:541:44 | sscanf output argument | test.cpp:550:8:550:8 | f | provenance | |
| test.cpp:559:30:559:31 | scanf output argument | test.cpp:561:9:561:9 | i | provenance | |
| test.cpp:567:35:567:36 | scanf output argument | test.cpp:569:9:569:9 | i | provenance | |
| test.cpp:575:30:575:31 | scanf output argument | test.cpp:577:9:577:9 | i | provenance | |
nodes
| test.cpp:34:15:34:16 | scanf output argument | semmle.label | scanf output argument |
| test.cpp:35:7:35:7 | i | semmle.label | i |
@@ -154,6 +157,12 @@ nodes
| test.cpp:548:8:548:8 | d | semmle.label | d |
| test.cpp:549:8:549:8 | e | semmle.label | e |
| test.cpp:550:8:550:8 | f | semmle.label | f |
| test.cpp:559:30:559:31 | scanf output argument | semmle.label | scanf output argument |
| test.cpp:561:9:561:9 | i | semmle.label | i |
| test.cpp:567:35:567:36 | scanf output argument | semmle.label | scanf output argument |
| test.cpp:569:9:569:9 | i | semmle.label | i |
| test.cpp:575:30:575:31 | scanf output argument | semmle.label | scanf output argument |
| test.cpp:577:9:577:9 | i | semmle.label | i |
subpaths
#select
| test.cpp:35:7:35:7 | i | test.cpp:34:15:34:16 | scanf output argument | test.cpp:35:7:35:7 | i | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:34:3:34:7 | call to scanf | call to scanf |
@@ -177,3 +186,5 @@ subpaths
| test.cpp:484:9:484:9 | i | test.cpp:480:25:480:26 | scanf output argument | test.cpp:484:9:484:9 | i | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:480:13:480:17 | call to scanf | call to scanf |
| test.cpp:495:8:495:8 | i | test.cpp:491:25:491:26 | scanf output argument | test.cpp:495:8:495:8 | i | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:491:13:491:17 | call to scanf | call to scanf |
| test.cpp:545:8:545:8 | f | test.cpp:541:43:541:44 | sscanf output argument | test.cpp:545:8:545:8 | f | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 3. | test.cpp:541:10:541:15 | call to sscanf | call to sscanf |
| test.cpp:569:9:569:9 | i | test.cpp:567:35:567:36 | scanf output argument | test.cpp:569:9:569:9 | i | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:567:23:567:27 | call to scanf | call to scanf |
| test.cpp:577:9:577:9 | i | test.cpp:575:30:575:31 | scanf output argument | test.cpp:577:9:577:9 | i | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:575:18:575:22 | call to scanf | call to scanf |

View File

@@ -553,3 +553,27 @@ void switch_cases(const char *data) {
break;
}
}
void test_scanf_compared_right_away() {
int i;
bool success = scanf("%d", &i) == 1;
if(success) {
use(i); // GOOD
}
}
void test_scanf_compared_in_conjunct_right(bool b) {
int i;
bool success = b && scanf("%d", &i) == 1;
if(success) {
use(i); // GOOD [FALSE POSITIVE]
}
}
void test_scanf_compared_in_conjunct_left(bool b) {
int i;
bool success = scanf("%d", &i) == 1 && b;
if(success) {
use(i); // GOOD [FALSE POSITIVE]
}
}

View File

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

View File

@@ -235,14 +235,15 @@
<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 Include="%(PaketReferencesFileLinesInfo.PackageName)">
<Version>%(PaketReferencesFileLinesInfo.PackageVersion)</Version>
<PackageReference Condition=" '$(ManagePackageVersionsCentrally)' != 'true' Or '%(PaketReferencesFileLinesInfo.Reference)' == 'Direct' " Include="%(PaketReferencesFileLinesInfo.PackageName)">
<Version Condition=" '$(ManagePackageVersionsCentrally)' != 'true' ">%(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>
@@ -252,6 +253,10 @@
<AllowExplicitVersion>true</AllowExplicitVersion>
</PackageReference>
<PackageVersion Include="%(PaketReferencesFileLinesInfo.PackageName)">
<Version>%(PaketReferencesFileLinesInfo.PackageVersion)</Version>
</PackageVersion>
</ItemGroup>
<PropertyGroup>

View File

@@ -6,7 +6,7 @@
"type": "coreclr",
"request": "launch",
"preLaunchTask": "dotnet: build",
"program": "${workspaceFolder}/extractor/Semmle.Extraction.CSharp.Standalone/bin/Debug/net8.0/Semmle.Extraction.CSharp.Standalone.dll",
"program": "${workspaceFolder}/extractor/Semmle.Extraction.CSharp.Standalone/bin/Debug/net9.0/Semmle.Extraction.CSharp.Standalone.dll",
"args": [],
// Set the path to the folder that should be extracted:
"cwd": "${workspaceFolder}/ql/test/library-tests/standalone/standalonemode",
@@ -35,7 +35,7 @@
"type": "coreclr",
"request": "launch",
"preLaunchTask": "dotnet: build",
"program": "${workspaceFolder}/autobuilder/Semmle.Autobuild.CSharp/bin/Debug/net8.0/Semmle.Autobuild.CSharp.dll",
"program": "${workspaceFolder}/autobuilder/Semmle.Autobuild.CSharp/bin/Debug/net9.0/Semmle.Autobuild.CSharp.dll",
// Set the path to the folder that should be extracted:
"cwd": "${workspaceFolder}/ql/integration-tests/all-platforms/autobuild",
"stopAtEntry": true,
@@ -53,7 +53,7 @@
"type": "coreclr",
"request": "launch",
"preLaunchTask": "dotnet: build",
"program": "${workspaceFolder}/extractor/Semmle.Extraction.CSharp.Driver/bin/Debug/net8.0/Semmle.Extraction.CSharp.Driver.dll",
"program": "${workspaceFolder}/extractor/Semmle.Extraction.CSharp.Driver/bin/Debug/net9.0/Semmle.Extraction.CSharp.Driver.dll",
"stopAtEntry": true,
"args": [
"--binlog",

View File

@@ -4,8 +4,6 @@ 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>net8.0</TargetFramework>
<TargetFramework>net9.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@v3
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.101
dotnet-version: 9.0.100
- name: Build Extractor
shell: bash
run: scripts/create-extractor-pack.sh

View File

@@ -49,11 +49,9 @@ namespace Semmle.Autobuild.CSharp
tryCleanExtractorArgsLogs &
BuildScript.DeleteFile(Extractor.GetCSharpLogPath());
/// <summary>
/// Execute script `s` and check that the C# extractor has been executed.
/// If either fails, attempt to cleanup any artifacts produced by the extractor,
/// and exit with code 1, in order to proceed to the next attempt.
/// </summary>
// Execute script `s` and check that the C# extractor has been executed.
// If either fails, attempt to cleanup any artifacts produced by the extractor,
// and exit with code 1, in order to proceed to the next attempt.
BuildScript IntermediateAttempt(BuildScript s) =>
(s & this.autobuilder.CheckExtractorRun(false)) |
(attemptExtractorCleanup & BuildScript.Failure);

View File

@@ -195,7 +195,7 @@ namespace Semmle.Autobuild.Shared
}
/// <summary>
/// Retrieves the value of an environment variable named <paramref name="name"> or throws
/// Retrieves the value of an environment variable named <paramref name="name"/> or throws
/// an exception if no such environment variable has been set.
/// </summary>
/// <param name="name">The name of the environment variable.</param>
@@ -228,7 +228,7 @@ namespace Semmle.Autobuild.Shared
private readonly IDiagnosticsWriter diagnostics;
/// <summary>
/// Makes <see cref="path" /> relative to the root source directory.
/// Makes <paramref name="path"/> relative to the root source directory.
/// </summary>
/// <param name="path">The path which to make relative.</param>
/// <returns>The relative path.</returns>

View File

@@ -22,7 +22,7 @@ namespace Semmle.Autobuild.Shared
public static string ToMarkdownLink(this string link, string title) => $"[{title}]({link})";
/// <summary>
/// Renders <see cref="projects" /> as a markdown list of the project paths.
/// Renders <paramref name="projects"/> as a markdown list of the project paths.
/// </summary>
/// <param name="projects">
/// The list of projects whose paths should be rendered as a markdown list.
@@ -35,7 +35,7 @@ namespace Semmle.Autobuild.Shared
}
/// <summary>
/// Renders <see cref="items" /> as a markdown list.
/// Renders <paramref name="items" /> as a markdown list.
/// </summary>
/// <typeparam name="T">The item type.</typeparam>
/// <param name="items">The list that should be formatted as a markdown list.</param>

View File

@@ -70,4 +70,4 @@ options:
description: >
[EXPERIMENTAL] The value is a path to the MsBuild binary log file that should be extracted.
This option only works when `--build-mode none` is also specified.
type: string
type: array

View File

@@ -8,39 +8,40 @@ ILLink.Shared,,,31,,,,,,,,,,,,,,,,,,,11,20
ILLink.Tasks,,,5,,,,,,,,,,,,,,,,,,,4,1
Internal.IL,,,54,,,,,,,,,,,,,,,,,,,28,26
Internal.Pgo,,,9,,,,,,,,,,,,,,,,,,,2,7
Internal.TypeSystem,,,328,,,,,,,,,,,,,,,,,,,201,127
Internal.TypeSystem,,,329,,,,,,,,,,,,,,,,,,,201,128
JsonToItemsTaskFactory,,,11,,,,,,,,,,,,,,,,,,,1,10
Microsoft.Android.Build,,1,14,,,,,,,,,,,,,1,,,,,,12,2
Microsoft.Apple.Build,,,7,,,,,,,,,,,,,,,,,,,7,
Microsoft.ApplicationBlocks.Data,28,,,,,,,,,,,,28,,,,,,,,,,
Microsoft.CSharp,,,2,,,,,,,,,,,,,,,,,,,2,
Microsoft.Diagnostics.Tools.Pgo,,,23,,,,,,,,,,,,,,,,,,,2,21
Microsoft.Diagnostics.Tools.Pgo,,,25,,,,,,,,,,,,,,,,,,,2,23
Microsoft.DotNet.Build.Tasks,,,10,,,,,,,,,,,,,,,,,,,8,2
Microsoft.DotNet.PlatformAbstractions,,,1,,,,,,,,,,,,,,,,,,,1,
Microsoft.EntityFrameworkCore,6,,12,,,,,,,,,,6,,,,,,,,,,12
Microsoft.Extensions.Caching.Distributed,,,3,,,,,,,,,,,,,,,,,,,,3
Microsoft.Extensions.Caching.Memory,,,31,,,,,,,,,,,,,,,,,,,5,26
Microsoft.Extensions.Configuration,,3,91,,,,,,,,,,,,,3,,,,,,25,66
Microsoft.Extensions.DependencyInjection,,,130,,,,,,,,,,,,,,,,,,,17,113
Microsoft.Extensions.Caching.Memory,,,37,,,,,,,,,,,,,,,,,,,5,32
Microsoft.Extensions.Configuration,,3,101,,,,,,,,,,,,,3,,,,,,29,72
Microsoft.Extensions.DependencyInjection,,,202,,,,,,,,,,,,,,,,,,,15,187
Microsoft.Extensions.DependencyModel,,1,16,,,,,,,,,,,,,1,,,,,,14,2
Microsoft.Extensions.Diagnostics.Metrics,,,14,,,,,,,,,,,,,,,,,,,1,13
Microsoft.Extensions.FileProviders,,,17,,,,,,,,,,,,,,,,,,,7,10
Microsoft.Extensions.FileSystemGlobbing,,,22,,,,,,,,,,,,,,,,,,,11,11
Microsoft.Extensions.Hosting,,,39,,,,,,,,,,,,,,,,,,,29,10
Microsoft.Extensions.FileSystemGlobbing,,,21,,,,,,,,,,,,,,,,,,,10,11
Microsoft.Extensions.Hosting,,,58,,,,,,,,,,,,,,,,,,,29,29
Microsoft.Extensions.Http,,,9,,,,,,,,,,,,,,,,,,,7,2
Microsoft.Extensions.Logging,,,64,,,,,,,,,,,,,,,,,,,25,39
Microsoft.Extensions.Options,,,14,,,,,,,,,,,,,,,,,,,14,
Microsoft.Extensions.Primitives,,,72,,,,,,,,,,,,,,,,,,,67,5
Microsoft.Interop,,,137,,,,,,,,,,,,,,,,,,,70,67
Microsoft.Extensions.Logging,,,91,,,,,,,,,,,,,,,,,,,25,66
Microsoft.Extensions.Options,,,68,,,,,,,,,,,,,,,,,,,44,24
Microsoft.Extensions.Primitives,,,73,,,,,,,,,,,,,,,,,,,67,6
Microsoft.Interop,,,159,,,,,,,,,,,,,,,,,,,75,84
Microsoft.NET.Build.Tasks,,,5,,,,,,,,,,,,,,,,,,,3,2
Microsoft.NET.Sdk.WebAssembly,,,2,,,,,,,,,,,,,,,,,,,1,1
Microsoft.NET.WebAssembly.Webcil,,,6,,,,,,,,,,,,,,,,,,,6,
Microsoft.VisualBasic,,,13,,,,,,,,,,,,,,,,,,,1,12
Microsoft.WebAssembly.Build.Tasks,,,9,,,,,,,,,,,,,,,,,,,8,1
Microsoft.Win32,,4,2,,,,,,,,,,,,,,,,,,4,,2
Mono.Linker,,,287,,,,,,,,,,,,,,,,,,,145,142
Mono.Linker,,,293,,,,,,,,,,,,,,,,,,,145,148
MySql.Data.MySqlClient,48,,,,,,,,,,,,48,,,,,,,,,,
Newtonsoft.Json,,,91,,,,,,,,,,,,,,,,,,,73,18
ServiceStack,194,,7,27,,,,,75,,,,92,,,,,,,,,7,
SourceGenerators,,,5,,,,,,,,,,,,,,,,,,,,5
System,54,47,10313,,6,5,5,,,4,1,,33,2,,6,15,17,4,3,,5351,4962
System,54,47,10818,,6,5,5,,,4,1,,33,2,,6,15,17,4,3,,5511,5307
Windows.Security.Cryptography.Core,1,,,,,,,1,,,,,,,,,,,,,,,
1 package sink source summary sink:code-injection sink:encryption-decryptor sink:encryption-encryptor sink:encryption-keyprop sink:encryption-symmetrickey sink:file-content-store sink:html-injection sink:js-injection sink:log-injection sink:sql-injection source:commandargs source:database source:environment source:file source:file-write source:remote source:stdin source:windows-registry summary:taint summary:value
8 ILLink.Tasks 5 4 1
9 Internal.IL 54 28 26
10 Internal.Pgo 9 2 7
11 Internal.TypeSystem 328 329 201 127 128
12 JsonToItemsTaskFactory 11 1 10
13 Microsoft.Android.Build 1 14 1 12 2
14 Microsoft.Apple.Build 7 7
15 Microsoft.ApplicationBlocks.Data 28 28
16 Microsoft.CSharp 2 2
17 Microsoft.Diagnostics.Tools.Pgo 23 25 2 21 23
18 Microsoft.DotNet.Build.Tasks 10 8 2
19 Microsoft.DotNet.PlatformAbstractions 1 1
20 Microsoft.EntityFrameworkCore 6 12 6 12
21 Microsoft.Extensions.Caching.Distributed 3 3
22 Microsoft.Extensions.Caching.Memory 31 37 5 26 32
23 Microsoft.Extensions.Configuration 3 91 101 3 25 29 66 72
24 Microsoft.Extensions.DependencyInjection 130 202 17 15 113 187
25 Microsoft.Extensions.DependencyModel 1 16 1 14 2
26 Microsoft.Extensions.Diagnostics.Metrics 14 1 13
27 Microsoft.Extensions.FileProviders 17 7 10
28 Microsoft.Extensions.FileSystemGlobbing 22 21 11 10 11
29 Microsoft.Extensions.Hosting 39 58 29 10 29
30 Microsoft.Extensions.Http 9 7 2
31 Microsoft.Extensions.Logging 64 91 25 39 66
32 Microsoft.Extensions.Options 14 68 14 44 24
33 Microsoft.Extensions.Primitives 72 73 67 5 6
34 Microsoft.Interop 137 159 70 75 67 84
35 Microsoft.NET.Build.Tasks 5 3 2
36 Microsoft.NET.Sdk.WebAssembly 2 1 1
37 Microsoft.NET.WebAssembly.Webcil 6 6
38 Microsoft.VisualBasic 13 1 12
39 Microsoft.WebAssembly.Build.Tasks 9 8 1
40 Microsoft.Win32 4 2 4 2
41 Mono.Linker 287 293 145 142 148
42 MySql.Data.MySqlClient 48 48
43 Newtonsoft.Json 91 73 18
44 ServiceStack 194 7 27 75 92 7
45 SourceGenerators 5 5
46 System 54 47 10313 10818 6 5 5 4 1 33 2 6 15 17 4 3 5351 5511 4962 5307
47 Windows.Security.Cryptography.Core 1 1

View File

@@ -8,7 +8,7 @@ C# framework & library support
Framework / library,Package,Flow sources,Taint & value steps,Sinks (total),`CWE-079` :sub:`Cross-site scripting`
`ServiceStack <https://servicestack.net/>`_,"``ServiceStack.*``, ``ServiceStack``",,7,194,
System,"``System.*``, ``System``",47,10313,54,5
Others,"``Amazon.Lambda.APIGatewayEvents``, ``Amazon.Lambda.Core``, ``Dapper``, ``ILCompiler``, ``ILLink.RoslynAnalyzer``, ``ILLink.Shared``, ``ILLink.Tasks``, ``Internal.IL``, ``Internal.Pgo``, ``Internal.TypeSystem``, ``JsonToItemsTaskFactory``, ``Microsoft.Android.Build``, ``Microsoft.Apple.Build``, ``Microsoft.ApplicationBlocks.Data``, ``Microsoft.CSharp``, ``Microsoft.Diagnostics.Tools.Pgo``, ``Microsoft.DotNet.Build.Tasks``, ``Microsoft.EntityFrameworkCore``, ``Microsoft.Extensions.Caching.Distributed``, ``Microsoft.Extensions.Caching.Memory``, ``Microsoft.Extensions.Configuration``, ``Microsoft.Extensions.DependencyInjection``, ``Microsoft.Extensions.DependencyModel``, ``Microsoft.Extensions.Diagnostics.Metrics``, ``Microsoft.Extensions.FileProviders``, ``Microsoft.Extensions.FileSystemGlobbing``, ``Microsoft.Extensions.Hosting``, ``Microsoft.Extensions.Http``, ``Microsoft.Extensions.Logging``, ``Microsoft.Extensions.Options``, ``Microsoft.Extensions.Primitives``, ``Microsoft.Interop``, ``Microsoft.NET.Build.Tasks``, ``Microsoft.NET.Sdk.WebAssembly``, ``Microsoft.NET.WebAssembly.Webcil``, ``Microsoft.VisualBasic``, ``Microsoft.WebAssembly.Build.Tasks``, ``Microsoft.Win32``, ``Mono.Linker``, ``MySql.Data.MySqlClient``, ``Newtonsoft.Json``, ``SourceGenerators``, ``Windows.Security.Cryptography.Core``",57,1848,148,
Totals,,104,12168,396,5
System,"``System.*``, ``System``",47,10818,54,5
Others,"``Amazon.Lambda.APIGatewayEvents``, ``Amazon.Lambda.Core``, ``Dapper``, ``ILCompiler``, ``ILLink.RoslynAnalyzer``, ``ILLink.Shared``, ``ILLink.Tasks``, ``Internal.IL``, ``Internal.Pgo``, ``Internal.TypeSystem``, ``JsonToItemsTaskFactory``, ``Microsoft.Android.Build``, ``Microsoft.Apple.Build``, ``Microsoft.ApplicationBlocks.Data``, ``Microsoft.CSharp``, ``Microsoft.Diagnostics.Tools.Pgo``, ``Microsoft.DotNet.Build.Tasks``, ``Microsoft.DotNet.PlatformAbstractions``, ``Microsoft.EntityFrameworkCore``, ``Microsoft.Extensions.Caching.Distributed``, ``Microsoft.Extensions.Caching.Memory``, ``Microsoft.Extensions.Configuration``, ``Microsoft.Extensions.DependencyInjection``, ``Microsoft.Extensions.DependencyModel``, ``Microsoft.Extensions.Diagnostics.Metrics``, ``Microsoft.Extensions.FileProviders``, ``Microsoft.Extensions.FileSystemGlobbing``, ``Microsoft.Extensions.Hosting``, ``Microsoft.Extensions.Http``, ``Microsoft.Extensions.Logging``, ``Microsoft.Extensions.Options``, ``Microsoft.Extensions.Primitives``, ``Microsoft.Interop``, ``Microsoft.NET.Build.Tasks``, ``Microsoft.NET.Sdk.WebAssembly``, ``Microsoft.NET.WebAssembly.Webcil``, ``Microsoft.VisualBasic``, ``Microsoft.WebAssembly.Build.Tasks``, ``Microsoft.Win32``, ``Mono.Linker``, ``MySql.Data.MySqlClient``, ``Newtonsoft.Json``, ``SourceGenerators``, ``Windows.Security.Cryptography.Core``",57,2068,148,
Totals,,104,12893,396,5

View File

@@ -127,21 +127,21 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
///
/// Example:
/// "project": {
// "version": "1.0.0",
// "frameworks": {
// "net7.0": {
// "frameworkReferences": {
// "Microsoft.AspNetCore.App": {
// "privateAssets": "none"
// },
// "Microsoft.NETCore.App": {
// "privateAssets": "all"
// }
// }
// }
// }
// }
//
/// "version": "1.0.0",
/// "frameworks": {
/// "net7.0": {
/// "frameworkReferences": {
/// "Microsoft.AspNetCore.App": {
/// "privateAssets": "none"
/// },
/// "Microsoft.NETCore.App": {
/// "privateAssets": "all"
/// }
/// }
/// }
/// }
/// }
///
/// Adds the following dependencies
/// Paths: {
/// "microsoft.aspnetcore.app.ref",

View File

@@ -14,7 +14,7 @@ codeql_csharp_library(
nowarn = ["CA1822"],
visibility = ["//csharp:__subpackages__"],
deps = [
"//csharp/extractor/Semmle.Extraction",
"//csharp/extractor/Semmle.Extraction.CSharp",
"//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 = "8.0.101";
public const string LatestDotNetSdkVersion = "9.0.100";
/// <summary>
/// Returns a script for downloading relevant versions of the

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