Author: Charusso Date: 2021-04-05T19:20:43+02:00 New Revision: 9b3df78b4c2ab7a7063e532165492e1ffa38d401
URL: https://github.com/llvm/llvm-project/commit/9b3df78b4c2ab7a7063e532165492e1ffa38d401 DIFF: https://github.com/llvm/llvm-project/commit/9b3df78b4c2ab7a7063e532165492e1ffa38d401.diff LOG: [analyzer] DynamicSize: Rename 'size' to 'extent' Added: clang/include/clang/StaticAnalyzer/Core/PathSensitive/DynamicExtent.h clang/lib/StaticAnalyzer/Core/DynamicExtent.cpp Modified: clang/lib/StaticAnalyzer/Checkers/ArrayBoundChecker.cpp clang/lib/StaticAnalyzer/Checkers/ArrayBoundCheckerV2.cpp clang/lib/StaticAnalyzer/Checkers/BuiltinFunctionChecker.cpp clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp clang/lib/StaticAnalyzer/Checkers/CastSizeChecker.cpp clang/lib/StaticAnalyzer/Checkers/CheckPlacementNew.cpp clang/lib/StaticAnalyzer/Checkers/ExprInspectionChecker.cpp clang/lib/StaticAnalyzer/Checkers/MPI-Checker/MPIChecker.cpp clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp clang/lib/StaticAnalyzer/Checkers/ReturnPointerRangeChecker.cpp clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp clang/lib/StaticAnalyzer/Checkers/UndefResultChecker.cpp clang/lib/StaticAnalyzer/Checkers/VLASizeChecker.cpp clang/lib/StaticAnalyzer/Core/CMakeLists.txt clang/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp clang/lib/StaticAnalyzer/Core/MemRegion.cpp clang/lib/StaticAnalyzer/Core/RegionStore.cpp Removed: clang/include/clang/StaticAnalyzer/Core/PathSensitive/DynamicSize.h clang/lib/StaticAnalyzer/Core/DynamicSize.cpp ################################################################################ diff --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/DynamicExtent.h b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/DynamicExtent.h new file mode 100644 index 000000000000..cfd7aa9664b6 --- /dev/null +++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/DynamicExtent.h @@ -0,0 +1,59 @@ +//===- DynamicExtent.h - Dynamic extent related APIs ------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file defines APIs that track and query dynamic extent information. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_DYNAMICEXTENT_H +#define LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_DYNAMICEXTENT_H + +#include "clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h" +#include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h" +#include "clang/StaticAnalyzer/Core/PathSensitive/ProgramStateTrait.h" +#include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState_Fwd.h" +#include "clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h" + +namespace clang { +namespace ento { + +/// \returns The stored dynamic extent for the region \p MR. +DefinedOrUnknownSVal getDynamicExtent(ProgramStateRef State, + const MemRegion *MR, SValBuilder &SVB); + +/// \returns The element extent of the type \p Ty. +DefinedOrUnknownSVal getElementExtent(QualType Ty, SValBuilder &SVB); + +/// \returns The stored element count of the region \p MR. +DefinedOrUnknownSVal getDynamicElementCount(ProgramStateRef State, + const MemRegion *MR, + SValBuilder &SVB, QualType Ty); + +/// Set the dynamic extent \p Extent of the region \p MR. +ProgramStateRef setDynamicExtent(ProgramStateRef State, const MemRegion *MR, + DefinedOrUnknownSVal Extent, SValBuilder &SVB); + +/// Get the dynamic extent for a symbolic value that represents a buffer. If +/// there is an offsetting to the underlying buffer we consider that too. +/// Returns with an SVal that represents the extent, this is Unknown if the +/// engine cannot deduce the extent. +/// E.g. +/// char buf[3]; +/// (buf); // extent is 3 +/// (buf + 1); // extent is 2 +/// (buf + 3); // extent is 0 +/// (buf + 4); // extent is -1 +/// +/// char *bufptr; +/// (bufptr) // extent is unknown +SVal getDynamicExtentWithOffset(ProgramStateRef State, SVal BufV); + +} // namespace ento +} // namespace clang + +#endif // LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_DYNAMICEXTENT_H diff --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/DynamicSize.h b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/DynamicSize.h deleted file mode 100644 index bad6a19cb9ff..000000000000 --- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/DynamicSize.h +++ /dev/null @@ -1,59 +0,0 @@ -//===- DynamicSize.h - Dynamic size related APIs ----------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -// -// This file defines APIs that track and query dynamic size information. -// -//===----------------------------------------------------------------------===// - -#ifndef LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_DYNAMICSIZE_H -#define LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_DYNAMICSIZE_H - -#include "clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h" -#include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h" -#include "clang/StaticAnalyzer/Core/PathSensitive/ProgramStateTrait.h" -#include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState_Fwd.h" -#include "clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h" - -namespace clang { -namespace ento { - -/// \returns The stored dynamic size for the region \p MR. -DefinedOrUnknownSVal getDynamicSize(ProgramStateRef State, const MemRegion *MR, - SValBuilder &SVB); - -/// \returns The element size of the type \p Ty. -DefinedOrUnknownSVal getElementSize(QualType Ty, SValBuilder &SVB); - -/// \returns The stored element count of the region \p MR. -DefinedOrUnknownSVal getDynamicElementCount(ProgramStateRef State, - const MemRegion *MR, - SValBuilder &SVB, QualType Ty); - -/// Set the dynamic size \p Size of the region \p MR. -ProgramStateRef setDynamicSize(ProgramStateRef State, const MemRegion *MR, - DefinedOrUnknownSVal Size, SValBuilder &SVB); - -/// Get the dynamic size for a symbolic value that represents a buffer. If -/// there is an offsetting to the underlying buffer we consider that too. -/// Returns with an SVal that represents the size, this is Unknown if the -/// engine cannot deduce the size. -/// E.g. -/// char buf[3]; -/// (buf); // size is 3 -/// (buf + 1); // size is 2 -/// (buf + 3); // size is 0 -/// (buf + 4); // size is -1 -/// -/// char *bufptr; -/// (bufptr) // size is unknown -SVal getDynamicSizeWithOffset(ProgramStateRef State, SVal BufV); - -} // namespace ento -} // namespace clang - -#endif // LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_DYNAMICSIZE_H diff --git a/clang/lib/StaticAnalyzer/Checkers/ArrayBoundChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/ArrayBoundChecker.cpp index 59163c1f31fa..605b11874ef5 100644 --- a/clang/lib/StaticAnalyzer/Checkers/ArrayBoundChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/ArrayBoundChecker.cpp @@ -16,7 +16,7 @@ #include "clang/StaticAnalyzer/Core/Checker.h" #include "clang/StaticAnalyzer/Core/CheckerManager.h" #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h" -#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicSize.h" +#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicExtent.h" #include "clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h" using namespace clang; diff --git a/clang/lib/StaticAnalyzer/Checkers/ArrayBoundCheckerV2.cpp b/clang/lib/StaticAnalyzer/Checkers/ArrayBoundCheckerV2.cpp index 7c264bba4b6a..2a5fe9d8ed92 100644 --- a/clang/lib/StaticAnalyzer/Checkers/ArrayBoundCheckerV2.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/ArrayBoundCheckerV2.cpp @@ -19,7 +19,7 @@ #include "clang/StaticAnalyzer/Core/CheckerManager.h" #include "clang/StaticAnalyzer/Core/PathSensitive/APSIntType.h" #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h" -#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicSize.h" +#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicExtent.h" #include "clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h" #include "llvm/ADT/SmallString.h" #include "llvm/Support/raw_ostream.h" @@ -179,7 +179,7 @@ void ArrayBoundCheckerV2::checkLocation(SVal location, bool isLoad, // CHECK UPPER BOUND: Is byteOffset >= size(baseRegion)? If so, // we are doing a load/store after the last valid offset. const MemRegion *MR = rawOffset.getRegion(); - DefinedOrUnknownSVal Size = getDynamicSize(state, MR, svalBuilder); + DefinedOrUnknownSVal Size = getDynamicExtent(state, MR, svalBuilder); if (!Size.getAs<NonLoc>()) break; diff --git a/clang/lib/StaticAnalyzer/Checkers/BuiltinFunctionChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/BuiltinFunctionChecker.cpp index 31f9b14f7eeb..13781b336426 100644 --- a/clang/lib/StaticAnalyzer/Checkers/BuiltinFunctionChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/BuiltinFunctionChecker.cpp @@ -16,7 +16,7 @@ #include "clang/StaticAnalyzer/Core/CheckerManager.h" #include "clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h" #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h" -#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicSize.h" +#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicExtent.h" using namespace clang; using namespace ento; @@ -92,8 +92,8 @@ bool BuiltinFunctionChecker::evalCall(const CallEvent &Call, if (Size.isUndef()) return true; // Return true to model purity. - state = setDynamicSize(state, R, Size.castAs<DefinedOrUnknownSVal>(), - C.getSValBuilder()); + state = setDynamicExtent(state, R, Size.castAs<DefinedOrUnknownSVal>(), + C.getSValBuilder()); C.addTransition(state->BindExpr(CE, LCtx, loc::MemRegionVal(R))); return true; diff --git a/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp index 30fd62f887c4..4e49dbc2facc 100644 --- a/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp @@ -19,7 +19,7 @@ #include "clang/StaticAnalyzer/Core/CheckerManager.h" #include "clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h" #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h" -#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicSize.h" +#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicExtent.h" #include "clang/StaticAnalyzer/Core/PathSensitive/ProgramStateTrait.h" #include "llvm/ADT/STLExtras.h" #include "llvm/ADT/SmallString.h" @@ -346,7 +346,7 @@ ProgramStateRef CStringChecker::CheckLocation(CheckerContext &C, // Get the size of the array. const auto *superReg = cast<SubRegion>(ER->getSuperRegion()); DefinedOrUnknownSVal Size = - getDynamicSize(state, superReg, C.getSValBuilder()); + getDynamicExtent(state, superReg, C.getSValBuilder()); // Get the index of the accessed element. DefinedOrUnknownSVal Idx = ER->getIndex().castAs<DefinedOrUnknownSVal>(); @@ -923,7 +923,7 @@ bool CStringChecker::IsFirstBufInBound(CheckerContext &C, // Get the size of the array. const SubRegion *superReg = cast<SubRegion>(ER->getSuperRegion()); - DefinedOrUnknownSVal SizeDV = getDynamicSize(state, superReg, svalBuilder); + DefinedOrUnknownSVal SizeDV = getDynamicExtent(state, superReg, svalBuilder); // Get the index of the accessed element. DefinedOrUnknownSVal Idx = ER->getIndex().castAs<DefinedOrUnknownSVal>(); @@ -1060,7 +1060,7 @@ bool CStringChecker::memsetAux(const Expr *DstBuffer, SVal CharVal, if (Offset.isValid() && !Offset.hasSymbolicOffset() && Offset.getOffset() == 0) { // Get the base region's size. - DefinedOrUnknownSVal SizeDV = getDynamicSize(State, BR, svalBuilder); + DefinedOrUnknownSVal SizeDV = getDynamicExtent(State, BR, svalBuilder); ProgramStateRef StateWholeReg, StateNotWholeReg; std::tie(StateWholeReg, StateNotWholeReg) = diff --git a/clang/lib/StaticAnalyzer/Checkers/CastSizeChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/CastSizeChecker.cpp index a498f252e693..2d2e14de3f2b 100644 --- a/clang/lib/StaticAnalyzer/Checkers/CastSizeChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/CastSizeChecker.cpp @@ -17,7 +17,7 @@ #include "clang/StaticAnalyzer/Core/Checker.h" #include "clang/StaticAnalyzer/Core/CheckerManager.h" #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h" -#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicSize.h" +#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicExtent.h" using namespace clang; using namespace ento; @@ -112,7 +112,7 @@ void CastSizeChecker::checkPreStmt(const CastExpr *CE,CheckerContext &C) const { SValBuilder &svalBuilder = C.getSValBuilder(); - DefinedOrUnknownSVal Size = getDynamicSize(state, SR, svalBuilder); + DefinedOrUnknownSVal Size = getDynamicExtent(state, SR, svalBuilder); const llvm::APSInt *SizeInt = svalBuilder.getKnownValue(state, Size); if (!SizeInt) return; diff --git a/clang/lib/StaticAnalyzer/Checkers/CheckPlacementNew.cpp b/clang/lib/StaticAnalyzer/Checkers/CheckPlacementNew.cpp index dc9cd717be9e..99e11a15c08d 100644 --- a/clang/lib/StaticAnalyzer/Checkers/CheckPlacementNew.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/CheckPlacementNew.cpp @@ -13,7 +13,7 @@ #include "clang/StaticAnalyzer/Checkers/BuiltinCheckerRegistration.h" #include "clang/StaticAnalyzer/Core/BugReporter/BugType.h" #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h" -#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicSize.h" +#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicExtent.h" #include "llvm/Support/FormatVariadic.h" using namespace clang; @@ -64,7 +64,7 @@ class PlacementNewChecker : public Checker<check::PreStmt<CXXNewExpr>> { SVal PlacementNewChecker::getExtentSizeOfPlace(const CXXNewExpr *NE, CheckerContext &C) const { const Expr *Place = NE->getPlacementArg(0); - return getDynamicSizeWithOffset(C.getState(), C.getSVal(Place)); + return getDynamicExtentWithOffset(C.getState(), C.getSVal(Place)); } SVal PlacementNewChecker::getExtentSizeOfNewTarget(const CXXNewExpr *NE, diff --git a/clang/lib/StaticAnalyzer/Checkers/ExprInspectionChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/ExprInspectionChecker.cpp index 242815d937df..2ce1bef6d228 100644 --- a/clang/lib/StaticAnalyzer/Checkers/ExprInspectionChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/ExprInspectionChecker.cpp @@ -14,7 +14,7 @@ #include "clang/StaticAnalyzer/Core/Checker.h" #include "clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h" #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h" -#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicSize.h" +#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicExtent.h" #include "llvm/ADT/StringSwitch.h" #include "llvm/Support/ScopedPrinter.h" @@ -276,7 +276,7 @@ void ExprInspectionChecker::analyzerGetExtent(const CallExpr *CE, return; ProgramStateRef State = C.getState(); - DefinedOrUnknownSVal Size = getDynamicSize(State, MR, C.getSValBuilder()); + DefinedOrUnknownSVal Size = getDynamicExtent(State, MR, C.getSValBuilder()); State = State->BindExpr(CE, C.getLocationContext(), Size); C.addTransition(State); @@ -289,7 +289,7 @@ void ExprInspectionChecker::analyzerDumpExtent(const CallExpr *CE, return; DefinedOrUnknownSVal Size = - getDynamicSize(C.getState(), MR, C.getSValBuilder()); + getDynamicExtent(C.getState(), MR, C.getSValBuilder()); SmallString<64> Msg; llvm::raw_svector_ostream Out(Msg); diff --git a/clang/lib/StaticAnalyzer/Checkers/MPI-Checker/MPIChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/MPI-Checker/MPIChecker.cpp index 7ac7a38dacf3..5d6bd381d3cc 100644 --- a/clang/lib/StaticAnalyzer/Checkers/MPI-Checker/MPIChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/MPI-Checker/MPIChecker.cpp @@ -16,7 +16,7 @@ #include "MPIChecker.h" #include "clang/StaticAnalyzer/Checkers/BuiltinCheckerRegistration.h" -#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicSize.h" +#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicExtent.h" namespace clang { namespace ento { diff --git a/clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp index 7eafdaa97bb4..1f3a1e1ac777 100644 --- a/clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp @@ -63,7 +63,7 @@ #include "clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h" #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h" #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerHelpers.h" -#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicSize.h" +#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicExtent.h" #include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h" #include "clang/StaticAnalyzer/Core/PathSensitive/ProgramStateTrait.h" #include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState_Fwd.h" @@ -1538,8 +1538,8 @@ ProgramStateRef MallocChecker::MallocMemAux(CheckerContext &C, State = State->bindDefaultInitial(RetVal, Init, LCtx); // Set the region's extent. - State = setDynamicSize(State, RetVal.getAsRegion(), - Size.castAs<DefinedOrUnknownSVal>(), svalBuilder); + State = setDynamicExtent(State, RetVal.getAsRegion(), + Size.castAs<DefinedOrUnknownSVal>(), svalBuilder); return MallocUpdateRefState(C, CE, State, Family); } diff --git a/clang/lib/StaticAnalyzer/Checkers/ReturnPointerRangeChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/ReturnPointerRangeChecker.cpp index 1a94ccdc2825..885750218b9e 100644 --- a/clang/lib/StaticAnalyzer/Checkers/ReturnPointerRangeChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/ReturnPointerRangeChecker.cpp @@ -16,7 +16,7 @@ #include "clang/StaticAnalyzer/Core/Checker.h" #include "clang/StaticAnalyzer/Core/CheckerManager.h" #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h" -#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicSize.h" +#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicExtent.h" #include "clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h" using namespace clang; diff --git a/clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp index c8b2e3d91520..cbb45347a6af 100644 --- a/clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp @@ -56,7 +56,7 @@ #include "clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h" #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h" #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerHelpers.h" -#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicSize.h" +#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicExtent.h" using namespace clang; using namespace clang::ento; @@ -314,7 +314,7 @@ class StdLibraryFunctionsChecker }(); // The dynamic size of the buffer argument, got from the analyzer engine. - SVal BufDynSize = getDynamicSizeWithOffset(State, BufV); + SVal BufDynSize = getDynamicExtentWithOffset(State, BufV); SVal Feasible = SvalBuilder.evalBinOp(State, Op, SizeV, BufDynSize, SvalBuilder.getContext().BoolTy); diff --git a/clang/lib/StaticAnalyzer/Checkers/UndefResultChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/UndefResultChecker.cpp index 392da4818098..477d910bc653 100644 --- a/clang/lib/StaticAnalyzer/Checkers/UndefResultChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/UndefResultChecker.cpp @@ -16,7 +16,7 @@ #include "clang/StaticAnalyzer/Core/Checker.h" #include "clang/StaticAnalyzer/Core/CheckerManager.h" #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h" -#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicSize.h" +#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicExtent.h" #include "clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h" #include "llvm/ADT/SmallString.h" #include "llvm/Support/raw_ostream.h" diff --git a/clang/lib/StaticAnalyzer/Checkers/VLASizeChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/VLASizeChecker.cpp index 78cee9cba97f..96501215c689 100644 --- a/clang/lib/StaticAnalyzer/Checkers/VLASizeChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/VLASizeChecker.cpp @@ -20,7 +20,7 @@ #include "clang/StaticAnalyzer/Core/Checker.h" #include "clang/StaticAnalyzer/Core/CheckerManager.h" #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h" -#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicSize.h" +#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicExtent.h" #include "llvm/ADT/STLExtras.h" #include "llvm/ADT/SmallString.h" #include "llvm/Support/raw_ostream.h" @@ -287,8 +287,9 @@ void VLASizeChecker::checkPreStmt(const DeclStmt *DS, CheckerContext &C) const { // VLASizeChecker is responsible for defining the extent of the array. if (VD) { - State = setDynamicSize(State, State->getRegion(VD, C.getLocationContext()), - ArraySize.castAs<DefinedOrUnknownSVal>(), SVB); + State = + setDynamicExtent(State, State->getRegion(VD, C.getLocationContext()), + ArraySize.castAs<DefinedOrUnknownSVal>(), SVB); } // Remember our assumptions! diff --git a/clang/lib/StaticAnalyzer/Core/CMakeLists.txt b/clang/lib/StaticAnalyzer/Core/CMakeLists.txt index d947d415ad6e..73ddec0852fd 100644 --- a/clang/lib/StaticAnalyzer/Core/CMakeLists.txt +++ b/clang/lib/StaticAnalyzer/Core/CMakeLists.txt @@ -20,7 +20,7 @@ add_clang_library(clangStaticAnalyzerCore CommonBugCategories.cpp ConstraintManager.cpp CoreEngine.cpp - DynamicSize.cpp + DynamicExtent.cpp DynamicType.cpp Environment.cpp ExplodedGraph.cpp diff --git a/clang/lib/StaticAnalyzer/Core/DynamicSize.cpp b/clang/lib/StaticAnalyzer/Core/DynamicExtent.cpp similarity index 70% rename from clang/lib/StaticAnalyzer/Core/DynamicSize.cpp rename to clang/lib/StaticAnalyzer/Core/DynamicExtent.cpp index 0f9c8121ba26..db9698b4086e 100644 --- a/clang/lib/StaticAnalyzer/Core/DynamicSize.cpp +++ b/clang/lib/StaticAnalyzer/Core/DynamicExtent.cpp @@ -1,4 +1,4 @@ -//===- DynamicSize.cpp - Dynamic size related APIs --------------*- C++ -*-===// +//===- DynamicExtent.cpp - Dynamic extent related APIs ----------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. @@ -6,11 +6,11 @@ // //===----------------------------------------------------------------------===// // -// This file defines APIs that track and query dynamic size information. +// This file defines APIs that track and query dynamic extent information. // //===----------------------------------------------------------------------===// -#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicSize.h" +#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicExtent.h" #include "clang/AST/Expr.h" #include "clang/Basic/LLVM.h" #include "clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h" @@ -19,23 +19,23 @@ #include "clang/StaticAnalyzer/Core/PathSensitive/SVals.h" #include "clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h" -REGISTER_MAP_WITH_PROGRAMSTATE(DynamicSizeMap, const clang::ento::MemRegion *, +REGISTER_MAP_WITH_PROGRAMSTATE(DynamicExtentMap, const clang::ento::MemRegion *, clang::ento::DefinedOrUnknownSVal) namespace clang { namespace ento { -DefinedOrUnknownSVal getDynamicSize(ProgramStateRef State, const MemRegion *MR, - SValBuilder &SVB) { +DefinedOrUnknownSVal getDynamicExtent(ProgramStateRef State, + const MemRegion *MR, SValBuilder &SVB) { MR = MR->StripCasts(); - if (const DefinedOrUnknownSVal *Size = State->get<DynamicSizeMap>(MR)) + if (const DefinedOrUnknownSVal *Size = State->get<DynamicExtentMap>(MR)) return *Size; return MR->getMemRegionManager().getStaticSize(MR, SVB); } -DefinedOrUnknownSVal getElementSize(QualType Ty, SValBuilder &SVB) { +DefinedOrUnknownSVal getElementExtent(QualType Ty, SValBuilder &SVB) { return SVB.makeIntVal(SVB.getContext().getTypeSizeInChars(Ty).getQuantity(), SVB.getArrayIndexType()); } @@ -46,8 +46,8 @@ DefinedOrUnknownSVal getDynamicElementCount(ProgramStateRef State, QualType ElementTy) { MR = MR->StripCasts(); - DefinedOrUnknownSVal Size = getDynamicSize(State, MR, SVB); - SVal ElementSize = getElementSize(ElementTy, SVB); + DefinedOrUnknownSVal Size = getDynamicExtent(State, MR, SVB); + SVal ElementSize = getElementExtent(ElementTy, SVB); SVal ElementCount = SVB.evalBinOp(State, BO_Div, Size, ElementSize, SVB.getArrayIndexType()); @@ -55,7 +55,7 @@ DefinedOrUnknownSVal getDynamicElementCount(ProgramStateRef State, return ElementCount.castAs<DefinedOrUnknownSVal>(); } -SVal getDynamicSizeWithOffset(ProgramStateRef State, SVal BufV) { +SVal getDynamicExtentWithOffset(ProgramStateRef State, SVal BufV) { SValBuilder &SvalBuilder = State->getStateManager().getSValBuilder(); const MemRegion *MRegion = BufV.getAsRegion(); if (!MRegion) @@ -71,21 +71,21 @@ SVal getDynamicSizeWithOffset(ProgramStateRef State, SVal BufV) { Offset.getOffset() / MRegion->getMemRegionManager().getContext().getCharWidth()); DefinedOrUnknownSVal ExtentInBytes = - getDynamicSize(State, BaseRegion, SvalBuilder); + getDynamicExtent(State, BaseRegion, SvalBuilder); return SvalBuilder.evalBinOp(State, BinaryOperator::Opcode::BO_Sub, ExtentInBytes, OffsetInBytes, SvalBuilder.getArrayIndexType()); } -ProgramStateRef setDynamicSize(ProgramStateRef State, const MemRegion *MR, - DefinedOrUnknownSVal Size, SValBuilder &SVB) { +ProgramStateRef setDynamicExtent(ProgramStateRef State, const MemRegion *MR, + DefinedOrUnknownSVal Size, SValBuilder &SVB) { MR = MR->StripCasts(); if (Size.isUnknown()) return State; - return State->set<DynamicSizeMap>(MR->StripCasts(), Size); + return State->set<DynamicExtentMap>(MR->StripCasts(), Size); } } // namespace ento diff --git a/clang/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp b/clang/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp index cbe6b5338348..e6918e071a4f 100644 --- a/clang/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp +++ b/clang/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp @@ -18,7 +18,7 @@ #include "clang/Analysis/ConstructionContext.h" #include "clang/StaticAnalyzer/Core/CheckerManager.h" #include "clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h" -#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicSize.h" +#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicExtent.h" #include "clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h" #include "llvm/ADT/SmallSet.h" #include "llvm/ADT/Statistic.h" @@ -703,14 +703,14 @@ ProgramStateRef ExprEngine::bindReturnValue(const CallEvent &Call, ElementCount = svalBuilder.makeIntVal(1, /*IsUnsigned=*/true); } - SVal ElementSize = getElementSize(CNE->getAllocatedType(), svalBuilder); + SVal ElementSize = getElementExtent(CNE->getAllocatedType(), svalBuilder); SVal Size = svalBuilder.evalBinOp(State, BO_Mul, ElementCount, ElementSize, svalBuilder.getArrayIndexType()); - State = setDynamicSize(State, MR, Size.castAs<DefinedOrUnknownSVal>(), - svalBuilder); + State = setDynamicExtent(State, MR, Size.castAs<DefinedOrUnknownSVal>(), + svalBuilder); } else { R = svalBuilder.conjureSymbolVal(nullptr, E, LCtx, ResultTy, Count); } diff --git a/clang/lib/StaticAnalyzer/Core/MemRegion.cpp b/clang/lib/StaticAnalyzer/Core/MemRegion.cpp index bb0038d08a4f..bd725ee9eaa3 100644 --- a/clang/lib/StaticAnalyzer/Core/MemRegion.cpp +++ b/clang/lib/StaticAnalyzer/Core/MemRegion.cpp @@ -28,7 +28,7 @@ #include "clang/Basic/IdentifierTable.h" #include "clang/Basic/LLVM.h" #include "clang/Basic/SourceManager.h" -#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicSize.h" +#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicExtent.h" #include "clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h" #include "clang/StaticAnalyzer/Core/PathSensitive/SVals.h" #include "clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h" @@ -760,7 +760,7 @@ DefinedOrUnknownSVal MemRegionManager::getStaticSize(const MemRegion *MR, if (Ty->isIncompleteType()) return UnknownVal(); - return getElementSize(Ty, SVB); + return getElementExtent(Ty, SVB); } case MemRegion::FieldRegionKind: { // Force callers to deal with bitfields explicitly. @@ -768,7 +768,7 @@ DefinedOrUnknownSVal MemRegionManager::getStaticSize(const MemRegion *MR, return UnknownVal(); QualType Ty = cast<TypedValueRegion>(SR)->getDesugaredValueType(Ctx); - DefinedOrUnknownSVal Size = getElementSize(Ty, SVB); + DefinedOrUnknownSVal Size = getElementExtent(Ty, SVB); // A zero-length array at the end of a struct often stands for dynamically // allocated extra memory. diff --git a/clang/lib/StaticAnalyzer/Core/RegionStore.cpp b/clang/lib/StaticAnalyzer/Core/RegionStore.cpp index 57fde32bc01d..5acc51674e9a 100644 --- a/clang/lib/StaticAnalyzer/Core/RegionStore.cpp +++ b/clang/lib/StaticAnalyzer/Core/RegionStore.cpp @@ -23,7 +23,6 @@ #include "clang/Basic/TargetInfo.h" #include "clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h" #include "clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h" -#include "clang/StaticAnalyzer/Core/PathSensitive/DynamicSize.h" #include "clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h" #include "clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h" #include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits