This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Orlando marked an inline comment as done. Closed by commit rGc10a8473f48b: [Assignment Tracking][2/*] Add flags to enable Assignment Tracking (authored by Orlando). Herald added a project: clang. Herald added a subscriber: cfe-commits.
Changed prior to commit: https://reviews.llvm.org/D132221?vs=456658&id=472669#toc Repository: rG LLVM Github Monorepo 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 @@ -6987,18 +6987,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 @@ -5638,6 +5638,11 @@ } // let Flags = [CC1Option, NoDriverOption] +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 @@ -331,6 +331,10 @@ 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) ///< Enable the Assignment Tracking + ///< debug info feature feature. + CODEGENOPT(DebugColumnInfo, 1, 0) ///< Whether or not to use column information ///< in debug info.
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 @@ -6987,18 +6987,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 @@ -5638,6 +5638,11 @@ } // let Flags = [CC1Option, NoDriverOption] +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 @@ -331,6 +331,10 @@ 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) ///< Enable the Assignment Tracking + ///< debug info feature feature. + CODEGENOPT(DebugColumnInfo, 1, 0) ///< Whether or not to use column information ///< in debug info.
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits