llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang-ssaf
Author: Aviral Goel (aviralg)
<details>
<summary>Changes</summary>
This commit introduces the following changes:
- Add `TargetTriple` field to `TUSummary`, `LUSummary`, and their encodings.
- Frontend captures the triple from `CompilerInstance::getTarget()` when
extracting a TU summary.
- JSON format reads/writes a `target_triple` field at the root of each summary;
reader rejects strings not in `llvm::Triple::normalize` form.
- All TU/LU JSON test inputs/outputs and unit tests updated to include the new
field.
`clang-ssaf-linker` uses a hardcoded `x86_64-unknown-linux-gnu` for the link
unit; surfacing the triple through the tool will be handled in a follow-up PR.
rdar://179403011
---
Patch is 127.24 KiB, truncated to 20.00 KiB below, full version:
https://github.com/llvm/llvm-project/pull/204259.diff
183 Files Affected:
- (modified)
clang/include/clang/ScalableStaticAnalysisFramework/Core/EntityLinker/EntityLinker.h
(+5-2)
- (modified)
clang/include/clang/ScalableStaticAnalysisFramework/Core/EntityLinker/LUSummary.h
(+7-2)
- (modified)
clang/include/clang/ScalableStaticAnalysisFramework/Core/EntityLinker/LUSummaryEncoding.h
(+7-2)
- (modified)
clang/include/clang/ScalableStaticAnalysisFramework/Core/EntityLinker/TUSummaryEncoding.h
(+9-2)
- (modified)
clang/include/clang/ScalableStaticAnalysisFramework/Core/Model/PrivateFieldNames.def
(+4)
- (modified)
clang/include/clang/ScalableStaticAnalysisFramework/Core/TUSummary/TUSummary.h
(+7-2)
- (modified) clang/lib/ScalableStaticAnalysisFramework/Analyses/CMakeLists.txt
(+1)
- (modified) clang/lib/ScalableStaticAnalysisFramework/Core/CMakeLists.txt (+1)
- (modified)
clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/JSONFormatImpl.cpp
(+16)
- (modified)
clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/JSONFormatImpl.h
(+13)
- (modified)
clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/LUSummary.cpp
(+24-1)
- (modified)
clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/LUSummaryEncoding.cpp
(+24-1)
- (modified)
clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/TUSummary.cpp
(+24-1)
- (modified)
clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/TUSummaryEncoding.cpp
(+24-1)
- (modified) clang/lib/ScalableStaticAnalysisFramework/Frontend/CMakeLists.txt
(+1)
- (modified)
clang/lib/ScalableStaticAnalysisFramework/Frontend/TUSummaryExtractorFrontendAction.cpp
(+10-5)
- (modified) clang/lib/ScalableStaticAnalysisFramework/Tool/CMakeLists.txt (+1)
- (modified)
clang/test/Analysis/Scalable/PointerFlow/Inputs/tu-summary-bad-array.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/PointerFlow/Inputs/tu-summary-bad-summary.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/PointerFlow/Inputs/tu-summary-no-key.json (+2-1)
- (modified) clang/test/Analysis/Scalable/PointerFlow/Inputs/tu-summary.json
(+1)
- (modified)
clang/test/Analysis/Scalable/UnsafeBufferUsage/Inputs/tu-summary-bad-element.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/UnsafeBufferUsage/Inputs/tu-summary-bad-ptr-level.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/UnsafeBufferUsage/Inputs/tu-summary-no-key.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/UnsafeBufferUsage/Inputs/tu-summary.json (+1)
- (modified)
clang/test/Analysis/Scalable/ssaf-analyzer/Inputs/lu-tags-only.json (+2-1)
- (modified) clang/test/Analysis/Scalable/ssaf-analyzer/Inputs/lu.json (+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/Inputs/CallGraph/invalid-direct-callee-element.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/Inputs/CallGraph/invalid-direct-callee-id.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/Inputs/CallGraph/missing-def-col.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/Inputs/CallGraph/missing-def-file.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/Inputs/CallGraph/missing-def-line.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/Inputs/CallGraph/missing-def.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/Inputs/CallGraph/missing-direct-callees.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/Inputs/CallGraph/missing-pretty-name.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/Inputs/CallGraph/missing-virtual-callees.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/data-element-not-object.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/data-entry-missing-data.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/data-entry-missing-summary-name.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/data-not-array.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/duplicate-entity-id-in-data-map.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/duplicate-entity.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/duplicate-summary-name.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/entity-data-element-not-object.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/entity-data-missing-entity-id.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/entity-data-missing-entity-summary.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/entity-id-not-uint64.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/entity-name-missing-namespace.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/entity-name-missing-suffix.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/entity-name-missing-usr.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/id-table-element-not-object.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/id-table-entry-id-not-uint64.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/id-table-entry-missing-id.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/id-table-entry-missing-name.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/id-table-not-array.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/linkage-table-duplicate-id.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/linkage-table-element-not-object.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/linkage-table-entry-id-not-uint64.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/linkage-table-entry-linkage-invalid-type.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/linkage-table-entry-linkage-missing-type.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/linkage-table-entry-missing-id.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/linkage-table-entry-missing-linkage.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/linkage-table-extra-id.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/linkage-table-missing-id.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/linkage-table-not-array.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/lu-namespace-element-invalid-kind.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/lu-namespace-element-missing-kind.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/lu-namespace-element-missing-name.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/lu-namespace-element-not-object.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/lu-namespace-not-array.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/missing-data.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/missing-id-table.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/missing-linkage-table.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/missing-lu-namespace.json
(+2-1)
- (added)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/missing-target-triple.json
(+11)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/namespace-element-invalid-kind.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/namespace-element-missing-kind.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/namespace-element-missing-name.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/namespace-element-not-object.json
(+2-1)
- (added)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/not-normalized-target-triple.json
(+12)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/pairs-element-not-object.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/pairs-invalid-first-field.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/pairs-invalid-pairs-field-type.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/pairs-invalid-second-field.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/pairs-missing-first-field.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/pairs-missing-pairs-field.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/pairs-missing-second-field.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/read-entity-summary-no-format-info.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/rt-empty-data-entry.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/rt-empty-namespace.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/rt-linkage-external.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/rt-linkage-internal.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/rt-linkage-multiple.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/rt-linkage-none.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/rt-multiple-namespace-elements.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/rt-single-namespace-element.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/LUSummary/Inputs/rt-two-summary-types.json
(+2-1)
- (modified) clang/test/Analysis/Scalable/ssaf-format/LUSummary/top-level.test
(+15)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/data-element-not-object.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/data-entry-missing-data.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/data-entry-missing-summary-name.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/data-not-array.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/duplicate-entity-id-in-data-map.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/duplicate-entity.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/duplicate-summary-name.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/entity-data-element-not-object.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/entity-data-missing-entity-id.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/entity-data-missing-entity-summary.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/entity-id-not-uint64.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/entity-name-missing-suffix.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/entity-name-missing-usr.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/id-table-element-not-object.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/id-table-entry-id-not-uint64.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/id-table-entry-missing-id.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/id-table-entry-missing-name.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/id-table-not-array.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/invalid-kind.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/linkage-table-duplicate-id.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/linkage-table-element-not-object.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/linkage-table-entry-id-not-uint64.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/linkage-table-entry-linkage-invalid-type.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/linkage-table-entry-linkage-missing-type.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/linkage-table-entry-missing-id.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/linkage-table-entry-missing-linkage.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/linkage-table-extra-id.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/linkage-table-missing-id.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/linkage-table-not-array.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/missing-data.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/missing-id-table.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/missing-kind.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/missing-linkage-table.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/missing-name.json
(+2-1)
- (added)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/missing-target-triple.json
(+9)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/missing-tu-namespace.json
(+1)
- (added)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/not-normalized-target-triple.json
(+10)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/pairs-element-not-object.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/pairs-invalid-first-field.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/pairs-invalid-pairs-field-type.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/pairs-invalid-second-field.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/pairs-missing-first-field.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/pairs-missing-pairs-field.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/pairs-missing-second-field.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/read-entity-summary-no-format-info.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/rt-empty-data-entry.json
(+1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/rt-empty.json (+1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/rt-link-unit.json
(+1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/rt-linkage-external.json
(+1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/rt-linkage-internal.json
(+1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/rt-linkage-multiple.json
(+1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/rt-linkage-none.json
(+1)
- (modified)
clang/test/Analysis/Scalable/ssaf-format/TUSummary/Inputs/rt-two-summary-types.json
(+1)
- (modified) clang/test/Analysis/Scalable/ssaf-format/TUSummary/top-level.test
(+15)
- (modified) clang/test/Analysis/Scalable/ssaf-linker/Inputs/tu-1.json (+2-1)
- (modified) clang/test/Analysis/Scalable/ssaf-linker/Inputs/tu-2.json (+2-1)
- (modified) clang/test/Analysis/Scalable/ssaf-linker/Inputs/tu-empty.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-linker/Inputs/tu-invalid-entity-id-multikey.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-linker/Inputs/tu-invalid-entity-id-ref.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-linker/Inputs/tu-invalid-entity-id-value.json
(+2-1)
- (modified)
clang/test/Analysis/Scalable/ssaf-linker/Inputs/tu-missing-fields.json (+2-1)
- (modified) clang/test/Analysis/Scalable/ssaf-linker/Outputs/lu-1+2.json
(+2-1)
- (modified) clang/test/Analysis/Scalable/ssaf-linker/Outputs/lu-1.json (+2-1)
- (modified) clang/test/Analysis/Scalable/ssaf-linker/Outputs/lu-2.json (+2-1)
- (modified) clang/test/Analysis/Scalable/ssaf-linker/Outputs/lu-empty.json
(+2-1)
- (modified) clang/tools/clang-ssaf-analyzer/CMakeLists.txt (+1)
- (modified) clang/tools/clang-ssaf-format/CMakeLists.txt (+1)
- (modified) clang/tools/clang-ssaf-linker/CMakeLists.txt (+1)
- (modified) clang/tools/clang-ssaf-linker/SSAFLinker.cpp (+5-2)
- (modified)
clang/unittests/ScalableStaticAnalysisFramework/Analyses/CallGraph/CallGraphExtractorTest.cpp
(+1)
- (modified)
clang/unittests/ScalableStaticAnalysisFramework/Analyses/PointerFlow/PointerFlowTest.cpp
(+2-1)
- (modified)
clang/unittests/ScalableStaticAnalysisFramework/Analyses/PointerFlow/PointerFlowWPATest.cpp
(+2-1)
- (modified)
clang/unittests/ScalableStaticAnalysisFramework/Analyses/UnsafeBufferUsage/UnsafeBufferUsageTest.cpp
(+2-1)
- (modified)
clang/unittests/ScalableStaticAnalysisFramework/Analyses/UnsafeBufferUsage/UnsafeBufferUsageWPATest.cpp
(+2-1)
- (modified) clang/unittests/ScalableStaticAnalysisFramework/CMakeLists.txt
(+1)
- (modified)
clang/unittests/ScalableStaticAnalysisFramework/EntityLinkerTest.cpp (+12-9)
- (modified) clang/unittests/ScalableStaticAnalysisFramework/LUSummaryTest.cpp
(+1-1)
- (modified)
clang/unittests/ScalableStaticAnalysisFramework/Registries/MockSerializationFormat.cpp
(+1-1)
- (modified)
clang/unittests/ScalableStaticAnalysisFramework/Registries/SummaryExtractorRegistryTest.cpp
(+1)
- (modified)
clang/unittests/ScalableStaticAnalysisFramework/Serialization/JSONFormatTest/LUSummaryTest.cpp
(+7-5)
- (modified)
clang/unittests/ScalableStaticAnalysisFramework/Serialization/JSONFormatTest/TUSummaryTest.cpp
(+7-2)
- (modified)
clang/unittests/ScalableStaticAnalysisFramework/SummaryData/SummaryDataTest.cpp
(+2-1)
- (modified)
clang/unittests/ScalableStaticAnalysisFramework/TUSummaryBuilderTest.cpp (+1)
- (modified)
clang/unittests/ScalableStaticAnalysisFramework/WholeProgramAnalysis/AnalysisDriverTest.cpp
(+2-1)
- (modified)
clang/unittests/ScalableStaticAnalysisFramework/WholeProgramAnalysis/UnsafeBufferReachableAnalysisTest.cpp
(+2-1)
``````````diff
diff --git
a/clang/include/clang/ScalableStaticAnalysisFramework/Core/EntityLinker/EntityLinker.h
b/clang/include/clang/ScalableStaticAnalysisFramework/Core/EntityLinker/EntityLinker.h
index 12a42df213e2a..ed02560004632 100644
---
a/clang/include/clang/ScalableStaticAnalysisFramework/Core/EntityLinker/EntityLinker.h
+++
b/clang/include/clang/ScalableStaticAnalysisFramework/Core/EntityLinker/EntityLinker.h
@@ -16,6 +16,7 @@
#include
"clang/ScalableStaticAnalysisFramework/Core/EntityLinker/LUSummaryEncoding.h"
#include "llvm/Support/Error.h"
+#include "llvm/TargetParser/Triple.h"
#include <map>
#include <memory>
#include <set>
@@ -32,9 +33,11 @@ class EntityLinker {
public:
/// Constructs an EntityLinker to link TU summaries into a LU summary.
///
+ /// \param TargetTriple The target triple of the link unit. Every linked TU
+ /// must report the same triple.
/// \param LUNamespace The namespace identifying this link unit.
- explicit EntityLinker(NestedBuildNamespace LUNamespace)
- : Output(std::move(LUNamespace)) {}
+ EntityLinker(llvm::Triple TargetTriple, NestedBuildNamespace LUNamespace)
+ : Output(std::move(TargetTriple), std::move(LUNamespace)) {}
/// Links a TU summary into a LU summary.
///
diff --git
a/clang/include/clang/ScalableStaticAnalysisFramework/Core/EntityLinker/LUSummary.h
b/clang/include/clang/ScalableStaticAnalysisFramework/Core/EntityLinker/LUSummary.h
index 372f689a00f4e..0e042f783c501 100644
---
a/clang/include/clang/ScalableStaticAnalysisFramework/Core/EntityLinker/LUSummary.h
+++
b/clang/include/clang/ScalableStaticAnalysisFramework/Core/EntityLinker/LUSummary.h
@@ -20,6 +20,7 @@
#include "clang/ScalableStaticAnalysisFramework/Core/Model/EntityLinkage.h"
#include "clang/ScalableStaticAnalysisFramework/Core/Model/SummaryName.h"
#include "clang/ScalableStaticAnalysisFramework/Core/TUSummary/EntitySummary.h"
+#include "llvm/TargetParser/Triple.h"
#include <map>
#include <memory>
@@ -36,6 +37,9 @@ class LUSummary {
friend class SerializationFormat;
friend class TestFixture;
+ /// Target triple of the link unit.
+ llvm::Triple TargetTriple;
+
NestedBuildNamespace LUNamespace;
EntityIdTable IdTable;
@@ -46,8 +50,9 @@ class LUSummary {
Data;
public:
- explicit LUSummary(NestedBuildNamespace LUNamespace)
- : LUNamespace(std::move(LUNamespace)) {}
+ LUSummary(llvm::Triple TargetTriple, NestedBuildNamespace LUNamespace)
+ : TargetTriple(std::move(TargetTriple)),
+ LUNamespace(std::move(LUNamespace)) {}
const NestedBuildNamespace &getNamespace() const { return LUNamespace; }
};
diff --git
a/clang/include/clang/ScalableStaticAnalysisFramework/Core/EntityLinker/LUSummaryEncoding.h
b/clang/include/clang/ScalableStaticAnalysisFramework/Core/EntityLinker/LUSummaryEncoding.h
index a4248a4d1e79d..f7fcd903b5c20 100644
---
a/clang/include/clang/ScalableStaticAnalysisFramework/Core/EntityLinker/LUSummaryEncoding.h
+++
b/clang/include/clang/ScalableStaticAnalysisFramework/Core/EntityLinker/LUSummaryEncoding.h
@@ -20,6 +20,7 @@
#include "clang/ScalableStaticAnalysisFramework/Core/Model/EntityIdTable.h"
#include "clang/ScalableStaticAnalysisFramework/Core/Model/EntityLinkage.h"
#include "clang/ScalableStaticAnalysisFramework/Core/Model/SummaryName.h"
+#include "llvm/TargetParser/Triple.h"
#include <map>
#include <memory>
@@ -35,6 +36,9 @@ class LUSummaryEncoding {
friend class SerializationFormat;
friend class TestFixture;
+ // Target triple of the link unit.
+ llvm::Triple TargetTriple;
+
// The namespace identifying this link unit.
NestedBuildNamespace LUNamespace;
@@ -50,8 +54,9 @@ class LUSummaryEncoding {
Data;
public:
- explicit LUSummaryEncoding(NestedBuildNamespace LUNamespace)
- : LUNamespace(std::move(LUNamespace)) {}
+ LUSummaryEncoding(llvm::Triple TargetTriple, NestedBuildNamespace
LUNamespace)
+ : TargetTriple(std::move(TargetTriple)),
+ LUNamespace(std::move(LUNamespace)) {}
};
} // namespace clang::ssaf
diff --git
a/clang/include/clang/ScalableStaticAnalysisFramework/Core/EntityLinker/TUSummaryEncoding.h
b/clang/include/clang/ScalableStaticAnalysisFramework/Core/EntityLinker/TUSummaryEncoding.h
index 4fcf91d1c0423..5cf3e8283874f 100644
---
a/clang/include/clang/ScalableStaticAnalysisFramework/Core/EntityLinker/TUSummaryEncoding.h
+++
b/clang/include/clang/ScalableStaticAnalysisFramework/Core/EntityLinker/TUSummaryEncoding.h
@@ -20,6 +20,7 @@
#include "clang/ScalableStaticAnalysisFramework/Core/Model/EntityIdTable.h"
#include "clang/ScalableStaticAnalysisFramework/Core/Model/EntityLinkage.h"
#include "clang/ScalableStaticAnalysisFramework/Core/Model/SummaryName.h"
+#include "llvm/TargetParser/Triple.h"
#include <map>
#include <memory>
@@ -36,6 +37,9 @@ class TUSummaryEncoding {
friend class SerializationFormat;
friend class TestFixture;
+ // Target triple of the translation unit.
+ llvm::Triple TargetTriple;
+
// The namespace identifying this translation unit.
BuildNamespace TUNamespace;
@@ -51,8 +55,11 @@ class TUSummaryEncoding {
Data;
public:
- explicit TUSummaryEncoding(BuildNamespace TUNamespace)
- : TUNamespace(std::move(TUNamespace)) {}
+ TUSummaryEncoding(llvm::Triple TargetTriple, BuildNamespace TUNamespace)
+ : TargetTriple(std::move(TargetTriple)),
+ TUNamespace(std::move(TUNamespace)) {}
+
+ const llvm::Triple &getTargetTriple() const { return TargetTriple; }
};
} // namespace clang::ssaf
diff --git
a/clang/include/clang/ScalableStaticAnalysisFramework/Core/Model/PrivateFieldNames.def
b/clang/include/clang/ScalableStaticAnalysisFramework/Core/Model/PrivateFieldNames.def
index c8d4b1cecf0ee..44931026ba428 100644
---
a/clang/include/clang/ScalableStaticAnalysisFramework/Core/Model/PrivateFieldNames.def
+++
b/clang/include/clang/ScalableStaticAnalysisFramework/Core/Model/PrivateFieldNames.def
@@ -25,19 +25,23 @@ FIELD(EntityLinkage, Linkage)
FIELD(EntityName, Namespace)
FIELD(EntityName, Suffix)
FIELD(EntityName, USR)
+FIELD(LUSummary, TargetTriple)
FIELD(LUSummary, Data)
FIELD(LUSummary, IdTable)
FIELD(LUSummary, LinkageTable)
FIELD(LUSummary, LUNamespace)
+FIELD(LUSummaryEncoding, TargetTriple)
FIELD(LUSummaryEncoding, Data)
FIELD(LUSummaryEncoding, IdTable)
FIELD(LUSummaryEncoding, LinkageTable)
FIELD(LUSummaryEncoding, LUNamespace)
FIELD(NestedBuildNamespace, Namespaces)
+FIELD(TUSummary, TargetTriple)
FIELD(TUSummary, Data)
FIELD(TUSummary, IdTable)
FIELD(TUSummary, LinkageTable)
FIELD(TUSummary, TUNamespace)
+FIELD(TUSummaryEncoding, TargetTriple)
FIELD(TUSummaryEncoding, Data)
FIELD(TUSummaryEncoding, IdTable)
FIELD(TUSummaryEncoding, LinkageTable)
diff --git
a/clang/include/clang/ScalableStaticAnalysisFramework/Core/TUSummary/TUSummary.h
b/clang/include/clang/ScalableStaticAnalysisFramework/Core/TUSummary/TUSummary.h
index 1609e68257d57..c5cadce439ba9 100644
---
a/clang/include/clang/ScalableStaticAnalysisFramework/Core/TUSummary/TUSummary.h
+++
b/clang/include/clang/ScalableStaticAnalysisFramework/Core/TUSummary/TUSummary.h
@@ -15,6 +15,7 @@
#include "clang/ScalableStaticAnalysisFramework/Core/Model/EntityLinkage.h"
#include "clang/ScalableStaticAnalysisFramework/Core/Model/SummaryName.h"
#include "clang/ScalableStaticAnalysisFramework/Core/TUSummary/EntitySummary.h"
+#include "llvm/TargetParser/Triple.h"
#include <map>
#include <memory>
@@ -22,6 +23,9 @@ namespace clang::ssaf {
/// Data extracted for a given translation unit and for a given set of
analyses.
class TUSummary {
+ /// Target triple of the translation unit.
+ llvm::Triple TargetTriple;
+
/// Identifies the translation unit.
BuildNamespace TUNamespace;
@@ -33,8 +37,9 @@ class TUSummary {
Data;
public:
- explicit TUSummary(BuildNamespace TUNamespace)
- : TUNamespace(std::move(TUNamespace)) {}
+ TUSummary(llvm::Triple TargetTriple, BuildNamespace TUNamespace)
+ : TargetTriple(std::move(TargetTriple)),
+ TUNamespace(std::move(TUNamespace)) {}
friend class SerializationFormat;
friend class TestFixture;
diff --git a/clang/lib/ScalableStaticAnalysisFramework/Analyses/CMakeLists.txt
b/clang/lib/ScalableStaticAnalysisFramework/Analyses/CMakeLists.txt
index 3f3d3d02ff644..2bd7c925fc5b9 100644
--- a/clang/lib/ScalableStaticAnalysisFramework/Analyses/CMakeLists.txt
+++ b/clang/lib/ScalableStaticAnalysisFramework/Analyses/CMakeLists.txt
@@ -1,5 +1,6 @@
set(LLVM_LINK_COMPONENTS
Support
+ TargetParser
)
add_clang_library(clangScalableStaticAnalysisFrameworkAnalyses
diff --git a/clang/lib/ScalableStaticAnalysisFramework/Core/CMakeLists.txt
b/clang/lib/ScalableStaticAnalysisFramework/Core/CMakeLists.txt
index 2c43d645f7e74..5085a9bc562e0 100644
--- a/clang/lib/ScalableStaticAnalysisFramework/Core/CMakeLists.txt
+++ b/clang/lib/ScalableStaticAnalysisFramework/Core/CMakeLists.txt
@@ -1,5 +1,6 @@
set(LLVM_LINK_COMPONENTS
Support
+ TargetParser
)
add_clang_library(clangScalableStaticAnalysisFrameworkCore
diff --git
a/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/JSONFormatImpl.cpp
b/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/JSONFormatImpl.cpp
index 12a2efe20092f..5bd37ad5113d5 100644
---
a/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/JSONFormatImpl.cpp
+++
b/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/JSONFormatImpl.cpp
@@ -10,6 +10,7 @@
#include
"clang/ScalableStaticAnalysisFramework/Core/Serialization/SerializationFormatRegistry.h"
#include "llvm/Support/Registry.h"
+#include "llvm/TargetParser/Triple.h"
using namespace clang;
using namespace ssaf;
@@ -410,6 +411,21 @@ llvm::StringRef entityLinkageTypeToJSON(EntityLinkageType
LT) {
return entityLinkageTypeToString(LT);
}
+//----------------------------------------------------------------------------
+// TargetTriple
+//----------------------------------------------------------------------------
+
+llvm::Error validateNormalizedTargetTriple(llvm::StringRef Triple) {
+ std::string Normalized = llvm::Triple::normalize(Triple);
+ if (Normalized != Triple) {
+ return ErrorBuilder::create(std::errc::invalid_argument,
+ ErrorMessages::TargetTripleNotNormalized,
+ Triple, Normalized)
+ .build();
+ }
+ return llvm::Error::success();
+}
+
//----------------------------------------------------------------------------
// EntityLinkage
//----------------------------------------------------------------------------
diff --git
a/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/JSONFormatImpl.h
b/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/JSONFormatImpl.h
index 31a605efe90a5..6903b7725c1b0 100644
---
a/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/JSONFormatImpl.h
+++
b/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/JSONFormatImpl.h
@@ -117,6 +117,9 @@ inline constexpr const char *FailedToReadEntityIdObject =
inline constexpr const char *FailedToPatchEntityIdNotInTable =
"failed to patch EntityId: '{0}' not found in entity resolution table";
+inline constexpr const char *TargetTripleNotNormalized =
+ "target triple '{0}' is not in normalized form (expected '{1}')";
+
} // namespace ErrorMessages
//----------------------------------------------------------------------------
@@ -167,6 +170,16 @@ entityLinkageTypeFromJSON(llvm::StringRef
EntityLinkageTypeStr);
// Provided for consistency with respect to rest of the codebase.
llvm::StringRef entityLinkageTypeToJSON(EntityLinkageType LT);
+//----------------------------------------------------------------------------
+// TargetTriple helpers
+//----------------------------------------------------------------------------
+
+/// Validates that \p Triple is a target triple string in normalized form.
+/// Returns success if \p Triple equals \c llvm::Triple::normalize(Triple),
+/// otherwise returns an \c invalid_argument error describing the expected
+/// normalized form.
+llvm::Error validateNormalizedTargetTriple(llvm::StringRef Triple);
+
} // namespace clang::ssaf
#endif //
LLVM_CLANG_LIB_SCALABLESTATICANALYSISFRAMEWORK_CORE_SERIALIZATION_JSONFORMAT_JSONFORMATIMPL_H
diff --git
a/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/LUSummary.cpp
b/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/LUSummary.cpp
index 1137499ba28c9..369334342790a 100644
---
a/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/LUSummary.cpp
+++
b/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/LUSummary.cpp
@@ -9,6 +9,7 @@
#include "JSONFormatImpl.h"
#include "clang/ScalableStaticAnalysisFramework/Core/EntityLinker/LUSummary.h"
+#include "llvm/TargetParser/Triple.h"
#include <set>
@@ -37,6 +38,25 @@ llvm::Expected<LUSummary>
JSONFormat::readLUSummary(llvm::StringRef Path) {
const Object &RootObject = *RootObjectPtr;
+ auto OptTargetTriple = RootObject.getString("target_triple");
+ if (!OptTargetTriple) {
+ return ErrorBuilder::create(std::errc::invalid_argument,
+ ErrorMessages::FailedToReadObjectAtField,
+ "TargetTriple", "target_triple", "string")
+ .context(ErrorMessages::ReadingFromFile, "LUSummary", Path)
+ .build();
+ }
+
+ if (auto Err = validateNormalizedTargetTriple(*OptTargetTriple)) {
+ return ErrorBuilder::wrap(std::move(Err))
+ .context(ErrorMessages::ReadingFromField, "TargetTriple",
+ "target_triple")
+ .context(ErrorMessages::ReadingFromFile, "LUSummary", Path)
+ .build();
+ }
+
+ llvm::Triple T(*OptTargetTriple);
+
const Array *LUNamespaceArray = RootObject.getArray("lu_namespace");
if (!LUNamespaceArray) {
return ErrorBuilder::create(std::errc::invalid_argument,
@@ -55,7 +75,7 @@ llvm::Expected<LUSummary>
JSONFormat::readLUSummary(llvm::StringRef Path) {
.build();
}
- LUSummary Summary(std::move(*ExpectedLUNamespace));
+ LUSummary Summary(std::move(T), std::move(*ExpectedLUNamespace));
{
const Array *IdTableArray = RootObject.getArray("id_table");
@@ -138,6 +158,9 @@ llvm::Error JSONFormat::writeLUSummary(const LUSummary &S,
llvm::StringRef Path) {
Object RootObject;
+ RootObject["target_triple"] =
+ llvm::Triple::normalize(getTargetTriple(S).str());
+
RootObject["lu_namespace"] = nestedBuildNamespaceToJSON(getLUNamespace(S));
RootObject["id_table"] = luEntityIdTableToJSON(getIdTable(S));
diff --git
a/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/LUSummaryEncoding.cpp
b/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/LUSummaryEncoding.cpp
index e748b021d1666..9cd458e8ab09e 100644
---
a/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/LUSummaryEncoding.cpp
+++
b/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/LUSummaryEncoding.cpp
@@ -9,6 +9,7 @@
#include "JSONFormatImpl.h"
#include
"clang/ScalableStaticAnalysisFramework/Core/EntityLinker/LUSummaryEncoding.h"
+#include "llvm/TargetParser/Triple.h"
#include <set>
@@ -38,6 +39,25 @@ JSONFormat::readLUSummaryEncoding(llvm::StringRef Path) {
const Object &RootObject = *RootObjectPtr;
+ auto OptTargetTriple = RootObject.getString("target_triple");
+ if (!OptTargetTriple) {
+ return ErrorBuilder::create(std::errc::invalid_argument,
+ ErrorMessages::FailedToReadObjectAtField,
+ "TargetTriple", "target_triple", "string")
+ .context(ErrorMessages::ReadingFromFile, "LUSummary", Path)
+ .build();
+ }
+
+ if (auto Err = validateNormalizedTargetTriple(*OptTargetTriple)) {
+ return ErrorBuilder::wrap(std::move(Err))
+ .context(ErrorMessages::ReadingFromField, "TargetTriple",
+ "target_triple")
+ .context(ErrorMessages::ReadingFromFile, "LUSummary", Path)
+ .build();
+ }
+
+ llvm::Triple T(*OptTargetTriple);
+
const Array *LUNamespaceArray = RootObject.getArray("lu_namespace");
if (!LUNamespaceArray) {
return ErrorBuilder::create(std::errc::invalid_argument,
@@ -56,7 +76,7 @@ JSONFormat::readLUSummaryEncoding(llvm::StringRef Path) {
.build();
}
- LUSummaryEncoding Encoding(std::move(*ExpectedLUNamespace));
+ LUSummaryEncoding Encoding(std::move(T), std::move(*ExpectedLUNamespace));
{
const Array *IdTableArray = RootObject.getArray("id_table");
@@ -140,6 +160,9 @@ JSONFormat::writeLUSummaryEncoding(const LUSummaryEncoding
&SummaryEncoding,
llvm::StringRef Path) {
Object RootObject;
+ RootObject["target_triple"] =
+ llvm::Triple::normalize(getTargetTriple(SummaryEncoding).str());
+
RootObject["lu_namespace"] =
nestedBuildNamespaceToJSON(getLUNamespace(SummaryEncoding));
diff --git
a/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/TUSummary.cpp
b/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/TUSummary.cpp
index cc9460e956e7a..67b1dd4637689 100644
---
a/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/TUSummary.cpp
+++
b/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/TUSummary.cpp
@@ -9,6 +9,7 @@
#include "JSONFormatImpl.h"
#include "clang/ScalableStaticAnalysisFramework/Core/TUSummary/TUSummary.h"
+#include "llvm/TargetParser/Triple.h"
#include <set>
@@ -37,6 +38,25 @@ llvm::Expected<TUSummary>
JSONFormat::readTUSummary(llvm::StringRef Path) {
const Object &RootObject = *RootObjectPtr;
+ auto OptTargetTriple = RootObject.getString("target_triple");
+ if (!OptTargetTriple) {
+ return ErrorBuilder::create(std::errc::invalid_argument,
+ ErrorMessages::FailedToReadObjectAtField,
+ "TargetTriple", "target_triple", "string")
+ .context(ErrorMessages::ReadingFromFile, "TUSummary", Path)
+ .build();
+ }
+
+ if (auto Err = validateNormalizedTargetTriple(*OptTargetTriple)) {
+ return ErrorBuilder::wrap(std::move(Err))
+ .context(ErrorMessages::ReadingFromField, "TargetTriple",
+ "target_triple")
+ .context(ErrorMessages::ReadingFromFile, "TUSummary", Path)
+ .build();
+ }
+
+ llvm::Triple T(*OptTargetTriple);
+
const Object *TUNamespaceObject = RootObject.getObject("tu_namespace");
if (!TUNamespaceObject) {
return ErrorBuilder::create(std::errc::invalid_argument,
@@ -55,7 +75,7 @@ llvm::Expected<TUSummary>
JSONFormat::readTUSummary(llvm::StringRef Path) {
.build();
}
- TUSummary Summary(std::move(*ExpectedTUNamespace));
+ TUSummary Summary(std::move(T), std::move(*ExpectedTUNamespace));
{
const Array *IdTableArray = RootObject.getArray("id_table");
@@ -138,6 +158,9 @@ llvm::Error JSONFormat::writeTUSummary(const TUSummary &S,
llvm::StringRef Path) {
Object RootObject;
+ RootObject["target_triple"] =
+ llvm::Triple::normalize(getTargetTriple(S).str());
+
RootObject["tu_namespace"] = buildNamespaceToJSON(getTUNamespace(S));
RootObject["id_table"] = tuEntityIdTableToJSON(getIdTable(S));
diff --git
a/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/TUSummaryEncoding.cpp
b/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/TUSummaryEncoding.cpp
index b16d70b6b0416..b4ebac02703ba 100644
---
a/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/TUSummaryEncoding.cpp
+++
b/clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/TUSummaryEncoding.cpp
@@ -9,6 +9,7 @@
#include "JSONFormatImpl.h"
#include
"clang/ScalableStaticAnalysisFramework/Core/EntityLinker/TUSummaryEncoding.h"
+#include "llvm/TargetParser/Triple.h"
#include <set>
@@ -38,6 +39,25 @@ JSONFormat::readTUSummaryEncoding(llvm::StringRef Path) {
const Object &RootObject = *RootObjectPtr;
+ auto OptTargetTriple = RootObject.getString("target_triple");
+ if (!OptTargetTriple) {
+ return ErrorBuilder::create(std::errc::invalid_argument,
+ ...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/204259
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits