[PATCH] D132221: [Assignment Tracking][2/*] Add flags to enable Assignment Tracking
Orlando Cazalet-Hyams via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 30 07:10:40 PDT 2022
Orlando updated this revision to Diff 456658.
Orlando added a comment.
+ Add context to diff
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D132221/new/
https://reviews.llvm.org/D132221
Files:
clang/include/clang/Basic/CodeGenOptions.def
clang/include/clang/Driver/Options.td
clang/lib/Driver/ToolChains/Clang.cpp
llvm/include/llvm/IR/DebugInfo.h
llvm/lib/IR/DebugInfo.cpp
Index: llvm/lib/IR/DebugInfo.cpp
===================================================================
--- llvm/lib/IR/DebugInfo.cpp
+++ llvm/lib/IR/DebugInfo.cpp
@@ -39,6 +39,13 @@
using namespace llvm;
using namespace llvm::dwarf;
+static cl::opt<bool>
+ ExperimentalAssignmentTracking("experimental-assignment-tracking",
+ cl::init(false));
+bool llvm::getEnableAssignmentTracking() {
+ return ExperimentalAssignmentTracking;
+}
+
/// Finds all intrinsics declaring local variables as living in the memory that
/// 'V' points to. This may include a mix of dbg.declare and
/// dbg.addr intrinsics.
Index: llvm/include/llvm/IR/DebugInfo.h
===================================================================
--- llvm/include/llvm/IR/DebugInfo.h
+++ llvm/include/llvm/IR/DebugInfo.h
@@ -159,6 +159,8 @@
SmallPtrSet<const MDNode *, 32> NodesSeen;
};
+/// Return true if assignment tracking is enabled.
+bool getEnableAssignmentTracking();
} // end namespace llvm
#endif // LLVM_IR_DEBUGINFO_H
Index: clang/lib/Driver/ToolChains/Clang.cpp
===================================================================
--- clang/lib/Driver/ToolChains/Clang.cpp
+++ clang/lib/Driver/ToolChains/Clang.cpp
@@ -6761,18 +6761,21 @@
// Forward -Xclang arguments to -cc1, and -mllvm arguments to the LLVM option
// parser.
- // -finclude-default-header flag is for preprocessor,
- // do not pass it to other cc1 commands when save-temps is enabled
- if (C.getDriver().isSaveTempsEnabled() &&
- !isa<PreprocessJobAction>(JA)) {
- for (auto Arg : Args.filtered(options::OPT_Xclang)) {
- Arg->claim();
- if (StringRef(Arg->getValue()) != "-finclude-default-header")
- CmdArgs.push_back(Arg->getValue());
+ for (auto Arg : Args.filtered(options::OPT_Xclang)) {
+ Arg->claim();
+ // -finclude-default-header flag is for preprocessor,
+ // do not pass it to other cc1 commands when save-temps is enabled
+ if (C.getDriver().isSaveTempsEnabled() &&
+ !isa<PreprocessJobAction>(JA)) {
+ if (StringRef(Arg->getValue()) == "-finclude-default-header")
+ continue;
}
- }
- else {
- Args.AddAllArgValues(CmdArgs, options::OPT_Xclang);
+ if (StringRef(Arg->getValue()) == "-fexperimental-assignment-tracking") {
+ // Add the llvm version of this flag too.
+ CmdArgs.push_back("-mllvm");
+ CmdArgs.push_back("-experimental-assignment-tracking");
+ }
+ CmdArgs.push_back(Arg->getValue());
}
for (const Arg *A : Args.filtered(options::OPT_mllvm)) {
A->claim();
Index: clang/include/clang/Driver/Options.td
===================================================================
--- clang/include/clang/Driver/Options.td
+++ clang/include/clang/Driver/Options.td
@@ -5283,6 +5283,11 @@
def fdenormal_fp_math_f32_EQ : Joined<["-"], "fdenormal-fp-math-f32=">,
Group<f_Group>;
+def fexperimental_assignment_tracking :
+ Flag<["-"], "fexperimental-assignment-tracking">, Group<f_Group>,
+ HelpText<"Enable assignment tracking debug info">,
+ MarshallingInfoFlag<CodeGenOpts<"EnableAssignmentTracking">>;
+
//===----------------------------------------------------------------------===//
// Dependency Output Options
//===----------------------------------------------------------------------===//
Index: clang/include/clang/Basic/CodeGenOptions.def
===================================================================
--- clang/include/clang/Basic/CodeGenOptions.def
+++ clang/include/clang/Basic/CodeGenOptions.def
@@ -316,6 +316,9 @@
VALUE_CODEGENOPT(WarnStackSize , 32, UINT_MAX) ///< Set via -fwarn-stack-size.
CODEGENOPT(NoStackArgProbe, 1, 0) ///< Set when -mno-stack-arg-probe is used
CODEGENOPT(DebugStrictDwarf, 1, 1) ///< Whether or not to use strict DWARF info.
+
+CODEGENOPT(EnableAssignmentTracking, 1,0)
+
CODEGENOPT(DebugColumnInfo, 1, 0) ///< Whether or not to use column information
///< in debug info.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D132221.456658.patch
Type: text/x-patch
Size: 3995 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220830/f4ef6367/attachment.bin>
More information about the llvm-commits
mailing list