[clang] [llvm] Revert "[dyndbg][Clang] Implement nested-ELF dynamic debugging support" (PR #216298)

via cfe-commits cfe-commits at lists.llvm.org
Fri Aug 14 03:28:11 PDT 2026


llvmorg-github-actions[bot] wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang-codegen

Author: Orlando Cazalet-Hyams (OCHyams)

<details>
<summary>Changes</summary>

Reverts llvm/llvm-project#<!-- -->194860

failure example: https://lab.llvm.org/buildbot/#/builders/154/builds/35126

---

Patch is 40.39 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/216298.diff


26 Files Affected:

- (modified) clang/include/clang/Basic/CodeGenOptions.h (-3) 
- (modified) clang/include/clang/Basic/DebugOptions.def (-7) 
- (modified) clang/include/clang/Basic/DiagnosticDriverKinds.td (-5) 
- (modified) clang/include/clang/Basic/DiagnosticFrontendKinds.td (-6) 
- (modified) clang/include/clang/Basic/DiagnosticGroups.td (-2) 
- (modified) clang/include/clang/Options/Options.td (-18) 
- (modified) clang/lib/CodeGen/BackendUtil.cpp (+1-110) 
- (modified) clang/lib/Driver/ToolChains/Clang.cpp (+2-35) 
- (modified) clang/lib/Frontend/CompilerInvocation.cpp (-6) 
- (removed) clang/test/DebugInfo/DynamicDebugging/EndToEnd/X86/globalopt.c (-24) 
- (removed) clang/test/DebugInfo/DynamicDebugging/EndToEnd/X86/lit.local.cfg (-4) 
- (removed) clang/test/DebugInfo/DynamicDebugging/EndToEnd/X86/obj-emission-target/lit.local.cfg (-3) 
- (removed) clang/test/DebugInfo/DynamicDebugging/EndToEnd/X86/obj-emission-target/no-target.c (-14) 
- (removed) clang/test/DebugInfo/DynamicDebugging/EndToEnd/X86/section.c (-15) 
- (removed) clang/test/DebugInfo/DynamicDebugging/attr-outer-tail-pad.c (-10) 
- (removed) clang/test/DebugInfo/DynamicDebugging/attr-outer.c (-9) 
- (removed) clang/test/DebugInfo/DynamicDebugging/compiler-used.cpp (-37) 
- (removed) clang/test/DebugInfo/DynamicDebugging/embed.c (-14) 
- (removed) clang/test/DebugInfo/DynamicDebugging/inner-attrs.c (-27) 
- (removed) clang/test/DebugInfo/DynamicDebugging/profile-coverage.c (-7) 
- (removed) clang/test/DebugInfo/DynamicDebugging/symbols-functions.cpp (-33) 
- (removed) clang/test/DebugInfo/DynamicDebugging/symbols-globals.cpp (-72) 
- (removed) clang/test/DebugInfo/DynamicDebugging/symbols-internal-comdat.cpp (-27) 
- (removed) clang/test/Driver/dynamic-debugging-flags.c (-32) 
- (modified) llvm/include/llvm/Transforms/Utils/ModuleUtils.h (+4-8) 
- (modified) llvm/lib/Transforms/Utils/ModuleUtils.cpp (+4-11) 


``````````diff
diff --git a/clang/include/clang/Basic/CodeGenOptions.h b/clang/include/clang/Basic/CodeGenOptions.h
index 82c2cb942c5ed..6e9bde32e0655 100644
--- a/clang/include/clang/Basic/CodeGenOptions.h
+++ b/clang/include/clang/Basic/CodeGenOptions.h
@@ -397,9 +397,6 @@ class CodeGenOptions : public CodeGenOptionsBase {
   /// Prefix to use for -save-temps output.
   std::string SaveTempsFilePrefix;
 
-  /// Prefix to use for -save-dynamic-debugging-temps output.
-  std::string SaveDynDbgTempsFilePrefix;
-
   /// Name of file passed with -fcuda-include-gpubinary option to forward to
   /// CUDA runtime back-end for incorporating them into host-side object file.
   std::string CudaGpuBinaryFileName;
diff --git a/clang/include/clang/Basic/DebugOptions.def b/clang/include/clang/Basic/DebugOptions.def
index e496825d51274..c9dd3f726e799 100644
--- a/clang/include/clang/Basic/DebugOptions.def
+++ b/clang/include/clang/Basic/DebugOptions.def
@@ -62,13 +62,6 @@ ENUM_DEBUGOPT(AssignmentTrackingMode, AssignmentTrackingOpts, 2,
 /// Whether or not to use Key Instructions to determine breakpoint locations.
 DEBUGOPT(DebugKeyInstructions, 1, 0, Benign)
 
-/// Whether or not to use the Dynamic Debugging feature.
-DEBUGOPT(DynamicDebugging, 1, 0, Benign)
-
-/// Flag for testing: discard the dynamic debugging debug module before codegen
-/// if true.
-DEBUGOPT(DiscardDynamicDebuggingDebugModule, 1, 0, Benign)
-
 DEBUGOPT(DebugColumnInfo, 1, 0, Compatible) ///< Whether or not to use column information
                                            ///< in debug info.
 
diff --git a/clang/include/clang/Basic/DiagnosticDriverKinds.td b/clang/include/clang/Basic/DiagnosticDriverKinds.td
index 929421f915a4e..91895d4957cf7 100644
--- a/clang/include/clang/Basic/DiagnosticDriverKinds.td
+++ b/clang/include/clang/Basic/DiagnosticDriverKinds.td
@@ -409,11 +409,6 @@ def err_drv_optimization_remark_format : Error<
 def err_drv_no_neon_modifier : Error<"[no]neon is not accepted as modifier, please use [no]simd instead">;
 def err_drv_invalid_omp_target : Error<"OpenMP target is invalid: '%0'">;
 def err_drv_incompatible_omp_arch : Error<"OpenMP target architecture '%0' pointer size is incompatible with host '%1'">;
-def err_drv_dyndbg_lto : Error<"'-fdynamic-debugging' incompatible with '-flto'">;
-def err_drv_dyndbg_incompatible : Error<"'-fdynamic-debugging' incompatible with '%0'">;
-def err_drv_dyndbg_ir : Error<"'-fdynamic-debugging' incompatible with IR input">;
-def warn_drv_dyndbg_req_debug : Warning<"'-fdynamic-debugging' ignored: requires debug info">,
-    InGroup<DynamicDebugging>;
 def err_drv_omp_host_target_not_supported : Error<
   "target '%0' is not a supported OpenMP host target">;
 def err_drv_expecting_fopenmp_with_fopenmp_targets : Error<
diff --git a/clang/include/clang/Basic/DiagnosticFrontendKinds.td b/clang/include/clang/Basic/DiagnosticFrontendKinds.td
index 051a50406812a..151de132433d1 100644
--- a/clang/include/clang/Basic/DiagnosticFrontendKinds.td
+++ b/clang/include/clang/Basic/DiagnosticFrontendKinds.td
@@ -550,10 +550,4 @@ def err_member_ptr_requires_complete_type
     : Error<"member pointer representation requires a complete class type for "
             "%0 to perform this expression">;
 
-def warn_dyndbg_unable_to_create_target : Warning<
-    "ignoring -fdynamic-debugging: unable to create target: '%0'">,
-    InGroup<DynamicDebugging>;
-
-def err_dyndbg_no_instrumentation : Error<
-    "'-fdynamic-debugging' unsupported with instrumentation (PGO/code coverage)">;
 }
diff --git a/clang/include/clang/Basic/DiagnosticGroups.td b/clang/include/clang/Basic/DiagnosticGroups.td
index c147e0f58b246..ba820778b80c0 100644
--- a/clang/include/clang/Basic/DiagnosticGroups.td
+++ b/clang/include/clang/Basic/DiagnosticGroups.td
@@ -2021,5 +2021,3 @@ def ExperimentalOption : DiagGroup<"experimental-option">;
 def UnguardedBuiltinUsageAMDGPU : DiagGroup<"amdgpu-unguarded-builtin-usage">;
 
 def AvailableVisibleAMDGPU : DiagGroup<"amdgpu-av">;
-
-def DynamicDebugging : DiagGroup<"dynamic-debugging">;
diff --git a/clang/include/clang/Options/Options.td b/clang/include/clang/Options/Options.td
index c78484933b7e3..6af0f578b6d63 100644
--- a/clang/include/clang/Options/Options.td
+++ b/clang/include/clang/Options/Options.td
@@ -5368,24 +5368,6 @@ defm key_instructions : BoolGOption<"key-instructions",
         " in some debuggers. DWARF only.">,
     BothFlags<[], [ClangOption, CLOption, CC1Option]>>,
   Group<g_flags_Group>;
-defm dynamic_debugging : BoolOption<"f", "dynamic-debugging",
-    CodeGenOpts<"DynamicDebugging">, DefaultFalse,
-    NegFlag<SetFalse>, PosFlag<SetTrue, [], [],
-        "Enable Dynamic Debugging, which allows runtime switching between"
-        " optimized and unoptimized code in debuggers that support it."
-        " Specified optimization level affects only the optimized code."
-        " This flag inhibits interprocedural optimizations.">,
-    BothFlags<[], [ClangOption, CLOption, CC1Option]>>;
-def save_dynamic_debugging_temps : Flag<["--"], "save-dynamic-debugging-temps">,
-    Visibility<[ClangOption, CLOption, CC1Option]>,
-    HelpText<"Compiler-debugging/testing option to save the intermediate"
-             " states of dynamic debugging in the same directory as the final"
-             " output file">;
-def discard_dynamic_debugging_debug_module : Flag<["--"], "discard-dynamic-debugging-debug-module">,
-    MarshallingInfoFlag<CodeGenOpts<"DiscardDynamicDebuggingDebugModule">>,
-    Visibility<[CC1Option]>,
-    HelpText<"Compiler-debugging/testing option to discard the dynamic"
-             " debugging debug module before Clang codegen">;
 def headerpad__max__install__names : Joined<["-"], "headerpad_max_install_names">;
 def help : Flag<["-", "--"], "help">,
     Visibility<[ClangOption, CC1Option, CC1AsOption,
diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp
index 866e25f7b180c..0b1a4221d3351 100644
--- a/clang/lib/CodeGen/BackendUtil.cpp
+++ b/clang/lib/CodeGen/BackendUtil.cpp
@@ -22,7 +22,6 @@
 #include "llvm/Analysis/RuntimeLibcallInfo.h"
 #include "llvm/Analysis/TargetLibraryInfo.h"
 #include "llvm/Analysis/TargetTransformInfo.h"
-#include "llvm/BinaryFormat/ELF.h"
 #include "llvm/Bitcode/BitcodeReader.h"
 #include "llvm/Bitcode/BitcodeWriter.h"
 #include "llvm/Bitcode/BitcodeWriterPass.h"
@@ -94,7 +93,6 @@
 #include "llvm/Transforms/Scalar/JumpThreading.h"
 #include "llvm/Transforms/Utils/AssignGUID.h"
 #include "llvm/Transforms/Utils/Debugify.h"
-#include "llvm/Transforms/Utils/DynamicDebugging.h"
 #include "llvm/Transforms/Utils/ModuleUtils.h"
 #include <limits>
 #include <memory>
@@ -1497,89 +1495,6 @@ runThinLTOBackend(CompilerInstance &CI, ModuleSummaryIndex *CombinedIndex,
   }
 }
 
-static void createAndEmbedModuleForDynamicDebugging(
-    CompilerInstance &CI, CodeGenOptions &CGOpts, llvm::Module *M,
-    IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS, BackendConsumer *BC) {
-  /// Helper for saving the module(s) at various dyndbg stages.
-  auto SaveModule = [&](StringRef Name, llvm::Module &M) {
-    if (CGOpts.SaveDynDbgTempsFilePrefix == "")
-      return;
-    std::error_code EC;
-    std::string Path =
-        Twine(CGOpts.SaveDynDbgTempsFilePrefix + "." + Name + ".ll").str();
-    raw_fd_ostream OS(Path, EC, sys::fs::OpenFlags::OF_None);
-    if (EC) {
-      // Copy -save-temps behaviour: this is a debugging option so we simply
-      // exit if there's an issue.
-      errs() << "failed to open " << Path << ": " << EC.message() << '\n';
-      errs().flush();
-      exit(1);
-    }
-    M.print(OS, nullptr);
-  };
-
-  // Compute a hash suffix for promoting static globals (once per TU).
-  std::string PromotionSuffix;
-  {
-    // LLVM's hash/hash_combine is not guaranteed to be stable.
-    MD5 Hash;
-    // Include args in the hash else preprocessor definitions used to alter
-    // the same source file compiled twice won't generate unique hashes.
-    Hash.update(CGOpts.CmdArgs);
-    for (auto *CU : M->debug_compile_units()) {
-      Hash.update(CU->getDirectory());
-      Hash.update(CU->getFilename());
-    }
-
-    MD5::MD5Result Result;
-    Hash.final(Result);
-    PromotionSuffix = ".dyndbg." + utohexstr(Result.low());
-  }
-
-  SaveModule("dyndbg.0.input", *M);
-  // Modify M as needed and create an "unoptimized" clone.
-  auto UnoptM = prepareForDynamicDebugging(M, PromotionSuffix);
-  SaveModule("dyndbg.1.inner", *UnoptM);
-
-  if (!CGOpts.DiscardDynamicDebuggingDebugModule) {
-    CodeGenOptions UnoptOpts = CGOpts;
-    UnoptOpts.OptimizationLevel = 0;
-    UnoptOpts.OptimizeSize = 0;
-    EmitAssemblyHelper AsmHelper(CI, UnoptOpts, UnoptM.get(), VFS);
-
-    // Create a buffer and ostream for the inner ELF.
-    SmallVector<char, 0> UnoptBuf;
-    std::unique_ptr<llvm::raw_pwrite_stream> UnoptOS =
-        std::make_unique<llvm::raw_svector_ostream>(UnoptBuf);
-
-    // Always run the full codegen pipeline (Backend_EmitObj). This causes
-    // assertion failures if there's no registered backend which is why we
-    // disable the feature if that's the case (see
-    // warn_dyndbg_unable_to_create_target above).
-    AsmHelper.emitAssembly(Backend_EmitObj, std::move(UnoptOS), BC);
-    assert(!UnoptBuf.empty() && "Expected emitAssembly to fill UnoptBuf");
-
-    // Inject the inner ELF into the outer module.
-    StringRef SR(UnoptBuf.data(), UnoptBuf.size());
-    std::unique_ptr<MemoryBuffer> Buf =
-        MemoryBuffer::getMemBuffer(SR, "", false);
-
-    GlobalVariable *EmbeddedGV =
-        llvm::embedBufferInModule(*M, *Buf, ".debug_llvm_dyndbg", Align(8),
-                                  /*SectionExclude*/ false);
-    // Add ELF section properties metadata.
-    auto &C = M->getContext();
-    auto getU32Metadata = [&C](unsigned Val) {
-      return ConstantAsMetadata::get(ConstantInt::get(C, APInt(32, Val)));
-    };
-    EmbeddedGV->addMetadata(
-        LLVMContext::MD_elf_section_properties,
-        *MDTuple::get(C, {/*sh_type*/ getU32Metadata(ELF::SHT_LLVM_DYNDBG_ELF),
-                          /*sh_entsize*/ getU32Metadata(0)}));
-  }
-  SaveModule("dyndbg.2.outer", *M);
-}
-
 void clang::emitBackendOutput(CompilerInstance &CI, CodeGenOptions &CGOpts,
                               StringRef TDesc, llvm::Module *M,
                               BackendAction Action,
@@ -1603,7 +1518,7 @@ void clang::emitBackendOutput(CompilerInstance &CI, CodeGenOptions &CGOpts,
                       .moveInto(CombinedIndex)) {
       logAllUnhandledErrors(std::move(E), errs(),
                             "Error loading index file '" +
-                                CGOpts.ThinLTOIndexFile + "': ");
+                            CGOpts.ThinLTOIndexFile + "': ");
       return;
     }
 
@@ -1629,30 +1544,6 @@ void clang::emitBackendOutput(CompilerInstance &CI, CodeGenOptions &CGOpts,
     }
   }
 
-  bool EnableDynamicDebugging = CGOpts.DynamicDebugging;
-  // Disable dyndbg if the target isn't available as we're compiling to the
-  // inner module to object regardless of other options. (This may change).
-  if (EnableDynamicDebugging) {
-    std::string Error;
-    const llvm::Target *TheTarget =
-        TargetRegistry::lookupTarget(M->getTargetTriple(), Error);
-    if (!TheTarget) {
-      Diags.Report(diag::warn_dyndbg_unable_to_create_target) << Error;
-      EnableDynamicDebugging = false;
-    }
-
-    // Instrumentation causes issues (parts of LLVM expect certain globals to
-    // have initializers). Intrinsics may already have been added to IR by now,
-    // so we can't just turn it off for the inner module (we'd have to strip
-    // them out / not clone them). TODO: Support instrumentation.
-    if (CGOpts.getProfileInstr() != driver::ProfileInstrKind::ProfileNone) {
-      Diags.Report(diag::err_dyndbg_no_instrumentation);
-      EnableDynamicDebugging = false;
-    }
-  }
-  if (EnableDynamicDebugging)
-    createAndEmbedModuleForDynamicDebugging(CI, CGOpts, M, VFS, BC);
-
   EmitAssemblyHelper AsmHelper(CI, CGOpts, M, VFS);
   AsmHelper.emitAssembly(Action, std::move(OS), BC);
 
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
index d2ddea2551418..19d37b2ed7017 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -4661,7 +4661,7 @@ renderDebugOptions(const ToolChain &TC, const Driver &D, const llvm::Triple &T,
                    const ArgList &Args, types::ID InputType,
                    ArgStringList &CmdArgs, const InputInfo &Output,
                    llvm::codegenoptions::DebugInfoKind &DebugInfoKind,
-                   DwarfFissionKind &DwarfFission, bool IsUsingLTO) {
+                   DwarfFissionKind &DwarfFission) {
   bool IRInput = isLLVMIR(InputType);
   bool PlainCOrCXX = isDerivedFromC(InputType) && !isCuda(InputType) &&
                      !isHIP(InputType) && !isObjC(InputType) &&
@@ -4886,36 +4886,6 @@ renderDebugOptions(const ToolChain &TC, const Driver &D, const llvm::Triple &T,
                     options::OPT_gno_structor_decl_linkage_names, true))
     CmdArgs.push_back("-gno-structor-decl-linkage-names");
 
-  if (Args.hasFlag(options::OPT_fdynamic_debugging,
-                   options::OPT_fno_dynamic_debugging, false)) {
-    // As this is an experimental feature we can afford to be strict about
-    // supported configurations.
-    // NOTE on adding target support, consider adding "tail-pad-to-size"
-    // support in `llvm::prepareForDynamicDebugging`.
-    if (!TC.getTriple().isX86())
-      D.Diag(diag::err_drv_unsupported_opt_for_target)
-          << Args.getLastArg(options::OPT_fdynamic_debugging)->getAsString(Args)
-          << T.getTriple();
-    if (IsUsingLTO)
-      D.Diag(diag::err_drv_dyndbg_lto);
-    if (DwarfFission != DwarfFissionKind::None)
-      D.Diag(diag::err_drv_dyndbg_incompatible)
-          << Args.getLastArg(options::OPT_gsplit_dwarf)->getAsString(Args);
-    // There's no fundamental reason why IR input should be incompatible, but
-    // it would add some complexity, and reducing the test matrix is valuable.
-    if (IRInput)
-      D.Diag(diag::err_drv_dyndbg_ir);
-
-    // Disable composition with sanitizers for now.
-    if (auto *San = Args.getLastArg(options::OPT_fsanitize_EQ))
-      D.Diag(diag::err_drv_dyndbg_incompatible) << San->getAsString(Args);
-
-    if (!EmitDwarf)
-      D.Diag(diag::warn_drv_dyndbg_req_debug);
-    else
-      CmdArgs.push_back("-fdynamic-debugging");
-  }
-
   if (EmitCodeView) {
     CmdArgs.push_back("-gcodeview");
 
@@ -5635,9 +5605,6 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
   if (Args.getLastArg(options::OPT_save_temps_EQ))
     Args.AddLastArg(CmdArgs, options::OPT_save_temps_EQ);
 
-  if (Args.getLastArg(options::OPT_save_dynamic_debugging_temps))
-    Args.AddLastArg(CmdArgs, options::OPT_save_dynamic_debugging_temps);
-
   auto *MemProfArg = Args.getLastArg(options::OPT_fmemory_profile,
                                      options::OPT_fmemory_profile_EQ,
                                      options::OPT_fno_memory_profile);
@@ -6475,7 +6442,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
       llvm::codegenoptions::NoDebugInfo;
   DwarfFissionKind DwarfFission = DwarfFissionKind::None;
   renderDebugOptions(TC, D, RawTriple, Args, InputType, CmdArgs, Output,
-                     DebugInfoKind, DwarfFission, IsUsingLTO);
+                     DebugInfoKind, DwarfFission);
 
   // Add the split debug info name to the command lines here so we
   // can propagate it to the backend.
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp
index 70fc346d85920..256ae636ca9e6 100644
--- a/clang/lib/Frontend/CompilerInvocation.cpp
+++ b/clang/lib/Frontend/CompilerInvocation.cpp
@@ -1679,9 +1679,6 @@ void CompilerInvocationBase::GenerateCodeGenArgs(const CodeGenOptions &Opts,
   if (Opts.SaveTempsFilePrefix == OutputFile)
     GenerateArg(Consumer, OPT_save_temps_EQ, "obj");
 
-  if (!Opts.SaveDynDbgTempsFilePrefix.empty())
-    GenerateArg(Consumer, OPT_save_dynamic_debugging_temps);
-
   StringRef MemProfileBasename("memprof.profraw");
   if (!Opts.MemoryProfileOutput.empty()) {
     if (Opts.MemoryProfileOutput == MemProfileBasename) {
@@ -2016,9 +2013,6 @@ bool CompilerInvocation::ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args,
             .Case("obj", OutputFile)
             .Default(llvm::sys::path::filename(OutputFile).str());
 
-  if (Args.getLastArg(OPT_save_dynamic_debugging_temps))
-    Opts.SaveDynDbgTempsFilePrefix = OutputFile;
-
   // The memory profile runtime appends the pid to make this name more unique.
   const char *MemProfileBasename = "memprof.profraw";
   if (Args.hasArg(OPT_fmemory_profile_EQ)) {
diff --git a/clang/test/DebugInfo/DynamicDebugging/EndToEnd/X86/globalopt.c b/clang/test/DebugInfo/DynamicDebugging/EndToEnd/X86/globalopt.c
deleted file mode 100644
index 3cd4c630fb861..0000000000000
--- a/clang/test/DebugInfo/DynamicDebugging/EndToEnd/X86/globalopt.c
+++ /dev/null
@@ -1,24 +0,0 @@
-// Check `a` and `d` have aliases while keeping their original symbols.
-// GlobalOpt would usually replace these internal-linkage functions with
-// their external-linkage aliases. That's currently prevented as a side effect
-// of adding discardable functions to the compiler-used global.
-
-// RUN: %clang -cc1 %s -emit-obj -O3 -debug-info-kind=limited -fdynamic-debugging -o - -triple x86_64-unknown-unknown | llvm-nm - | FileCheck %s
-// CHECK: t a
-// CHECK: T a.dyndbg.[[hash:[A-F0-9]+]]
-// CHECK: T b
-// CHECK: U c
-// CHECK: t d
-// CHECK: T d.dyndbg.[[hash]]
-// CHECK: B g
-
-int g;
-int c();
-
-__attribute__((always_inline))
-static inline int d() { return c(); }
-
-__attribute__((always_inline))
-static int a() { return g; }
-
-int b() { return a() + d() ;}
diff --git a/clang/test/DebugInfo/DynamicDebugging/EndToEnd/X86/lit.local.cfg b/clang/test/DebugInfo/DynamicDebugging/EndToEnd/X86/lit.local.cfg
deleted file mode 100644
index bf8bd32700a9d..0000000000000
--- a/clang/test/DebugInfo/DynamicDebugging/EndToEnd/X86/lit.local.cfg
+++ /dev/null
@@ -1,4 +0,0 @@
-# These tests require x86 in order to inspect the inner object.
-# FIXME: These tests are quite broad.
-if "x86-registered-target" not in config.available_features:
-    config.unsupported = True
diff --git a/clang/test/DebugInfo/DynamicDebugging/EndToEnd/X86/obj-emission-target/lit.local.cfg b/clang/test/DebugInfo/DynamicDebugging/EndToEnd/X86/obj-emission-target/lit.local.cfg
deleted file mode 100644
index d36760917851d..0000000000000
--- a/clang/test/DebugInfo/DynamicDebugging/EndToEnd/X86/obj-emission-target/lit.local.cfg
+++ /dev/null
@@ -1,3 +0,0 @@
-# This test wants X86 support without aarch64 support.
-if "x86-registered-target" not in config.available_features or "aarch64-registered-target" in config.available_features:
-    config.unsupported = True
diff --git a/clang/test/DebugInfo/DynamicDebugging/EndToEnd/X86/obj-emission-target/no-target.c b/clang/test/DebugInfo/DynamicDebugging/EndToEnd/X86/obj-emission-target/no-target.c
deleted file mode 100644
index b5af3a3b7ac9c..0000000000000
--- a/clang/test/DebugInfo/DynamicDebugging/EndToEnd/X86/obj-emission-target/no-target.c
+++ /dev/null
@@ -1,14 +0,0 @@
-// Check we get a warning if -fdynamic-debugging is specified for an
-// unsupported target. Dynamic debugging currently emits the inner module as
-// an object regardless of output flags (e.g. -emit-llvm).
-
-// RUN: %clang -cc1 %s -emit-llvm -debug-info-kind=limited -fdynamic-debugging -o - -triple aarch64-unknown-unknown 2>&1  | FileCheck %s --check-prefix=WITHOUT_TARGET
-// WITHOUT_TARGET: warning: ignoring -fdynamic-debugging: unable to create target: 'No available targets are compatible with triple "aarch64-unknown-unknown"'
-// WITHOUT_TARGET-NOT: .debug_llvm_dyndbg
-
-// Prevent rotten green test by checking we do see .debug_llvm_dyndbg otherwise.
-// RUN: %clang -cc1 %s -emit-obj -debug-info-kind=limited -fdynamic-debugging -o - -triple x86_64-unknown-unknown 2>&1 | FileCheck %s --check-prefix=WITH_TARGET
-// WITH_TARGET-NOT: ignoring -fdynamic-debugging:
-// WITH_TARGET: .debug_llvm_dyndbg
-
-int g;
diff --git a/clang/test/DebugInfo/DynamicDebugging/EndToEnd/X86/section.c b/clang/test/DebugInfo/DynamicDebugging/EndToEnd/X86/section.c
deleted file mode 100644
index 10e1a6ef05da9..0000000000000
--...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/216298


More information about the cfe-commits mailing list