[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