[PATCH] D147757: Fix static analyzer tool remarks about unchecked return values

Soumi Manna via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Apr 6 19:15:52 PDT 2023


Manna created this revision.
Manna added reviewers: erichkeane, aaron.ballman.
Herald added subscribers: manas, ASDenysPetrov, luismarques, s.egerton, dkrupp, donat.nagy, Szelethus, PkmX, a.sidorin, simoncook, baloghadamsoftware, kristof.beyls, arichardson.
Herald added a reviewer: NoQ.
Herald added a project: All.
Manna requested review of this revision.
Herald added a subscriber: pcwang-thead.
Herald added a project: clang.

Reported by Coverity:

Unchecked return value
If the function returns an error value, the error value may be mistaken for a normal value.

1. Inside "Parser.cpp" file, in clang::​Parser::​ParseKNRParamDeclarations(clang::​Declarator &): Value returned from a function is not checked for errors before being used.

check_return: Calling TryConsumeToken without checking return value (as is done elsewhere 75 out of 86 times).

2. Inside "CallGraph.h" file, in clang::​CallGraph::​addToCallGraph(clang::​Decl *): Value returned from a function is not checked for errors before being used.

check_return: Calling TraverseDecl without checking return value (as is done elsewhere 22 out of 23 times).

3. Inside "SemaExpr.cpp" file, in clang::​Sema::​BuildCXXDefaultArgExpr(clang::​SourceLocation, clang::​FunctionDecl *, clang::​ParmVarDecl *, clang::​Expr *): Value returned from a function is not checked for errors before being used.

check_return: Calling TraverseDecl without checking return value (as is done elsewhere 29 out of 31 times)

4. Inside "CGStmt.cpp" file, in clang::​CodeGen::​CodeGenFunction::​EmitAsmInput(clang::​TargetInfo::​ConstraintInfo const &, clang::​Expr const *, std::​__cxx11::​basic_string<char, std::​char_traits<char>, std::​allocator<char>> &): Value returned from a function is not checked for errors before being used.

check_return: Calling EvaluateAsRValue without checking return value (as is done elsewhere 21 out of 25 times).

5. Inside "SemaChecking.cpp" file, in clang::​Sema::​CheckRISCVBuiltinFunctionCall(clang::​TargetInfo const &, unsigned int, clang::​CallExpr *): Value returned from a function is not checked for errors before being used.

check_return: Calling consume_front without checking return value (as is done elsewhere 180 out of 213 times)


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D147757

Files:
  clang/include/clang/Analysis/CallGraph.h
  clang/lib/CodeGen/CGStmt.cpp
  clang/lib/Parse/Parser.cpp
  clang/lib/Sema/SemaChecking.cpp
  clang/lib/Sema/SemaExpr.cpp


Index: clang/lib/Sema/SemaExpr.cpp
===================================================================
--- clang/lib/Sema/SemaExpr.cpp
+++ clang/lib/Sema/SemaExpr.cpp
@@ -6033,7 +6033,7 @@
     // point where the enclosing initializer is used in a function call.
     ImmediateCallVisitor V;
     if (!NestedDefaultChecking)
-      V.TraverseDecl(Param);
+      V.(void)TraverseDecl(Param);
     if (V.HasImmediateCalls) {
       ExprEvalContexts.back().DelayedDefaultInitializationContext = {
           CallLoc, Param, CurContext};
Index: clang/lib/Sema/SemaChecking.cpp
===================================================================
--- clang/lib/Sema/SemaChecking.cpp
+++ clang/lib/Sema/SemaChecking.cpp
@@ -4590,7 +4590,7 @@
         }
 
         // Convert features like "zbr" and "experimental-zbr" to "Zbr".
-        OF.consume_front("experimental-");
+        OF.(void)consume_front("experimental-");
         std::string FeatureStr = OF.str();
         FeatureStr[0] = std::toupper(FeatureStr[0]);
         // Combine strings.
Index: clang/lib/Parse/Parser.cpp
===================================================================
--- clang/lib/Parse/Parser.cpp
+++ clang/lib/Parse/Parser.cpp
@@ -1603,7 +1603,7 @@
     // Otherwise recover by skipping to next semi or mandatory function body.
     if (SkipUntil(tok::l_brace, StopAtSemi | StopBeforeMatch))
       break;
-    TryConsumeToken(tok::semi);
+    (void)TryConsumeToken(tok::semi);
   }
 
   // The actions module must verify that all arguments were declared.
Index: clang/lib/CodeGen/CGStmt.cpp
===================================================================
--- clang/lib/CodeGen/CGStmt.cpp
+++ clang/lib/CodeGen/CGStmt.cpp
@@ -2213,7 +2213,7 @@
   if (!Info.allowsRegister() && !Info.allowsMemory()) {
     if (Info.requiresImmediateConstant()) {
       Expr::EvalResult EVResult;
-      InputExpr->EvaluateAsRValue(EVResult, getContext(), true);
+      InputExpr->(void)EvaluateAsRValue(EVResult, getContext(), true);
 
       llvm::APSInt IntResult;
       if (EVResult.Val.toIntegralConstant(IntResult, InputExpr->getType(),
Index: clang/include/clang/Analysis/CallGraph.h
===================================================================
--- clang/include/clang/Analysis/CallGraph.h
+++ clang/include/clang/Analysis/CallGraph.h
@@ -60,7 +60,7 @@
   ///
   /// Recursively walks the declaration to find all the dependent Decls as well.
   void addToCallGraph(Decl *D) {
-    TraverseDecl(D);
+    (void)TraverseDecl(D);
   }
 
   /// Determine if a declaration should be included in the graph.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D147757.511587.patch
Type: text/x-patch
Size: 2581 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20230407/a0a226fa/attachment.bin>


More information about the cfe-commits mailing list