diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -5702,10 +5702,11 @@ "and non-deleting destructors. (No effect on Microsoft ABI)">, MarshallingInfoFlag>; -def fexperimental_assignment_tracking : - Flag<["-"], "fexperimental-assignment-tracking">, Group, - HelpText<"Enable assignment tracking debug info">, - MarshallingInfoFlag>; +defm experimental_assignment_tracking : + BoolOption<"f", "experimental-assignment-tracking", + CodeGenOpts<"EnableAssignmentTracking">, DefaultFalse, + PosFlag, NegFlag, BothFlags<[CoreOption]>>, + Group; } // let Flags = [CC1Option, NoDriverOption] diff --git a/clang/test/CodeGen/assignment-tracking/flag.cpp b/clang/test/CodeGen/assignment-tracking/flag.cpp --- a/clang/test/CodeGen/assignment-tracking/flag.cpp +++ b/clang/test/CodeGen/assignment-tracking/flag.cpp @@ -1,18 +1,24 @@ +//// Explicitly enabled: // RUN: %clang_cc1 -triple x86_64-none-linux-gnu -debug-info-kind=standalone -O0 \ // RUN: -emit-llvm -fexperimental-assignment-tracking %s -o - \ -// RUN: | FileCheck %s --check-prefixes=FLAG +// RUN: | FileCheck %s --check-prefixes=ENABLE +//// Disabled by default: // RUN: %clang_cc1 -triple x86_64-none-linux-gnu -debug-info-kind=standalone -O0 \ // RUN: -emit-llvm %s -o - \ -// RUN: | FileCheck %s --check-prefixes=NO-FLAG +// RUN: | FileCheck %s --check-prefixes=DISABLE +//// Explicitly disabled: +// RUN: %clang_cc1 -triple x86_64-none-linux-gnu -debug-info-kind=standalone -O0 \ +// RUN: -emit-llvm %s -o - -fno-experimental-assignment-tracking \ +// RUN: | FileCheck %s --check-prefixes=DISABLE // Check some assignment-tracking stuff appears in the output when the flag -// -fexperimental-assignment-tracking is used, and that it doesn't when -// the flag is not used (default behaviour: no assignment tracking). +// -fexperimental-assignment-tracking is used, that it doesn't when +// -fno-experimental-assignment-tracking is used or neither flag is specified. -// FLAG: DIAssignID -// FLAG: dbg.assign +// ENABLE: DIAssignID +// ENABLE: dbg.assign -// NO-FLAG-NOT: DIAssignID -// NO-FLAG-NOT: dbg.assign +// DISABLE-NOT: DIAssignID +// DISABLE-NOT: dbg.assign void fun(int a) {}