xbolva00 created this revision.
Herald added subscribers: llvm-commits, cfe-commits, hiraditya, mehdi_amini.
Herald added projects: clang, LLVM.
The 'RequiredPass' pointer was utilized before it was verified against nullptr.
Check lines: 1626, 1629.
[Diagnostics] Try to improve warning message for -Wreturn-type
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D69762
Files:
clang/include/clang/Basic/DiagnosticSemaKinds.td
llvm/lib/IR/LegacyPassManager.cpp
Index: llvm/lib/IR/LegacyPassManager.cpp
===================================================================
--- llvm/lib/IR/LegacyPassManager.cpp
+++ llvm/lib/IR/LegacyPassManager.cpp
@@ -1626,13 +1626,12 @@
/// RequiredPass is run on the fly by Pass Manager when P requests it
/// through getAnalysis interface.
void MPPassManager::addLowerLevelRequiredPass(Pass *P, Pass *RequiredPass) {
+ assert(RequiredPass && "No required pass?");
assert(P->getPotentialPassManagerType() == PMT_ModulePassManager &&
"Unable to handle Pass that requires lower level Analysis pass");
assert((P->getPotentialPassManagerType() <
RequiredPass->getPotentialPassManagerType()) &&
"Unable to handle Pass that requires lower level Analysis pass");
- if (!RequiredPass)
- return;
FunctionPassManagerImpl *FPP = OnTheFlyManagers[P];
if (!FPP) {
Index: clang/include/clang/Basic/DiagnosticSemaKinds.td
===================================================================
--- clang/include/clang/Basic/DiagnosticSemaKinds.td
+++ clang/include/clang/Basic/DiagnosticSemaKinds.td
@@ -576,10 +576,10 @@
"thread-local storage is not supported for the current target">;
def warn_maybe_falloff_nonvoid_function : Warning<
- "control may reach end of non-void function">,
+ "not all control paths in this function return a value; non-void function
must return a value">,
InGroup<ReturnType>;
def warn_falloff_nonvoid_function : Warning<
- "control reaches end of non-void function">,
+ "function does not return a value; non-void function must return a value">,
InGroup<ReturnType>;
def err_maybe_falloff_nonvoid_block : Error<
"control may reach end of non-void block">;
Index: llvm/lib/IR/LegacyPassManager.cpp
===================================================================
--- llvm/lib/IR/LegacyPassManager.cpp
+++ llvm/lib/IR/LegacyPassManager.cpp
@@ -1626,13 +1626,12 @@
/// RequiredPass is run on the fly by Pass Manager when P requests it
/// through getAnalysis interface.
void MPPassManager::addLowerLevelRequiredPass(Pass *P, Pass *RequiredPass) {
+ assert(RequiredPass && "No required pass?");
assert(P->getPotentialPassManagerType() == PMT_ModulePassManager &&
"Unable to handle Pass that requires lower level Analysis pass");
assert((P->getPotentialPassManagerType() <
RequiredPass->getPotentialPassManagerType()) &&
"Unable to handle Pass that requires lower level Analysis pass");
- if (!RequiredPass)
- return;
FunctionPassManagerImpl *FPP = OnTheFlyManagers[P];
if (!FPP) {
Index: clang/include/clang/Basic/DiagnosticSemaKinds.td
===================================================================
--- clang/include/clang/Basic/DiagnosticSemaKinds.td
+++ clang/include/clang/Basic/DiagnosticSemaKinds.td
@@ -576,10 +576,10 @@
"thread-local storage is not supported for the current target">;
def warn_maybe_falloff_nonvoid_function : Warning<
- "control may reach end of non-void function">,
+ "not all control paths in this function return a value; non-void function must return a value">,
InGroup<ReturnType>;
def warn_falloff_nonvoid_function : Warning<
- "control reaches end of non-void function">,
+ "function does not return a value; non-void function must return a value">,
InGroup<ReturnType>;
def err_maybe_falloff_nonvoid_block : Error<
"control may reach end of non-void block">;
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits