diff options
Diffstat (limited to 'lib/ubsan')
-rw-r--r-- | lib/ubsan/ubsan_handlers.cc | 2 | ||||
-rw-r--r-- | lib/ubsan/ubsan_handlers.h | 1 |
2 files changed, 3 insertions, 0 deletions
diff --git a/lib/ubsan/ubsan_handlers.cc b/lib/ubsan/ubsan_handlers.cc index 7a18b8c02..2a0e105cc 100644 --- a/lib/ubsan/ubsan_handlers.cc +++ b/lib/ubsan/ubsan_handlers.cc @@ -340,6 +340,8 @@ static void handleNonNullReturn(NonNullReturnData *Data, ReportOptions Opts) { Diag(Loc, DL_Error, "null pointer returned from function declared to never " "return null"); + if (!Data->AttrLoc.isInvalid()) + Diag(Data->AttrLoc, DL_Note, "returns_nonnull attribute specified here"); } void __ubsan::__ubsan_handle_nonnull_return(NonNullReturnData *Data) { diff --git a/lib/ubsan/ubsan_handlers.h b/lib/ubsan/ubsan_handlers.h index e4b1b0b4c..49f4ca0e2 100644 --- a/lib/ubsan/ubsan_handlers.h +++ b/lib/ubsan/ubsan_handlers.h @@ -125,6 +125,7 @@ RECOVERABLE(function_type_mismatch, struct NonNullReturnData { SourceLocation Loc; + SourceLocation AttrLoc; }; /// \brief Handle returning null from function with returns_nonnull attribute. |