[clang] 0a996c8 - [Assignment Tracking] Fix -fexperimental-assignment-tracking cc1 flag

via cfe-commits cfe-commits at lists.llvm.org
Fri Jan 20 06:37:11 PST 2023


Author: OCHyams
Date: 2023-01-20T14:36:16Z
New Revision: 0a996c82a75f330f3d01541381569c8cd2cd6190

URL: https://github.com/llvm/llvm-project/commit/0a996c82a75f330f3d01541381569c8cd2cd6190
DIFF: https://github.com/llvm/llvm-project/commit/0a996c82a75f330f3d01541381569c8cd2cd6190.diff

LOG: [Assignment Tracking] Fix -fexperimental-assignment-tracking cc1 flag

This change allows `-fexperimental-assignment-tracking` to be negated using the
negative equivalent `-fno-experimental-assignment-tracking`, and fixes the flag
so that the default behaviour can be changed (currently the default is still
false / disabled).

Reviewed By: StephenTozer

Differential Revision: https://reviews.llvm.org/D142029

Added: 
    

Modified: 
    clang/include/clang/Driver/Options.td
    clang/test/CodeGen/assignment-tracking/flag.cpp

Removed: 
    


################################################################################
diff  --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td
index ba49b335cf287..dd3e86f214255 100644
--- a/clang/include/clang/Driver/Options.td
+++ b/clang/include/clang/Driver/Options.td
@@ -5702,10 +5702,11 @@ def fctor_dtor_return_this : Flag<["-"], "fctor-dtor-return-this">,
            "and non-deleting destructors. (No effect on Microsoft ABI)">,
   MarshallingInfoFlag<CodeGenOpts<"CtorDtorReturnThis">>;
 
-def fexperimental_assignment_tracking :
-  Flag<["-"], "fexperimental-assignment-tracking">, Group<f_Group>,
-  HelpText<"Enable assignment tracking debug info">,
-  MarshallingInfoFlag<CodeGenOpts<"EnableAssignmentTracking">>;
+defm experimental_assignment_tracking :
+  BoolOption<"f", "experimental-assignment-tracking",
+  CodeGenOpts<"EnableAssignmentTracking">, DefaultFalse,
+  PosFlag<SetTrue, [CC1Option]>, NegFlag<SetFalse>, BothFlags<[CoreOption]>>,
+  Group<f_Group>;
 
 } // let Flags = [CC1Option, NoDriverOption]
 

diff  --git a/clang/test/CodeGen/assignment-tracking/flag.cpp b/clang/test/CodeGen/assignment-tracking/flag.cpp
index 911fa1aca70d8..c4e85738fb272 100644
--- 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) {}


        


More information about the cfe-commits mailing list