[llvm] [DirectX][ObjectYAML] Fix SRCI round-trip tests that use zlib compression (PR #202479)

Vladislav Dzhidzhoev via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 9 01:50:42 PDT 2026


https://github.com/dzhidzhoev updated https://github.com/llvm/llvm-project/pull/202479

>From bcd542232ac8546046078a95bd8c7edcba3a2b30 Mon Sep 17 00:00:00 2001
From: Vladislav Dzhidzhoev <vdzhidzhoev at accesssoftek.com>
Date: Tue, 9 Jun 2026 03:21:37 +0200
Subject: [PATCH] [DirectX][ObjectYAML] Fix SRCI round-trip tests that use zlib
 compression

Size of zlib-compressed SRCI part content may vary depending on Zlib
version. Therefore, round-trip obj2yaml/yaml2obj tests for SRCI part of
DXContainer should not rely on Contents section size.

Since part size field is not optional, SRCI part sizes in tests were slightly
increased to adopt to possible Contents section size change. "size field in SRCI header
does not match SRCI part size" check is removed from
"DXContainer::parseSourceInfo()" to allow parsing such DXContainers
(where actual SRCI part size is smaller than allocated part size).
---
 llvm/lib/Object/DXContainer.cpp                |  5 -----
 .../SRCIPart-multi-source-zlib-compute.yaml    | 14 ++++++--------
 .../SRCIPart-multi-source-zlib.yaml            | 18 ++++++------------
 .../DXContainer/SRCIPart-zlib-compute.yaml     | 14 ++++++--------
 .../obj2yaml/DXContainer/SRCIPart-zlib.yaml    | 18 ++++++------------
 5 files changed, 24 insertions(+), 45 deletions(-)

diff --git a/llvm/lib/Object/DXContainer.cpp b/llvm/lib/Object/DXContainer.cpp
index d37eb4833113d..3d5c3c477e892 100644
--- a/llvm/lib/Object/DXContainer.cpp
+++ b/llvm/lib/Object/DXContainer.cpp
@@ -450,11 +450,6 @@ Error DXContainer::parseSourceInfo(StringRef Part) {
     return Err;
   Current += sizeof(SourceInfo->Parameters);
 
-  if (SourceInfo->Parameters.AlignedSizeInBytes != Part.size())
-    return parseFailed(formatv("size field in SRCI header ({0} bytes) does not "
-                               "match SRCI part size ({1} bytes)",
-                               SourceInfo->Parameters.AlignedSizeInBytes,
-                               Part.size()));
   if (SourceInfo->Parameters.Flags)
     return parseFailed("SRCI header flags must be zero");
   if (SourceInfo->Parameters.SectionCount != 3)
diff --git a/llvm/test/tools/obj2yaml/DXContainer/SRCIPart-multi-source-zlib-compute.yaml b/llvm/test/tools/obj2yaml/DXContainer/SRCIPart-multi-source-zlib-compute.yaml
index 5f3f0268b1310..4b695b817045d 100644
--- a/llvm/test/tools/obj2yaml/DXContainer/SRCIPart-multi-source-zlib-compute.yaml
+++ b/llvm/test/tools/obj2yaml/DXContainer/SRCIPart-multi-source-zlib-compute.yaml
@@ -8,12 +8,10 @@ Header:
   Version:
     Major:           1
     Minor:           0
-  FileSize:        292
   PartCount:       1
-  PartOffsets:     [ 36 ]
 Parts:
   - Name:            SRCI
-    Size:            244
+    Size:            248
     SourceInfo:
       Header:
       Names:
@@ -40,10 +38,10 @@ Parts:
 ...
 
 # CHECK:      - Name:            SRCI
-# CHECK-NEXT:   Size:            244
+# CHECK-NEXT:   Size:            248
 # CHECK-NEXT:   SourceInfo:
 # CHECK-NEXT:     Header:
-# CHECK-NEXT:       AlignedSizeInBytes: 244
+# CHECK-NEXT:       AlignedSizeInBytes:
 # CHECK-NEXT:       Flags:           0
 # CHECK-NEXT:       SectionCount:    3
 # CHECK-NEXT:     Names:
@@ -68,14 +66,14 @@ Parts:
 # CHECK-NEXT:           FileName:        util.hlsl
 # CHECK-NEXT:     Contents:
 # CHECK-NEXT:       SectionHeader:
-# CHECK-NEXT:         AlignedSizeInBytes: 120
+# CHECK-NEXT:         AlignedSizeInBytes:
 # CHECK-NEXT:         Flags:           0
 # CHECK-NEXT:         Type:            SourceContents
 # CHECK-NEXT:       Header:
-# CHECK-NEXT:         AlignedSizeInBytes: 112
+# CHECK-NEXT:         AlignedSizeInBytes:
 # CHECK-NEXT:         Flags:           0
 # CHECK-NEXT:         Type:            Zlib
-# CHECK-NEXT:         EntriesSizeInBytes: 90
+# CHECK-NEXT:         EntriesSizeInBytes:
 # CHECK-NEXT:         UncompressedEntriesSizeInBytes: 116
 # CHECK-NEXT:         Count:           2
 # CHECK-NEXT:       Entries:
diff --git a/llvm/test/tools/obj2yaml/DXContainer/SRCIPart-multi-source-zlib.yaml b/llvm/test/tools/obj2yaml/DXContainer/SRCIPart-multi-source-zlib.yaml
index 5275689b29938..96b76caa560b8 100644
--- a/llvm/test/tools/obj2yaml/DXContainer/SRCIPart-multi-source-zlib.yaml
+++ b/llvm/test/tools/obj2yaml/DXContainer/SRCIPart-multi-source-zlib.yaml
@@ -8,15 +8,12 @@ Header:
   Version:
     Major:           1
     Minor:           0
-  FileSize:        292
   PartCount:       1
-  PartOffsets:     [ 36 ]
 Parts:
   - Name:            SRCI
-    Size:            248
+    Size:            252
     SourceInfo:
       Header:
-        AlignedSizeInBytes: 248
         Flags:           0
         SectionCount:    3
       Names:
@@ -41,14 +38,11 @@ Parts:
             FileName:        util.hlsl
       Contents:
         SectionHeader:
-          AlignedSizeInBytes: 120
           Flags:           0
           Type:            SourceContents
         Header:
-          AlignedSizeInBytes: 112
           Flags:           0
           Type:            Zlib
-          EntriesSizeInBytes: 90
           UncompressedEntriesSizeInBytes: 116
           Count:           2
         Entries:
@@ -77,10 +71,10 @@ Parts:
 ...
 
 # CHECK:      - Name:            SRCI
-# CHECK-NEXT:   Size:            248
+# CHECK-NEXT:   Size:            252
 # CHECK-NEXT:   SourceInfo:
 # CHECK-NEXT:     Header:
-# CHECK-NEXT:       AlignedSizeInBytes: 248
+# CHECK-NEXT:       AlignedSizeInBytes:
 # CHECK-NEXT:       Flags:           0
 # CHECK-NEXT:       SectionCount:    3
 # CHECK-NEXT:     Names:
@@ -105,14 +99,14 @@ Parts:
 # CHECK-NEXT:           FileName:        util.hlsl
 # CHECK-NEXT:     Contents:
 # CHECK-NEXT:       SectionHeader:
-# CHECK-NEXT:         AlignedSizeInBytes: 120
+# CHECK-NEXT:         AlignedSizeInBytes:
 # CHECK-NEXT:         Flags:           0
 # CHECK-NEXT:         Type:            SourceContents
 # CHECK-NEXT:       Header:
-# CHECK-NEXT:         AlignedSizeInBytes: 112
+# CHECK-NEXT:         AlignedSizeInBytes:
 # CHECK-NEXT:         Flags:           0
 # CHECK-NEXT:         Type:            Zlib
-# CHECK-NEXT:         EntriesSizeInBytes: 90
+# CHECK-NEXT:         EntriesSizeInBytes:
 # CHECK-NEXT:         UncompressedEntriesSizeInBytes: 116
 # CHECK-NEXT:         Count:           2
 # CHECK-NEXT:       Entries:
diff --git a/llvm/test/tools/obj2yaml/DXContainer/SRCIPart-zlib-compute.yaml b/llvm/test/tools/obj2yaml/DXContainer/SRCIPart-zlib-compute.yaml
index 6352db6e96d74..676b80d1eb3cf 100644
--- a/llvm/test/tools/obj2yaml/DXContainer/SRCIPart-zlib-compute.yaml
+++ b/llvm/test/tools/obj2yaml/DXContainer/SRCIPart-zlib-compute.yaml
@@ -8,12 +8,10 @@ Header:
   Version:
     Major:           1
     Minor:           0
-  FileSize:        224
   PartCount:       1
-  PartOffsets:     [ 36 ]
 Parts:
   - Name:            SRCI
-    Size:            180
+    Size:            184
     SourceInfo:
       Header:
       Names:
@@ -38,10 +36,10 @@ Parts:
 ...
 
 # CHECK:      - Name:            SRCI
-# CHECK-NEXT:   Size:            180
+# CHECK-NEXT:   Size:            184
 # CHECK-NEXT:   SourceInfo:
 # CHECK-NEXT:     Header:
-# CHECK-NEXT:       AlignedSizeInBytes: 180
+# CHECK-NEXT:       AlignedSizeInBytes:
 # CHECK-NEXT:       Flags:           0
 # CHECK-NEXT:       SectionCount:    3
 # CHECK-NEXT:     Names:
@@ -61,14 +59,14 @@ Parts:
 # CHECK-NEXT:           FileName:        fd_zs.hlsl
 # CHECK-NEXT:     Contents:
 # CHECK-NEXT:       SectionHeader:
-# CHECK-NEXT:         AlignedSizeInBytes: 84
+# CHECK-NEXT:         AlignedSizeInBytes:
 # CHECK-NEXT:         Flags:           0
 # CHECK-NEXT:         Type:            SourceContents
 # CHECK-NEXT:       Header:
-# CHECK-NEXT:         AlignedSizeInBytes: 76
+# CHECK-NEXT:         AlignedSizeInBytes:
 # CHECK-NEXT:         Flags:           0
 # CHECK-NEXT:         Type:            Zlib
-# CHECK-NEXT:         EntriesSizeInBytes: 54
+# CHECK-NEXT:         EntriesSizeInBytes:
 # CHECK-NEXT:         UncompressedEntriesSizeInBytes: 52
 # CHECK-NEXT:         Count:           1
 # CHECK-NEXT:       Entries:
diff --git a/llvm/test/tools/obj2yaml/DXContainer/SRCIPart-zlib.yaml b/llvm/test/tools/obj2yaml/DXContainer/SRCIPart-zlib.yaml
index dcb18e5b42cad..1345604c713d0 100644
--- a/llvm/test/tools/obj2yaml/DXContainer/SRCIPart-zlib.yaml
+++ b/llvm/test/tools/obj2yaml/DXContainer/SRCIPart-zlib.yaml
@@ -8,15 +8,12 @@ Header:
   Version:
     Major:           1
     Minor:           0
-  FileSize:        224
   PartCount:       1
-  PartOffsets:     [ 36 ]
 Parts:
   - Name:            SRCI
-    Size:            180
+    Size:            184
     SourceInfo:
       Header:
-        AlignedSizeInBytes: 180
         Flags:           0
         SectionCount:    3
       Names:
@@ -36,14 +33,11 @@ Parts:
             FileName:        fd_zs.hlsl
       Contents:
         SectionHeader:
-          AlignedSizeInBytes: 84
           Flags:           0
           Type:            SourceContents
         Header:
-          AlignedSizeInBytes: 76
           Flags:           0
           Type:            Zlib
-          EntriesSizeInBytes: 54
           UncompressedEntriesSizeInBytes: 52
           Count:           1
         Entries:
@@ -68,10 +62,10 @@ Parts:
 ...
 
 # CHECK:      - Name:            SRCI
-# CHECK-NEXT:   Size:            180
+# CHECK-NEXT:   Size:            184
 # CHECK-NEXT:   SourceInfo:
 # CHECK-NEXT:     Header:
-# CHECK-NEXT:       AlignedSizeInBytes: 180
+# CHECK-NEXT:       AlignedSizeInBytes:
 # CHECK-NEXT:       Flags:           0
 # CHECK-NEXT:       SectionCount:    3
 # CHECK-NEXT:     Names:
@@ -91,14 +85,14 @@ Parts:
 # CHECK-NEXT:           FileName:        fd_zs.hlsl
 # CHECK-NEXT:     Contents:
 # CHECK-NEXT:       SectionHeader:
-# CHECK-NEXT:         AlignedSizeInBytes: 84
+# CHECK-NEXT:         AlignedSizeInBytes:
 # CHECK-NEXT:         Flags:           0
 # CHECK-NEXT:         Type:            SourceContents
 # CHECK-NEXT:       Header:
-# CHECK-NEXT:         AlignedSizeInBytes: 76
+# CHECK-NEXT:         AlignedSizeInBytes:
 # CHECK-NEXT:         Flags:           0
 # CHECK-NEXT:         Type:            Zlib
-# CHECK-NEXT:         EntriesSizeInBytes: 54
+# CHECK-NEXT:         EntriesSizeInBytes:
 # CHECK-NEXT:         UncompressedEntriesSizeInBytes: 52
 # CHECK-NEXT:         Count:           1
 # CHECK-NEXT:       Entries:



More information about the llvm-commits mailing list