[llvm] [SHT_LLVM_BB_ADDR_MAP] Updates ELFYaml and adds tests for PGOAnalysisMap. (PR #77366)

James Henderson via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 12 01:03:33 PST 2024


================
@@ -897,6 +897,34 @@ TEST(ELFObjectFileTest, InvalidDecodePGOAnalysisMap) {
 
   DoCheck(MissingBrProb, "unable to decode LEB128 at offset 0x00000017: "
                          "malformed uleb128, extends past end");
+
+  // Check that we fail when pgo data exists but the feature bits are disabled.
+  SmallString<128> ZeroFeatureButWithAnalyses(CommonYamlString);
+  ZeroFeatureButWithAnalyses += R"(
+        Version: 2
+        Feature: 0x00
+        BBEntries:
+          - ID:            1
+            AddressOffset: 0x0
+            Size:          0x1
+            Metadata:      0x6
+          - ID:            2
+            AddressOffset: 0x1
+            Size:          0x1
+            Metadata:      0x2
+      - Address: 0x11111
+        Version: 2
+        Feature: 0x00
+        BBEntries: []
+    PGOAnalyses:
+      - PGOBBEntries:
+         - BBFreq:        1000
+         - BBFreq:        1000
+      - PGOBBEntries: []
+)";
+
+  DoCheck(ZeroFeatureButWithAnalyses,
+          "unsupported SHT_LLVM_BB_ADDR_MAP version: 232");
----------------
jh7370 wrote:

FWIW, I would lean towards unit tests if the setup is straightforward. Apart from anything else, lit tests on Windows have a non-trivial performance cost (much worse than extending an existing unit test), due to the process launching overhead.

Regardless of the approach taken, it's important to test all failure cases in the ObjectYAML code, plus cases like "this thing is optional - test that it can be omitted or specified" and "this thing is required - test that an error is emitted if missing".

https://github.com/llvm/llvm-project/pull/77366


More information about the llvm-commits mailing list