[clang] [clang][analyzer] Check initialization and argument passing in FixedAddressChecker (PR #110977)

DonĂ¡t Nagy via cfe-commits cfe-commits at lists.llvm.org
Thu Oct 3 03:49:11 PDT 2024


================
@@ -63,11 +62,39 @@ void FixedAddressChecker::checkPreStmt(const BinaryOperator *B,
         "Using a fixed address is not portable because that address will "
         "probably not be valid in all environments or platforms.";
     auto R = std::make_unique<PathSensitiveBugReport>(BT, Msg, N);
-    R->addRange(B->getRHS()->getSourceRange());
+    R->addRange(SrcExpr->getSourceRange());
     C.emitReport(std::move(R));
   }
 }
 
+void FixedAddressChecker::checkPreStmt(const BinaryOperator *B,
+                                       CheckerContext &C) const {
+  if (B->getOpcode() != BO_Assign)
+    return;
+
+  checkUseOfFixedAddress(B->getType(), B->getRHS(), C);
+}
+
+void FixedAddressChecker::checkPreStmt(const DeclStmt *D,
+                                       CheckerContext &C) const {
+  for (const auto *D1 : D->decls()) {
----------------
NagyDonat wrote:

I agree that "`DS`" / "`D`" would be a more traditional naming choice, but actually there's something poetic in abbreviating  "one declaration from `D`" as  "`D1`".

https://github.com/llvm/llvm-project/pull/110977


More information about the cfe-commits mailing list