Skip to content

Commit f57e582

Browse files
author
git apple-llvm automerger
committed
Merge commit '6419104d1878' from llvm.org/release/21.x into stable/21.x
2 parents 57bf586 + 9423642 commit f57e582

File tree

4 files changed

+12
-3
lines changed

4 files changed

+12
-3
lines changed

clang/include/clang/Basic/LangOptions.def

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -515,6 +515,8 @@ LANGOPT(BoundsSafetyBringUpMissingChecks, 7, clang::LangOptions::getDefaultBound
515515
"Bring up new -fbounds-safety run-time checks")
516516
/* TO_UPSTREAM(BoundsSafety) OFF*/
517517

518+
LANGOPT(EnableLifetimeSafety, 1, 0, NotCompatible, "Experimental lifetime safety analysis for C++")
519+
518520
LANGOPT(PreserveVec3Type, 1, 0, NotCompatible, "Preserve 3-component vector type")
519521

520522
#undef LANGOPT

clang/include/clang/Driver/Options.td

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2018,6 +2018,14 @@ def fno_bounds_safety_bringup_missing_checks : Flag<["-"], "fno-bounds-safety-br
20182018
Alias<fno_bounds_safety_bringup_missing_checks_EQ>, AliasArgs<["all"]>,
20192019
HelpText<"Disable new -fbounds-safety run-time checks">;
20202020

2021+
defm lifetime_safety : BoolFOption<
2022+
"experimental-lifetime-safety",
2023+
LangOpts<"EnableLifetimeSafety">, DefaultFalse,
2024+
PosFlag<SetTrue, [], [CC1Option], "Enable">,
2025+
NegFlag<SetFalse, [], [CC1Option], "Disable">,
2026+
BothFlags<[], [CC1Option],
2027+
" experimental lifetime safety for C++">>;
2028+
20212029
defm addrsig : BoolFOption<"addrsig",
20222030
CodeGenOpts<"Addrsig">, DefaultFalse,
20232031
PosFlag<SetTrue, [], [ClangOption, CC1Option], "Emit">,

clang/lib/Sema/AnalysisBasedWarnings.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3507,8 +3507,7 @@ void clang::sema::AnalysisBasedWarnings::IssueWarnings(
35073507
.setAlwaysAdd(Stmt::UnaryOperatorClass);
35083508
}
35093509

3510-
bool EnableLifetimeSafetyAnalysis = !Diags.isIgnored(
3511-
diag::warn_experimental_lifetime_safety_dummy_warning, D->getBeginLoc());
3510+
bool EnableLifetimeSafetyAnalysis = S.getLangOpts().EnableLifetimeSafety;
35123511
// Install the logical handler.
35133512
std::optional<LogicalErrorHandler> LEH;
35143513
if (LogicalErrorHandler::hasActiveDiagnostics(Diags, D->getBeginLoc())) {

clang/test/Sema/warn-lifetime-safety-dataflow.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %clang_cc1 -mllvm -debug-only=LifetimeFacts,LifetimeDataflow -Wexperimental-lifetime-safety %s 2>&1 | FileCheck %s
1+
// RUN: %clang_cc1 -fexperimental-lifetime-safety -mllvm -debug-only=LifetimeFacts,LifetimeDataflow -Wexperimental-lifetime-safety %s 2>&1 | FileCheck %s
22
// REQUIRES: asserts
33

44
struct MyObj {

0 commit comments

Comments
 (0)