[lld] [llvm] [lld][COFF] Restore `lto-embed-bitcode` and `-fembed-bitcode` Bitcode Embedding Features (PR #188398)
Austin Hudson via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 25 06:31:38 PDT 2026
https://github.com/realoriginal updated https://github.com/llvm/llvm-project/pull/188398
>From 08bccbf72b01cdb0f195c07da5cb94735209b19e Mon Sep 17 00:00:00 2001
From: realoriginal <ajhson001 at gmail.com>
Date: Tue, 24 Mar 2026 19:17:31 -0700
Subject: [PATCH 1/3] Revert "[LLD][COFF] Discard .llvmbc and .llvmcmd sections
(#150897)"
This reverts commit 41f333250bf2b9699b9c8cfec3b12dc046162679.
---
lld/COFF/InputFiles.cpp | 5 -----
lld/test/COFF/embed-bitcode.test | 30 ------------------------------
2 files changed, 35 deletions(-)
delete mode 100644 lld/test/COFF/embed-bitcode.test
diff --git a/lld/COFF/InputFiles.cpp b/lld/COFF/InputFiles.cpp
index 492b2ad80166d..4320a39644616 100644
--- a/lld/COFF/InputFiles.cpp
+++ b/lld/COFF/InputFiles.cpp
@@ -404,11 +404,6 @@ SectionChunk *ObjFile::readSection(uint32_t sectionNumber,
return nullptr;
}
- // Those sections are generated by -fembed-bitcode and do not need to be kept
- // in executable files.
- if (name == ".llvmbc" || name == ".llvmcmd")
- return nullptr;
-
// Object files may have DWARF debug info or MS CodeView debug info
// (or both).
//
diff --git a/lld/test/COFF/embed-bitcode.test b/lld/test/COFF/embed-bitcode.test
deleted file mode 100644
index 10f88c5c0117d..0000000000000
--- a/lld/test/COFF/embed-bitcode.test
+++ /dev/null
@@ -1,30 +0,0 @@
-# RUN: yaml2obj %s -o %t.obj
-# RUN: lld-link /entry:main /subsystem:console /out:%t.exe %t.obj
-# RUN: llvm-readobj -S %t.exe | FileCheck %s
-
-# CHECK-NOT: Name: .llvmbc
-# CHECK-NOT: Name: .llvmcmd
-
---- !COFF
-header:
- Machine: IMAGE_FILE_MACHINE_AMD64
-
-sections:
- - Name: .text
- Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
- SectionData: "C3"
- - Name: .llvmbc
- Characteristics: [ IMAGE_SCN_MEM_DISCARDABLE ]
- SectionData: "4243C0DE"
- - Name: .llvmcmd
- Characteristics: [ IMAGE_SCN_MEM_DISCARDABLE ]
- SectionData: "2D63633100"
-
-symbols:
- - Name: main
- Value: 0
- SectionNumber: 1
- SimpleType: IMAGE_SYM_TYPE_NULL
- ComplexType: IMAGE_SYM_DTYPE_FUNCTION
- StorageClass: IMAGE_SYM_CLASS_EXTERNAL
-...
>From 7f0a008ad76bb7d8b310fb7a9961025ed39d35a5 Mon Sep 17 00:00:00 2001
From: realoriginal <ajhson001 at gmail.com>
Date: Tue, 24 Mar 2026 19:17:32 -0700
Subject: [PATCH 2/3] Revert "[COFF] Set .llvmbc and .llvmcmd to metadata
section (#150879)"
This reverts commit 07d396b6f595eb90fb40f49d8a11f944553b9bfd.
---
llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp | 3 +--
llvm/test/CodeGen/X86/embed-bitcode.ll | 13 -------------
2 files changed, 1 insertion(+), 15 deletions(-)
diff --git a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
index 40ddbca84b111..da93a1e12599c 100644
--- a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
+++ b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
@@ -1737,8 +1737,7 @@ MCSection *TargetLoweringObjectFileCOFF::getExplicitSectionGlobal(
Name == getInstrProfSectionName(IPSK_covdata, Triple::COFF,
/*AddSegmentInfo=*/false) ||
Name == getInstrProfSectionName(IPSK_covname, Triple::COFF,
- /*AddSegmentInfo=*/false) ||
- Name == ".llvmbc" || Name == ".llvmcmd")
+ /*AddSegmentInfo=*/false))
Kind = SectionKind::getMetadata();
int Selection = 0;
unsigned Characteristics = getCOFFSectionFlags(Kind, TM);
diff --git a/llvm/test/CodeGen/X86/embed-bitcode.ll b/llvm/test/CodeGen/X86/embed-bitcode.ll
index d4af9544bc1be..0d66ba879211d 100644
--- a/llvm/test/CodeGen/X86/embed-bitcode.ll
+++ b/llvm/test/CodeGen/X86/embed-bitcode.ll
@@ -1,23 +1,10 @@
; RUN: llc -filetype=obj -mtriple=x86_64 %s -o %t
; RUN: llvm-readelf -S %t | FileCheck %s
-; RUN: llc -filetype=obj -mtriple=x86_64-pc-windows-msvc %s -o %t
-; RUN: llvm-readobj -S %t | FileCheck %s --check-prefix=COFF
; CHECK: .text PROGBITS 0000000000000000 [[#%x,OFF:]] 000000 00 AX 0
; CHECK-NEXT: .llvmbc PROGBITS 0000000000000000 [[#%x,OFF:]] 000004 00 0
; CHECK-NEXT: .llvmcmd PROGBITS 0000000000000000 [[#%x,OFF:]] 000005 00 0
-; COFF: Name: .llvmbc (2E 6C 6C 76 6D 62 63 00)
-; COFF: Characteristics [
-; COFF-NEXT: IMAGE_SCN_ALIGN_1BYTES
-; COFF-NEXT: IMAGE_SCN_MEM_DISCARDABLE
-; COFF-NEXT: ]
-; COFF: Name: .llvmcmd (2E 6C 6C 76 6D 63 6D 64)
-; COFF: Characteristics [
-; COFF-NEXT: IMAGE_SCN_ALIGN_1BYTES
-; COFF-NEXT: IMAGE_SCN_MEM_DISCARDABLE
-; COFF-NEXT: ]
-
@llvm.embedded.module = private constant [4 x i8] c"BC\C0\DE", section ".llvmbc", align 1
@llvm.cmdline = private constant [5 x i8] c"-cc1\00", section ".llvmcmd", align 1
@llvm.compiler.used = appending global [2 x ptr] [ptr @llvm.embedded.module, ptr @llvm.cmdline], section "llvm.metadata"
>From 16b841f8d4d4dee2e0406783cb0e419b148497ab Mon Sep 17 00:00:00 2001
From: realoriginal <ajhson001 at gmail.com>
Date: Wed, 25 Mar 2026 06:26:44 -0700
Subject: [PATCH 3/3] Reapply "[COFF] Set .llvmbc and .llvmcmd to metadata
section (#150879)"
This reverts commit 7f0a008ad76bb7d8b310fb7a9961025ed39d35a5.
---
llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp | 3 ++-
llvm/test/CodeGen/X86/embed-bitcode.ll | 13 +++++++++++++
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
index da93a1e12599c..40ddbca84b111 100644
--- a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
+++ b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
@@ -1737,7 +1737,8 @@ MCSection *TargetLoweringObjectFileCOFF::getExplicitSectionGlobal(
Name == getInstrProfSectionName(IPSK_covdata, Triple::COFF,
/*AddSegmentInfo=*/false) ||
Name == getInstrProfSectionName(IPSK_covname, Triple::COFF,
- /*AddSegmentInfo=*/false))
+ /*AddSegmentInfo=*/false) ||
+ Name == ".llvmbc" || Name == ".llvmcmd")
Kind = SectionKind::getMetadata();
int Selection = 0;
unsigned Characteristics = getCOFFSectionFlags(Kind, TM);
diff --git a/llvm/test/CodeGen/X86/embed-bitcode.ll b/llvm/test/CodeGen/X86/embed-bitcode.ll
index 0d66ba879211d..d4af9544bc1be 100644
--- a/llvm/test/CodeGen/X86/embed-bitcode.ll
+++ b/llvm/test/CodeGen/X86/embed-bitcode.ll
@@ -1,10 +1,23 @@
; RUN: llc -filetype=obj -mtriple=x86_64 %s -o %t
; RUN: llvm-readelf -S %t | FileCheck %s
+; RUN: llc -filetype=obj -mtriple=x86_64-pc-windows-msvc %s -o %t
+; RUN: llvm-readobj -S %t | FileCheck %s --check-prefix=COFF
; CHECK: .text PROGBITS 0000000000000000 [[#%x,OFF:]] 000000 00 AX 0
; CHECK-NEXT: .llvmbc PROGBITS 0000000000000000 [[#%x,OFF:]] 000004 00 0
; CHECK-NEXT: .llvmcmd PROGBITS 0000000000000000 [[#%x,OFF:]] 000005 00 0
+; COFF: Name: .llvmbc (2E 6C 6C 76 6D 62 63 00)
+; COFF: Characteristics [
+; COFF-NEXT: IMAGE_SCN_ALIGN_1BYTES
+; COFF-NEXT: IMAGE_SCN_MEM_DISCARDABLE
+; COFF-NEXT: ]
+; COFF: Name: .llvmcmd (2E 6C 6C 76 6D 63 6D 64)
+; COFF: Characteristics [
+; COFF-NEXT: IMAGE_SCN_ALIGN_1BYTES
+; COFF-NEXT: IMAGE_SCN_MEM_DISCARDABLE
+; COFF-NEXT: ]
+
@llvm.embedded.module = private constant [4 x i8] c"BC\C0\DE", section ".llvmbc", align 1
@llvm.cmdline = private constant [5 x i8] c"-cc1\00", section ".llvmcmd", align 1
@llvm.compiler.used = appending global [2 x ptr] [ptr @llvm.embedded.module, ptr @llvm.cmdline], section "llvm.metadata"
More information about the llvm-commits
mailing list