https://github.com/aganea created https://github.com/llvm/llvm-project/pull/95259
This is used to set DebugInfoKind to "UnusedTypeInfo". This helps in the context Unreal Engine and NATVIS files that reference unused otherwise `static constexpr` class members. See https://udn.unrealengine.com/s/question/0D5QP00000N012h0AB/fname-debug-visualizer-fails-to-work-with-the-clang-compiler This fixes https://github.com/llvm/llvm-project/issues/46924 >From 75fd0578766ac923a989b0fb5d98f779f9af1f14 Mon Sep 17 00:00:00 2001 From: Alexandre Ganea <aga...@havenstudios.com> Date: Wed, 12 Jun 2024 09:44:21 -0400 Subject: [PATCH] [Clang][Driver] Expose `-fno-eliminate-unused-debug-types` to clang-cl This fixes https://github.com/llvm/llvm-project/issues/46924 --- clang/docs/UsersManual.rst | 3 +++ clang/include/clang/Driver/Options.td | 2 +- clang/test/Driver/cl-options.c | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/clang/docs/UsersManual.rst b/clang/docs/UsersManual.rst index f954857b0235a..d36db8a01949c 100644 --- a/clang/docs/UsersManual.rst +++ b/clang/docs/UsersManual.rst @@ -3338,6 +3338,9 @@ below. If multiple flags are present, the last one is used. By default, Clang does not emit type information for types that are defined but not used in a program. To retain the debug info for these unused types, the negation **-fno-eliminate-unused-debug-types** can be used. + This can be particulary useful on Windows, when using NATVIS files that + can reference const symbols that would otherwise be stripped, even in full + debug or standalone debug modes. Controlling Macro Debug Info Generation ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 9f7904dd94b94..b75d67551bc97 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -2120,7 +2120,7 @@ def fno_elide_type : Flag<["-"], "fno-elide-type">, Group<f_Group>, MarshallingInfoNegativeFlag<DiagnosticOpts<"ElideType">>; def feliminate_unused_debug_symbols : Flag<["-"], "feliminate-unused-debug-symbols">, Group<f_Group>; defm eliminate_unused_debug_types : OptOutCC1FFlag<"eliminate-unused-debug-types", - "Do not emit ", "Emit ", " debug info for defined but unused types">; + "Do not emit ", "Emit ", " debug info for defined but unused types", [ClangOption, CLOption]>; def femit_all_decls : Flag<["-"], "femit-all-decls">, Group<f_Group>, Visibility<[ClangOption, CC1Option]>, HelpText<"Emit all declarations, even if unused">, diff --git a/clang/test/Driver/cl-options.c b/clang/test/Driver/cl-options.c index 2c17459dde656..d7d7c5c825815 100644 --- a/clang/test/Driver/cl-options.c +++ b/clang/test/Driver/cl-options.c @@ -696,6 +696,8 @@ // RUN: -Wunused-variable \ // RUN: -fmacro-backtrace-limit=0 \ // RUN: -fstandalone-debug \ +// RUN: -feliminate-unused-debug-types \ +// RUN: -fno-eliminate-unused-debug-types \ // RUN: -flimit-debug-info \ // RUN: -flto \ // RUN: -fmerge-all-constants \ _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits