Author: Fangrui Song Date: 2020-10-19T23:06:33-07:00 New Revision: 2484e9159c54def19aac69c4a217a55329da54d2
URL: https://github.com/llvm/llvm-project/commit/2484e9159c54def19aac69c4a217a55329da54d2 DIFF: https://github.com/llvm/llvm-project/commit/2484e9159c54def19aac69c4a217a55329da54d2.diff LOG: [Driver] Clean up -gz & --compress-debug-sections * Make cc1 and cc1as --compress-debug-sections an alias for --compress-debug-sections=zlib * Make -gz an alias for -gz=zlib The new behavior is consistent with GCC when binutils>=2.26 is detected: -gz is translated to --compress-debug-sections=zlib instead of --compress-debug-sections. Added: Modified: clang/include/clang/Driver/Options.td clang/lib/Driver/ToolChains/Clang.cpp clang/lib/Frontend/CompilerInvocation.cpp clang/test/Driver/compress-noias.c clang/test/Driver/compress.c clang/test/Misc/cc1as-compress.s clang/tools/driver/cc1as_main.cpp Removed: ################################################################################ diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index f0664e15f88c..ff3681852efd 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -2121,10 +2121,9 @@ def gdwarf_aranges : Flag<["-"], "gdwarf-aranges">, Group<g_flags_Group>; def gmodules : Flag <["-"], "gmodules">, Group<gN_Group>, HelpText<"Generate debug info with external references to clang modules" " or precompiled headers">; -def gz : Flag<["-"], "gz">, Group<g_flags_Group>, - HelpText<"DWARF debug sections compression type">; def gz_EQ : Joined<["-"], "gz=">, Group<g_flags_Group>, HelpText<"DWARF debug sections compression type">; +def gz : Flag<["-"], "gz">, Alias<gz_EQ>, AliasArgs<["zlib"]>, Group<g_flags_Group>; def gembed_source : Flag<["-"], "gembed-source">, Group<g_flags_Group>, Flags<[CC1Option]>, HelpText<"Embed source text in DWARF debug sections">; def gno_embed_source : Flag<["-"], "gno-embed-source">, Group<g_flags_Group>, @@ -3732,10 +3731,10 @@ def dwarf_debug_flags : Separate<["-"], "dwarf-debug-flags">, HelpText<"The string to embed in the Dwarf debug flags record.">; def record_command_line : Separate<["-"], "record-command-line">, HelpText<"The string to embed in the .LLVM.command.line section.">; -def compress_debug_sections : Flag<["-", "--"], "compress-debug-sections">, - HelpText<"DWARF debug sections compression">; def compress_debug_sections_EQ : Joined<["-", "--"], "compress-debug-sections=">, HelpText<"DWARF debug sections compression type">; +def compress_debug_sections : Flag<["-", "--"], "compress-debug-sections">, + Alias<compress_debug_sections_EQ>, AliasArgs<["zlib"]>; def mno_exec_stack : Flag<["-"], "mnoexecstack">, HelpText<"Mark the file as not needing an executable stack">; def massembler_no_warn : Flag<["-"], "massembler-no-warn">, diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 934b02c698b7..9cdee130af43 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -1026,18 +1026,10 @@ static void RenderDebugInfoCompressionArgs(const ArgList &Args, ArgStringList &CmdArgs, const Driver &D, const ToolChain &TC) { - const Arg *A = Args.getLastArg(options::OPT_gz, options::OPT_gz_EQ); + const Arg *A = Args.getLastArg(options::OPT_gz_EQ); if (!A) return; if (checkDebugInfoOption(A, Args, D, TC)) { - if (A->getOption().getID() == options::OPT_gz) { - if (llvm::zlib::isAvailable()) - CmdArgs.push_back("--compress-debug-sections"); - else - D.Diag(diag::warn_debug_compression_unavailable); - return; - } - StringRef Value = A->getValue(); if (Value == "none") { CmdArgs.push_back("--compress-debug-sections=none"); diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index c3b5edca9497..f61a39363884 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -1170,18 +1170,13 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK, } } - if (const Arg *A = Args.getLastArg(OPT_compress_debug_sections, - OPT_compress_debug_sections_EQ)) { - if (A->getOption().getID() == OPT_compress_debug_sections) { - Opts.setCompressDebugSections(llvm::DebugCompressionType::Z); - } else { - auto DCT = llvm::StringSwitch<llvm::DebugCompressionType>(A->getValue()) - .Case("none", llvm::DebugCompressionType::None) - .Case("zlib", llvm::DebugCompressionType::Z) - .Case("zlib-gnu", llvm::DebugCompressionType::GNU) - .Default(llvm::DebugCompressionType::None); - Opts.setCompressDebugSections(DCT); - } + if (const Arg *A = Args.getLastArg(OPT_compress_debug_sections_EQ)) { + auto DCT = llvm::StringSwitch<llvm::DebugCompressionType>(A->getValue()) + .Case("none", llvm::DebugCompressionType::None) + .Case("zlib", llvm::DebugCompressionType::Z) + .Case("zlib-gnu", llvm::DebugCompressionType::GNU) + .Default(llvm::DebugCompressionType::None); + Opts.setCompressDebugSections(DCT); } Opts.RelaxELFRelocations = Args.hasArg(OPT_mrelax_relocations); diff --git a/clang/test/Driver/compress-noias.c b/clang/test/Driver/compress-noias.c index fa7482f4ab2d..40ec80acd761 100644 --- a/clang/test/Driver/compress-noias.c +++ b/clang/test/Driver/compress-noias.c @@ -17,7 +17,7 @@ // RUN: %clang -### -target i686-unknown-linux-gnu -fno-integrated-as -gz -x assembler -c %s 2>&1 | FileCheck -check-prefix CHECK-OPT_GZ %s // RUN: %clang -### -target i686-unknown-linux-gnu -fno-integrated-as -gz -c %s 2>&1 | FileCheck -check-prefix CHECK-OPT_GZ %s -// CHECK-OPT_GZ: "--compress-debug-sections" +// CHECK-OPT_GZ: "--compress-debug-sections=zlib" // RUN: %clang -### -target i686-unknown-linux-gnu -fno-integrated-as -gz=none -x assembler -c %s 2>&1 | FileCheck -check-prefix CHECK-OPT_GZ_EQ_NONE %s // RUN: %clang -### -target i686-unknown-linux-gnu -fno-integrated-as -gz=none -c %s 2>&1 | FileCheck -check-prefix CHECK-OPT_GZ_EQ_NONE %s diff --git a/clang/test/Driver/compress.c b/clang/test/Driver/compress.c index f2cc187278f4..9e3bf81f73e6 100644 --- a/clang/test/Driver/compress.c +++ b/clang/test/Driver/compress.c @@ -16,7 +16,7 @@ // RUN: %clang -### -fintegrated-as -gz -x assembler -c %s 2>&1 | FileCheck -check-prefix CHECK-OPT_GZ %s // RUN: %clang -### -fintegrated-as -gz -c %s 2>&1 | FileCheck -check-prefix CHECK-OPT_GZ %s -// CHECK-OPT_GZ: "--compress-debug-sections" +// CHECK-OPT_GZ: "--compress-debug-sections=zlib" // RUN: %clang -### -target x86_64-unknown-linux-gnu -gz=none -x assembler %s 2>&1 | FileCheck -check-prefix CHECK-OPT_GZ_EQ_NONE %s // RUN: %clang -### -target x86_64-unknown-linux-gnu -gz=none %s 2>&1 | FileCheck -check-prefix CHECK-OPT_GZ_EQ_NONE %s diff --git a/clang/test/Misc/cc1as-compress.s b/clang/test/Misc/cc1as-compress.s index beba227138d8..17c09cc653b4 100644 --- a/clang/test/Misc/cc1as-compress.s +++ b/clang/test/Misc/cc1as-compress.s @@ -1,8 +1,5 @@ // REQUIRES: zlib // REQUIRES: x86-registered-target -// RUN: %clang -cc1as -triple i686 --compress-debug-sections -filetype asm %s -o /dev/null 2>&1 | FileCheck -allow-empty %s -// RUN: %clang -cc1as -triple i686 -compress-debug-sections -filetype asm %s -o /dev/null 2>&1 | FileCheck -allow-empty %s - -// CHECK-NOT: error: unknown argument: - +// RUN: %clang -cc1as -triple i686 --compress-debug-sections %s -o /dev/null +// RUN: %clang -cc1as -triple i686 -compress-debug-sections=zlib %s -o /dev/null diff --git a/clang/tools/driver/cc1as_main.cpp b/clang/tools/driver/cc1as_main.cpp index 87047be3c2bc..6839b2eee016 100644 --- a/clang/tools/driver/cc1as_main.cpp +++ b/clang/tools/driver/cc1as_main.cpp @@ -221,18 +221,13 @@ bool AssemblerInvocation::CreateFromArgs(AssemblerInvocation &Opts, // Any DebugInfoKind implies GenDwarfForAssembly. Opts.GenDwarfForAssembly = Args.hasArg(OPT_debug_info_kind_EQ); - if (const Arg *A = Args.getLastArg(OPT_compress_debug_sections, - OPT_compress_debug_sections_EQ)) { - if (A->getOption().getID() == OPT_compress_debug_sections) { - Opts.CompressDebugSections = llvm::DebugCompressionType::Z; - } else { - Opts.CompressDebugSections = - llvm::StringSwitch<llvm::DebugCompressionType>(A->getValue()) - .Case("none", llvm::DebugCompressionType::None) - .Case("zlib", llvm::DebugCompressionType::Z) - .Case("zlib-gnu", llvm::DebugCompressionType::GNU) - .Default(llvm::DebugCompressionType::None); - } + if (const Arg *A = Args.getLastArg(OPT_compress_debug_sections_EQ)) { + Opts.CompressDebugSections = + llvm::StringSwitch<llvm::DebugCompressionType>(A->getValue()) + .Case("none", llvm::DebugCompressionType::None) + .Case("zlib", llvm::DebugCompressionType::Z) + .Case("zlib-gnu", llvm::DebugCompressionType::GNU) + .Default(llvm::DebugCompressionType::None); } Opts.RelaxELFRelocations = Args.hasArg(OPT_mrelax_relocations); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits