llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-lld Author: Rahman Lavaee (rlavaee) <details> <summary>Changes</summary> This feature is supported via the newer option `-fbasic-block-address-map`. Using the old option still works by delegating to the newer option, while a warning is printed to show deprecation. --- Patch is 23.74 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/107494.diff 22 Files Affected: - (modified) clang/docs/UsersManual.rst (+7-5) - (modified) clang/include/clang/Basic/CodeGenOptions.h (+2-7) - (modified) clang/include/clang/Driver/Options.td (+2-2) - (modified) clang/lib/CodeGen/BackendUtil.cpp (-1) - (modified) clang/lib/Driver/ToolChains/Clang.cpp (+7-3) - (modified) clang/test/Driver/fbasic-block-sections.c (+2-1) - (modified) lld/ELF/LTO.cpp (+4-2) - (modified) llvm/include/llvm/CodeGen/MachineFunction.h (-5) - (modified) llvm/include/llvm/Target/TargetOptions.h (-3) - (modified) llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp (+4-5) - (modified) llvm/lib/CodeGen/BasicBlockSections.cpp (-7) - (modified) llvm/lib/CodeGen/CommandFlags.cpp (-2) - (modified) llvm/lib/CodeGen/MIRParser/MIParser.cpp (-4) - (modified) llvm/lib/CodeGen/MIRParser/MIRParser.cpp (+1-3) - (modified) llvm/lib/CodeGen/MachineFunction.cpp (+3-5) - (renamed) llvm/test/CodeGen/X86/basic-block-address-map-empty-block.ll (+1-1) - (renamed) llvm/test/CodeGen/X86/basic-block-address-map-empty-function.ll (+2-2) - (modified) llvm/test/CodeGen/X86/basic-block-address-map-function-sections.ll (-1) - (renamed) llvm/test/CodeGen/X86/basic-block-address-map-mir-parse.mir (+2-2) - (modified) llvm/test/CodeGen/X86/basic-block-address-map.ll (+1-3) - (modified) llvm/test/CodeGen/X86/basic-block-sections-labels-pgo-features.ll (+5-5) - (modified) llvm/test/CodeGen/X86/basic-block-sections-mir-print.ll (+5-5) ``````````diff diff --git a/clang/docs/UsersManual.rst b/clang/docs/UsersManual.rst index f27fa4ace917ea..30a7abeea0fb58 100644 --- a/clang/docs/UsersManual.rst +++ b/clang/docs/UsersManual.rst @@ -2369,14 +2369,16 @@ are listed below. $ cd $P/bar && clang -c -funique-internal-linkage-names name_conflict.c $ cd $P && clang foo/name_conflict.o && bar/name_conflict.o -.. option:: -fbasic-block-sections=[labels, all, list=<arg>, none] +.. option:: -f[no]-basic-block-address-map: + Emits a ``SHT_LLVM_BB_ADDR_MAP`` which includes address offsets for each + basic block in the program, relative to the parent function address. + + +.. option:: -fbasic-block-sections=[all, list=<arg>, none] Controls how Clang emits text sections for basic blocks. With values ``all`` and ``list=<arg>``, each basic block or a subset of basic blocks can be placed - in its own unique section. With the "labels" value, normal text sections are - emitted, but a ``.bb_addr_map`` section is emitted which includes address - offsets for each basic block in the program, relative to the parent function - address. + in its own unique section. With the ``list=<arg>`` option, a file containing the subset of basic blocks that need to placed in unique sections can be specified. The format of the diff --git a/clang/include/clang/Basic/CodeGenOptions.h b/clang/include/clang/Basic/CodeGenOptions.h index f2a707a8ba8d76..814d4d4c99e575 100644 --- a/clang/include/clang/Basic/CodeGenOptions.h +++ b/clang/include/clang/Basic/CodeGenOptions.h @@ -107,18 +107,13 @@ class CodeGenOptions : public CodeGenOptionsBase { // This field stores one of the allowed values for the option // -fbasic-block-sections=. The allowed values with this option are: - // {"labels", "all", "list=<file>", "none"}. + // {"all", "list=<file>", "none"}. // - // "labels": Only generate basic block symbols (labels) for all basic - // blocks, do not generate unique sections for basic blocks. - // Use the machine basic block id in the symbol name to - // associate profile info from virtual address to machine - // basic block. // "all" : Generate basic block sections for all basic blocks. // "list=<file>": Generate basic block sections for a subset of basic blocks. // The functions and the machine basic block ids are specified // in the file. - // "none": Disable sections/labels for basic blocks. + // "none": Disable sections for basic blocks. std::string BBSections; // If set, override the default value of MCAsmInfo::BinutilsVersion. If diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 1142416e227fc8..41e916ad81ebea 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -4225,8 +4225,8 @@ defm basic_block_address_map : BoolFOption<"basic-block-address-map", def fbasic_block_sections_EQ : Joined<["-"], "fbasic-block-sections=">, Group<f_Group>, Visibility<[ClangOption, CC1Option, CC1AsOption]>, HelpText<"Place each function's basic blocks in unique sections (ELF Only)">, - DocBrief<[{Generate labels for each basic block or place each basic block or a subset of basic blocks in its own section.}]>, - Values<"all,labels,none,list=">, + DocBrief<[{Place each basic block or a subset of basic blocks in its own section.}]>, + Values<"all,none,list=">, MarshallingInfoString<CodeGenOpts<"BBSections">, [{"none"}]>; defm data_sections : BoolFOption<"data-sections", CodeGenOpts<"DataSections">, DefaultFalse, diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp index 7fa69420298160..b369bb043537c2 100644 --- a/clang/lib/CodeGen/BackendUtil.cpp +++ b/clang/lib/CodeGen/BackendUtil.cpp @@ -396,7 +396,6 @@ static bool initTargetOptions(DiagnosticsEngine &Diags, Options.BBSections = llvm::StringSwitch<llvm::BasicBlockSection>(CodeGenOpts.BBSections) .Case("all", llvm::BasicBlockSection::All) - .Case("labels", llvm::BasicBlockSection::Labels) .StartsWith("list=", llvm::BasicBlockSection::List) .Case("none", llvm::BasicBlockSection::None) .Default(llvm::BasicBlockSection::None); diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 3fe4ce5d893b8d..860863193417f3 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -6225,9 +6225,13 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, if (Arg *A = Args.getLastArg(options::OPT_fbasic_block_sections_EQ)) { StringRef Val = A->getValue(); - if (Triple.isX86() && Triple.isOSBinFormatELF()) { - if (Val != "all" && Val != "labels" && Val != "none" && - !Val.starts_with("list=")) + if (Val == "labels") { + D.Diag(diag::warn_drv_deprecated_arg) + << A->getAsString(Args) << /*hasReplacement=*/true + << "-fbasic-block-address-map"; + CmdArgs.push_back("-fbasic-block-address-map"); + } else if (Triple.isX86() && Triple.isOSBinFormatELF()) { + if (Val != "all" && Val != "none" && !Val.starts_with("list=")) D.Diag(diag::err_drv_invalid_value) << A->getAsString(Args) << A->getValue(); else diff --git a/clang/test/Driver/fbasic-block-sections.c b/clang/test/Driver/fbasic-block-sections.c index e13cc81e910be3..6dfba5f404cee9 100644 --- a/clang/test/Driver/fbasic-block-sections.c +++ b/clang/test/Driver/fbasic-block-sections.c @@ -22,7 +22,8 @@ // CHECK-OPT-NONE: "-fbasic-block-sections=none" // CHECK-OPT-ALL: "-fbasic-block-sections=all" // CHECK-OPT-LIST: "-fbasic-block-sections={{[^ ]*}}fbasic-block-sections.c" -// CHECK-OPT-LABELS: "-fbasic-block-sections=labels" +// CHECK-OPT-LABELS: warning: argument '-fbasic-block-sections=labels' is deprecated, use '-fbasic-block-address-map' instead +// CHECK-OPT-LABELS: "-fbasic-block-address-map" // CHECK-TRIPLE: error: unsupported option '-fbasic-block-sections=all' for target // CHECK-INVALID-VALUE: error: invalid value {{[^ ]*}} in '-fbasic-block-sections={{.*}}' // CHECK-OPT-NULL-LIST: "-fbasic-block-sections=list=" diff --git a/lld/ELF/LTO.cpp b/lld/ELF/LTO.cpp index 935d0a9eab9ee0..721866378aa986 100644 --- a/lld/ELF/LTO.cpp +++ b/lld/ELF/LTO.cpp @@ -64,14 +64,16 @@ static lto::Config createConfig() { c.Options.BBAddrMap = config->ltoBBAddrMap; // Check if basic block sections must be used. - // Allowed values for --lto-basic-block-sections are "all", "labels", + // Allowed values for --lto-basic-block-sections are "all", // "<file name specifying basic block ids>", or none. This is the equivalent // of -fbasic-block-sections= flag in clang. if (!config->ltoBasicBlockSections.empty()) { if (config->ltoBasicBlockSections == "all") { c.Options.BBSections = BasicBlockSection::All; } else if (config->ltoBasicBlockSections == "labels") { - c.Options.BBSections = BasicBlockSection::Labels; + c.Options.BBAddrMap = true; + warn("'--lto-basic-block-sections=labels' is deprecated. Please use " + "'-fbasic-block-address-map' instead."); } else if (config->ltoBasicBlockSections == "none") { c.Options.BBSections = BasicBlockSection::None; } else { diff --git a/llvm/include/llvm/CodeGen/MachineFunction.h b/llvm/include/llvm/CodeGen/MachineFunction.h index 9845520d6db6b2..ed083bdd8ec4cd 100644 --- a/llvm/include/llvm/CodeGen/MachineFunction.h +++ b/llvm/include/llvm/CodeGen/MachineFunction.h @@ -699,11 +699,6 @@ class LLVM_EXTERNAL_VISIBILITY MachineFunction { BBSectionsType == BasicBlockSection::Preset); } - /// Returns true if basic block labels are to be generated for this function. - bool hasBBLabels() const { - return BBSectionsType == BasicBlockSection::Labels; - } - void setBBSectionsType(BasicBlockSection V) { BBSectionsType = V; } /// Assign IsBeginSection IsEndSection fields for basic blocks in this diff --git a/llvm/include/llvm/Target/TargetOptions.h b/llvm/include/llvm/Target/TargetOptions.h index d3464b5202ff32..210d9fed1febde 100644 --- a/llvm/include/llvm/Target/TargetOptions.h +++ b/llvm/include/llvm/Target/TargetOptions.h @@ -64,9 +64,6 @@ namespace llvm { List, // Get list of functions & BBs from a file. Selectively enables // basic block sections for a subset of basic blocks which can be // used to control object size bloats from creating sections. - Labels, // Do not use Basic Block Sections but label basic blocks. This - // is useful when associating profile counts from virtual addresses - // to basic blocks. Preset, // Similar to list but the blocks are identified by passes which // seek to use Basic Block Sections, e.g. MachineFunctionSplitter. // This option cannot be set via the command line. diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp index 88e9b9d27d3f27..bd253e97f6479c 100644 --- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -1859,7 +1859,7 @@ void AsmPrinter::emitFunctionBody() { // We must emit temporary symbol for the end of this basic block, if either // we have BBLabels enabled or if this basic blocks marks the end of a // section. - if (MF->hasBBLabels() || MF->getTarget().Options.BBAddrMap || + if (MF->getTarget().Options.BBAddrMap || (MAI->hasDotTypeDotSizeDirective() && MBB.isEndSection())) OutStreamer->emitLabel(MBB.getEndSymbol()); @@ -2011,7 +2011,7 @@ void AsmPrinter::emitFunctionBody() { // Emit section containing BB address offsets and their metadata, when // BB labels are requested for this function. Skip empty functions. if (HasAnyRealCode) { - if (MF->hasBBLabels() || MF->getTarget().Options.BBAddrMap) + if (MF->getTarget().Options.BBAddrMap) emitBBAddrMapSection(*MF); else if (PgoAnalysisMapFeatures.getBits() != 0) MF->getContext().reportWarning( @@ -2610,7 +2610,7 @@ void AsmPrinter::SetupMachineFunction(MachineFunction &MF) { F.hasFnAttribute("xray-instruction-threshold") || needFuncLabels(MF, *this) || NeedsLocalForSize || MF.getTarget().Options.EmitStackSizeSection || - MF.getTarget().Options.BBAddrMap || MF.hasBBLabels()) { + MF.getTarget().Options.BBAddrMap) { CurrentFnBegin = createTempSymbol("func_begin"); if (NeedsLocalForSize) CurrentFnSymForSize = CurrentFnBegin; @@ -4093,8 +4093,7 @@ bool AsmPrinter::shouldEmitLabelForBasicBlock( // With `-fbasic-block-sections=`, a label is needed for every non-entry block // in the labels mode (option `=labels`) and every section beginning in the // sections mode (`=all` and `=list=`). - if ((MF->hasBBLabels() || MF->getTarget().Options.BBAddrMap || - MBB.isBeginSection()) && + if ((MF->getTarget().Options.BBAddrMap || MBB.isBeginSection()) && !MBB.isEntryBlock()) return true; // A label is needed for any block with at least one predecessor (when that diff --git a/llvm/lib/CodeGen/BasicBlockSections.cpp b/llvm/lib/CodeGen/BasicBlockSections.cpp index 0071284c862099..1eedfc4b259126 100644 --- a/llvm/lib/CodeGen/BasicBlockSections.cpp +++ b/llvm/lib/CodeGen/BasicBlockSections.cpp @@ -311,11 +311,6 @@ bool BasicBlockSections::handleBBSections(MachineFunction &MF) { // original layout positions and finding the original fallthroughs. MF.RenumberBlocks(); - if (BBSectionsType == BasicBlockSection::Labels) { - MF.setBBSectionsType(BBSectionsType); - return true; - } - DenseMap<UniqueBBID, BBClusterInfo> FuncClusterInfo; if (BBSectionsType == BasicBlockSection::List) { auto [HasProfile, ClusterInfo] = @@ -382,8 +377,6 @@ bool BasicBlockSections::handleBBSections(MachineFunction &MF) { // avoids the need to store basic block IDs in the BB address map section, since // they can be determined implicitly. bool BasicBlockSections::handleBBAddrMap(MachineFunction &MF) { - if (MF.getTarget().getBBSectionsType() == BasicBlockSection::Labels) - return false; if (!MF.getTarget().Options.BBAddrMap) return false; MF.RenumberBlocks(); diff --git a/llvm/lib/CodeGen/CommandFlags.cpp b/llvm/lib/CodeGen/CommandFlags.cpp index 9e42deb94903de..d180cfcea658c2 100644 --- a/llvm/lib/CodeGen/CommandFlags.cpp +++ b/llvm/lib/CodeGen/CommandFlags.cpp @@ -525,8 +525,6 @@ llvm::BasicBlockSection codegen::getBBSectionsMode(llvm::TargetOptions &Options) { if (getBBSections() == "all") return BasicBlockSection::All; - else if (getBBSections() == "labels") - return BasicBlockSection::Labels; else if (getBBSections() == "none") return BasicBlockSection::None; else { diff --git a/llvm/lib/CodeGen/MIRParser/MIParser.cpp b/llvm/lib/CodeGen/MIRParser/MIParser.cpp index 47b220172602d4..c112bb8e232d27 100644 --- a/llvm/lib/CodeGen/MIRParser/MIParser.cpp +++ b/llvm/lib/CodeGen/MIRParser/MIParser.cpp @@ -800,10 +800,6 @@ bool MIParser::parseBasicBlockDefinition( MF.setBBSectionsType(BasicBlockSection::List); } if (BBID.has_value()) { - // BBSectionsType is set to `List` if any basic blocks has `SectionID`. - // Here, we set it to `Labels` if it hasn't been set above. - if (!MF.hasBBSections()) - MF.setBBSectionsType(BasicBlockSection::Labels); MBB->setBBID(BBID.value()); } MBB->setCallFrameSize(CallFrameSize); diff --git a/llvm/lib/CodeGen/MIRParser/MIRParser.cpp b/llvm/lib/CodeGen/MIRParser/MIRParser.cpp index a5d6a40392d0cb..90b211cab0e658 100644 --- a/llvm/lib/CodeGen/MIRParser/MIRParser.cpp +++ b/llvm/lib/CodeGen/MIRParser/MIRParser.cpp @@ -540,9 +540,7 @@ MIRParserImpl::initializeMachineFunction(const yaml::MachineFunction &YamlMF, return true; } // Check Basic Block Section Flags. - if (MF.getTarget().getBBSectionsType() == BasicBlockSection::Labels) { - MF.setBBSectionsType(BasicBlockSection::Labels); - } else if (MF.hasBBSections()) { + if (MF.hasBBSections()) { MF.assignBeginEndSections(); } PFS.SM = &SM; diff --git a/llvm/lib/CodeGen/MachineFunction.cpp b/llvm/lib/CodeGen/MachineFunction.cpp index ab45663436cedc..b56888a0f71fe6 100644 --- a/llvm/lib/CodeGen/MachineFunction.cpp +++ b/llvm/lib/CodeGen/MachineFunction.cpp @@ -465,11 +465,9 @@ MachineFunction::CreateMachineBasicBlock(const BasicBlock *BB, MachineBasicBlock *MBB = new (BasicBlockRecycler.Allocate<MachineBasicBlock>(Allocator)) MachineBasicBlock(*this, BB); - // Set BBID for `-basic-block=sections=labels` and - // `-basic-block-sections=list` to allow robust mapping of profiles to basic - // blocks. - if (Target.getBBSectionsType() == BasicBlockSection::Labels || - Target.Options.BBAddrMap || + // Set BBID for `-basic-block-sections=list` and `-basic-block-address-map` to + // allow robust mapping of profiles to basic blocks. + if (Target.Options.BBAddrMap || Target.getBBSectionsType() == BasicBlockSection::List) MBB->setBBID(BBID.has_value() ? *BBID : UniqueBBID{NextBBID++, 0}); return MBB; diff --git a/llvm/test/CodeGen/X86/basic-block-sections-labels-empty-block.ll b/llvm/test/CodeGen/X86/basic-block-address-map-empty-block.ll similarity index 83% rename from llvm/test/CodeGen/X86/basic-block-sections-labels-empty-block.ll rename to llvm/test/CodeGen/X86/basic-block-address-map-empty-block.ll index 8e0f4fa7bc928e..84948b7ecf6e0c 100644 --- a/llvm/test/CodeGen/X86/basic-block-sections-labels-empty-block.ll +++ b/llvm/test/CodeGen/X86/basic-block-address-map-empty-block.ll @@ -1,5 +1,5 @@ ;; This test verifies that with -gc-empty-basic-blocks SHT_LLVM_BB_ADDR_MAP will not include entries for empty blocks. -; RUN: llc < %s -mtriple=x86_64 -O0 -basic-block-sections=labels -gc-empty-basic-blocks | FileCheck --check-prefix=CHECK %s +; RUN: llc < %s -mtriple=x86_64 -O0 -basic-block-address-map -gc-empty-basic-blocks | FileCheck --check-prefix=CHECK %s define void @foo(i1 zeroext %0) nounwind { br i1 %0, label %2, label %empty_block diff --git a/llvm/test/CodeGen/X86/basic-block-sections-labels-empty-function.ll b/llvm/test/CodeGen/X86/basic-block-address-map-empty-function.ll similarity index 68% rename from llvm/test/CodeGen/X86/basic-block-sections-labels-empty-function.ll rename to llvm/test/CodeGen/X86/basic-block-address-map-empty-function.ll index 42d09212e66916..444655fc5299f7 100644 --- a/llvm/test/CodeGen/X86/basic-block-sections-labels-empty-function.ll +++ b/llvm/test/CodeGen/X86/basic-block-address-map-empty-function.ll @@ -1,6 +1,6 @@ ;; Verify that the BB address map is not emitted for empty functions. -; RUN: llc < %s -mtriple=x86_64 -basic-block-sections=labels | FileCheck %s --check-prefixes=CHECK,BASIC -; RUN: llc < %s -mtriple=x86_64 -basic-block-sections=labels -pgo-analysis-map=func-entry-count,bb-freq | FileCheck %s --check-prefixes=CHECK,PGO +; RUN: llc < %s -mtriple=x86_64 -basic-block-address-map | FileCheck %s --check-prefixes=CHECK,BASIC +; RUN: llc < %s -mtriple=x86_64 -basic-block-address-map -pgo-analysis-map=func-entry-count,bb-freq | FileCheck %s --check-prefixes=CHECK,PGO define void @empty_func() { entry: diff --git a/llvm/test/CodeGen/X86/basic-block-address-map-function-sections.ll b/llvm/test/CodeGen/X86/basic-block-address-map-function-sections.ll index d7678604cffa2c..9ff96381c2053f 100644 --- a/llvm/test/CodeGen/X86/basic-block-address-map-function-sections.ll +++ b/llvm/test/CodeGen/X86/basic-block-address-map-function-sections.ll @@ -1,4 +1,3 @@ -; RUN: llc < %s -mtriple=x86_64 -function-sections -basic-block-sections=labels | FileCheck %s ; RUN: llc < %s -mtriple=x86_64 -function-sections -basic-block-address-map | FileCheck %s $_Z4fooTIiET_v = comdat any diff --git a/llvm/test/CodeGen/X86/basic-block-labels-mir-parse.mir b/llvm/test/CodeGen/X86/basic-block-address-map-mir-parse.mir similarity index 97% rename from llvm/test/CodeGen/X86/basic-block-labels-mir-parse.mir rename to llvm/test/CodeGen/X86/basic-block-address-map-mir-parse.mir index 6408f0a30af7e5..86f5f27494ec40 100644 --- a/llvm/test/CodeGen/X86/basic-block-labels-mir-parse.mir +++ b/llvm/test/CodeGen/X86/basic-block-address-map-mir-parse.mir @@ -1,5 +1,5 @@ # Start after bbsections0-prepare and check that the BB address map is generated. -# RUN: llc -mtriple x86_64-unknown-linux-gnu -start-after=bbsections-prepare %s -o - | FileCheck %s -check-prefix=CHECK +# RUN: llc -mtriple x86_64-unknown-linux-gnu -start-after=bbsections-prepare -basic-block-address-map %s -o - | FileCheck %s -check-prefix=CHECK # How to generate the input: # foo.cc @@ -9,7 +9,7 @@ # } # # clang -O0 -S -emit-llvm foo.cc -# llc < foo.ll -stop-after=bbsections-prepare -basic-block-sections=labels +# llc < foo.ll -stop-after=bbsections-prepare -basic-block-address-map # CHECK: .section .llvm_bb_addr_map,"o",@llvm_bb_addr_map,.text --- | diff --git a/llvm/test/CodeGen/X86/basic-block-address-map.ll b/llvm/test/CodeGen/X86/basic-block-address-map.ll index 6ab24b494936ab..4f12258eeeea00 100644 --- a/llvm/test/CodeGen/X86/basic-block-address-map.ll +++ b/llvm/test/CodeGen/X86/basic-block-address-map.ll @@ -1,9 +1,7 @@ ; Check the basic block sections labels option ; RUN: llc < %s -mtriple=x86_64 -function-sections -unique-section-names=true -basic-block-address-map | FileCheck %s --check-prefixes=CHECK,UNIQ -; RUN: llc < %s -mtriple=x86_64 -function-sections -unique-section-names=true -basic-block-sections=labels | FileCheck %s --check-prefixes=CHECK,UNIQ ; RUN: llc < %s -mtriple=x86_64 -function-sections -unique-section-names=false -basic-block-address-map | FileCheck %s --check-prefixes=CHECK,NOUNIQ -; RUN: llc < %s -mtriple=x86_64 -function-sections -unique-section-names=false -basic-block-sections=labels | FileCheck %s --check-prefixes=CHECK,NOUNIQ -; RUN: llc < %s -mtriple=x86_64 -function-sections -unique-section-names=true -basic-block-sections=labels -split-machine-functions | FileCheck %s --check-prefixes=CHECK,UNIQ +; RUN: llc < %s -mtriple=x86_64 -function-sections -unique-section-names=true -basic-block-address-map -split-machine-functions | FileCheck %s --check-prefixes=CHECK,UNIQ define void @_Z3bazb(i1 zeroext, i1 zeroext) personality ptr @__gxx_personality_v0 { br i1 %0, labe... [truncated] `````````` </details> https://github.com/llvm/llvm-project/pull/107494 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits