[clang] be37e3e - [NFC][CLANG] Fix dereference issue before null check found by Coverity static analyzer tool
via cfe-commits
cfe-commits at lists.llvm.org
Fri May 19 10:17:00 PDT 2023
Author: Manna, Soumi
Date: 2023-05-19T10:16:14-07:00
New Revision: be37e3e25982c9346df883fcc61e7b60311594a4
URL: https://github.com/llvm/llvm-project/commit/be37e3e25982c9346df883fcc61e7b60311594a4
DIFF: https://github.com/llvm/llvm-project/commit/be37e3e25982c9346df883fcc61e7b60311594a4.diff
LOG: [NFC][CLANG] Fix dereference issue before null check found by Coverity static analyzer tool
Reported by Coverity static analyzer tool:
Inside "ParsePragma.cpp" file, in <unnamed>::PragmaRISCVHandler::HandlePragma(clang::Preprocessor &, clang::PragmaIntroducer, clang::Token &): All paths that lead to this null pointer comparison already dereference the pointer earlier
PP.Lex(Tok);
II = Tok.getIdentifierInfo();
//deref_ptr_in_call: Dereferencing pointer II.
StringRef IntrinsicClass = II->getName();
//Dereference before null check (REVERSE_INULL)
//check_after_deref: Null-checking II suggests that it may be null, but it has already been dereferenced on all paths leading to the check.
if (!II || !(II->isStr("vector") || II->isStr("sifive_vector"))) {
PP.Diag(Tok.getLocation(), diag::warn_pragma_invalid_argument)
<< PP.getSpelling(Tok) << "riscv" << /*Expected=*/true
<< "'vector' or 'sifive_vector'";
return;
}
This patch removes redundant StringRef type 'IntrinsicClass' and checks
II->isStr("vector") || II->isStr("sifive_vector") instead to set Actions.DeclareRISCVVBuiltins or
Actions.DeclareRISCVVectorBuiltins.
Reviewed By: erichkeane
Differential Revision: https://reviews.llvm.org/D150895
Added:
Modified:
clang/lib/Parse/ParsePragma.cpp
Removed:
################################################################################
diff --git a/clang/lib/Parse/ParsePragma.cpp b/clang/lib/Parse/ParsePragma.cpp
index aad8c09729774..8c3da9a7438e8 100644
--- a/clang/lib/Parse/ParsePragma.cpp
+++ b/clang/lib/Parse/ParsePragma.cpp
@@ -4041,7 +4041,6 @@ void PragmaRISCVHandler::HandlePragma(Preprocessor &PP,
PP.Lex(Tok);
II = Tok.getIdentifierInfo();
- StringRef IntrinsicClass = II->getName();
if (!II || !(II->isStr("vector") || II->isStr("sifive_vector"))) {
PP.Diag(Tok.getLocation(), diag::warn_pragma_invalid_argument)
<< PP.getSpelling(Tok) << "riscv" << /*Expected=*/true
@@ -4056,8 +4055,8 @@ void PragmaRISCVHandler::HandlePragma(Preprocessor &PP,
return;
}
- if (IntrinsicClass == "vector")
+ if (II->isStr("vector"))
Actions.DeclareRISCVVBuiltins = true;
- else if (IntrinsicClass == "sifive_vector")
+ else if (II->isStr("sifive_vector"))
Actions.DeclareRISCVVectorBuiltins = true;
}
More information about the cfe-commits
mailing list