[llvm-branch-commits] [llvm] Regenerate yaml (PR #116058)

NAKAMURA Takumi via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Wed Nov 13 06:28:23 PST 2024


https://github.com/chapuni created https://github.com/llvm/llvm-project/pull/116058

Regenerate YAMLs (on amd64) for aligning #112694.

>From 8e5db68146f33c81130b569c4e89b1c5c4962e59 Mon Sep 17 00:00:00 2001
From: NAKAMURA Takumi <geek4civic at gmail.com>
Date: Wed, 13 Nov 2024 23:18:45 +0900
Subject: [PATCH] regenerte yaml

---
 .../tools/llvm-cov/Inputs/branch-c-general.c  |   4 +-
 .../llvm-cov/Inputs/branch-c-general.proftext |   3 +-
 .../llvm-cov/Inputs/branch-c-general.yaml     | 519 ++++++++++--------
 .../llvm-cov/Inputs/branch-logical-mixed.cpp  |   2 +-
 .../Inputs/branch-logical-mixed.proftext      |  14 +-
 .../llvm-cov/Inputs/branch-logical-mixed.yaml | 247 +++++----
 .../tools/llvm-cov/Inputs/branch-macros.cpp   |   4 +-
 .../llvm-cov/Inputs/branch-macros.proftext    |   4 +-
 .../tools/llvm-cov/Inputs/branch-macros.yaml  | 131 +++--
 .../Inputs/branch-showBranchPercentage.c      |  14 +-
 .../branch-showBranchPercentage.proftext      |   2 +-
 .../Inputs/branch-showBranchPercentage.yaml   |  87 +--
 .../llvm-cov/Inputs/branch-templates.cpp      |   4 +-
 .../llvm-cov/Inputs/branch-templates.yaml     |  66 ++-
 .../llvm-cov/Inputs/mcdc-const-folding.yaml   | 104 ++--
 .../tools/llvm-cov/Inputs/mcdc-const.yaml     |  11 +-
 .../tools/llvm-cov/Inputs/mcdc-macro.yaml     |   6 +-
 llvm/test/tools/llvm-cov/Inputs/yaml.makefile |  60 ++
 .../test/tools/llvm-cov/branch-c-general.test |  78 +--
 .../tools/llvm-cov/branch-export-json.test    |  10 +-
 .../tools/llvm-cov/branch-export-lcov.test    |  14 +-
 .../tools/llvm-cov/branch-logical-mixed.test  |   4 +-
 llvm/test/tools/llvm-cov/branch-macros.test   |  10 +-
 .../tools/llvm-cov/branch-noShowBranch.test   |   8 +-
 .../llvm-cov/branch-showBranchPercentage.test |  14 +-
 .../test/tools/llvm-cov/branch-templates.test |   6 +-
 llvm/test/tools/llvm-cov/mcdc-const.test      |   6 +-
 llvm/test/tools/llvm-cov/mcdc-macro.test      |   6 +-
 28 files changed, 788 insertions(+), 650 deletions(-)

diff --git a/llvm/test/tools/llvm-cov/Inputs/branch-c-general.c b/llvm/test/tools/llvm-cov/Inputs/branch-c-general.c
index 2e7e773e5c3941d..0a02c8f8ee921f7 100644
--- a/llvm/test/tools/llvm-cov/Inputs/branch-c-general.c
+++ b/llvm/test/tools/llvm-cov/Inputs/branch-c-general.c
@@ -254,7 +254,7 @@ int main(int argc, const char *argv[]) {
   conditional_operator();
   do_fallthrough();
   static_func();
-  extern void __llvm_profile_write_file();
-  __llvm_profile_write_file();
+  (void)0;
+  (void)0;
   return 0;
 }
diff --git a/llvm/test/tools/llvm-cov/Inputs/branch-c-general.proftext b/llvm/test/tools/llvm-cov/Inputs/branch-c-general.proftext
index 508b0fef94a0630..1e74192304fee2e 100644
--- a/llvm/test/tools/llvm-cov/Inputs/branch-c-general.proftext
+++ b/llvm/test/tools/llvm-cov/Inputs/branch-c-general.proftext
@@ -162,10 +162,9 @@ main
 # Func Hash:
 24
 # Num Counters:
-2
+1
 # Counter Values:
 1
-0
 
 simple_loops
 # Func Hash:
diff --git a/llvm/test/tools/llvm-cov/Inputs/branch-c-general.yaml b/llvm/test/tools/llvm-cov/Inputs/branch-c-general.yaml
index dbb9b5822a442eb..5752fa3b613ca05 100644
--- a/llvm/test/tools/llvm-cov/Inputs/branch-c-general.yaml
+++ b/llvm/test/tools/llvm-cov/Inputs/branch-c-general.yaml
@@ -1,21 +1,22 @@
 --- !ELF
 FileHeader:
-  Class:           ELFCLASS32
+  Class:           ELFCLASS64
   Data:            ELFDATA2LSB
+  OSABI:           ELFOSABI_GNU
   Type:            ET_REL
-  Machine:         EM_ARM
-  Flags:           [ EF_ARM_EABI_VER5 ]
+  Machine:         EM_X86_64
   SectionHeaderStringTable: .strtab
 Sections:
-  - Name:            '__llvm_covfun (7)'
+  - Name:            __llvm_covfun
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_GNU_RETAIN ]
     AddressAlign:    0x8
     CovFun:
       - FuncName:        simple_loops
         Signature:       0x46D109C4436D1
-        FilenamesRef:    0x1A6D4D6FD974D39F
+        FilenamesRef:    0x4F0FF417951E554C
         Filenames:
-          - '/tmp/branch-c-general.c'
+          - branch-c-general.c
         Expressions:
           - [ { Ref: 0 }, { Ref: 1 } ]
           - [ { Ref: 0 }, { Ref: 2 } ]
@@ -35,15 +36,17 @@ Sections:
           - { File: 0, dLoc: [ 1, 6, 0, 8 ], Add: 3 }
           - { File: 0, dLoc: [ 0, 16, 0, 24 ], Add: 3 }
           - { File: 0, dLoc: [ 0, 16, 0, 24 ], Branch: { True: { Ref: 3 }, False: { Ref: 0 } } }
-  - Name:            '__llvm_covfun (4)'
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+  - Name:            '__llvm_covfun (1)'
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_GNU_RETAIN ]
     AddressAlign:    0x8
     CovFun:
       - FuncName:        conditionals
         Signature:       0x44113C165835D352
-        FilenamesRef:    0x1A6D4D6FD974D39F
+        FilenamesRef:    0x4F0FF417951E554C
         Filenames:
-          - '/tmp/branch-c-general.c'
+          - branch-c-general.c
         Expressions:
           - [ { Ref: 0 }, { Ref: 1 } ]
           - [ { Ref: 1 }, { Ref: 2 } ]
@@ -96,29 +99,32 @@ Sections:
           - { File: 0, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Ref: 6 }, False: { Sub: 15 } } }
           - { File: 0, dLoc: [ 0, 13, 0, 14 ], isGap: true, Ref: 6 }
           - { File: 0, dLoc: [ 0, 14, 0, 16 ], Ref: 6 }
-          - { File: 0, dLoc: [ 3, 9, 0, 10 ], Ref: 1 }
+          - { File: 0, dLoc: [ 2, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 9, 0, 10 ], Ref: 1 }
           - { File: 0, dLoc: [ 0, 9, 0, 15 ], Ref: 1 }
-          - { File: 0, dLoc: [ 0, 9, 0, 10 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } } } }
+          - { File: 0, dLoc: [ 0, 9, 0, 10 ], Branch: { True: { Ref: 8 }, False: { Zero: {  } } } }
           - { File: 0, dLoc: [ 0, 14, 0, 15 ], Ref: 8 }
           - { File: 0, dLoc: [ 0, 14, 0, 15 ], Branch: { True: { Ref: 9 }, False: { Sub: 18 } } }
           - { File: 0, dLoc: [ 0, 16, 0, 17 ], isGap: true, Ref: 7 }
           - { File: 0, dLoc: [ 0, 17, 0, 19 ], Ref: 7 }
           - { File: 0, dLoc: [ 1, 9, 0, 10 ], Ref: 1 }
           - { File: 0, dLoc: [ 0, 9, 0, 15 ], Ref: 1 }
-          - { File: 0, dLoc: [ 0, 9, 0, 10 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } } } }
+          - { File: 0, dLoc: [ 0, 9, 0, 10 ], Branch: { True: { Zero: {  } }, False: { Ref: 11 } } }
           - { File: 0, dLoc: [ 0, 14, 0, 15 ], Ref: 11 }
           - { File: 0, dLoc: [ 0, 14, 0, 15 ], Branch: { True: { Sub: 19 }, False: { Ref: 12 } } }
           - { File: 0, dLoc: [ 0, 16, 0, 17 ], isGap: true, Ref: 10 }
           - { File: 0, dLoc: [ 0, 17, 0, 19 ], Ref: 10 }
-  - Name:            '__llvm_covfun (5)'
+          - { File: 0, dLoc: [ 2, 1, 0, 1 ], Skip: {  } }
+  - Name:            '__llvm_covfun (2)'
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_GNU_RETAIN ]
     AddressAlign:    0x8
     CovFun:
       - FuncName:        early_exits
         Signature:       0x27F9134B0E2D5C3D
-        FilenamesRef:    0x1A6D4D6FD974D39F
+        FilenamesRef:    0x4F0FF417951E554C
         Filenames:
-          - '/tmp/branch-c-general.c'
+          - branch-c-general.c
         Expressions:
           - [ { Ref: 0 }, { Ref: 1 } ]
           - [ { Add: 2 }, { Ref: 3 } ]
@@ -133,28 +139,29 @@ Sections:
           - [ { Ref: 0 }, { Ref: 5 } ]
           - [ { Ref: 0 }, { Ref: 6 } ]
           - [ { Ref: 0 }, { Ref: 6 } ]
-          - [ { Add: 22 }, { Ref: 7 } ]
+          - [ { Add: 20 }, { Ref: 7 } ]
           - [ { Ref: 0 }, { Ref: 6 } ]
-          - [ { Add: 22 }, { Ref: 7 } ]
+          - [ { Add: 20 }, { Ref: 7 } ]
           - [ { Ref: 0 }, { Ref: 6 } ]
-          - [ { Add: 22 }, { Ref: 7 } ]
+          - [ { Add: 20 }, { Ref: 7 } ]
           - [ { Ref: 0 }, { Ref: 6 } ]
-          - [ { Add: 22 }, { Ref: 7 } ]
-          - [ { Ref: 0 }, { Ref: 6 } ]
-          - [ { Add: 22 }, { Ref: 7 } ]
+          - [ { Add: 20 }, { Ref: 7 } ]
           - [ { Ref: 0 }, { Ref: 6 } ]
           - [ { Ref: 0 }, { Ref: 7 } ]
           - [ { Ref: 0 }, { Ref: 7 } ]
           - [ { Ref: 0 }, { Ref: 7 } ]
-          - [ { Sub: 27 }, { Ref: 8 } ]
+          - [ { Ref: 0 }, { Ref: 7 } ]
+          - [ { Sub: 26 }, { Ref: 8 } ]
           - [ { Ref: 0 }, { Ref: 7 } ]
         Records:
           - { File: 0, dLoc: [ 33, 20, 24, 2 ], Ref: 0 }
-          - { File: 0, dLoc: [ 3, 7, 0, 8 ], Ref: 0 }
+          - { File: 0, dLoc: [ 2, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 7, 0, 8 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 7, 0, 8 ], Branch: { True: { Ref: 1 }, False: { Sub: 0 } } }
           - { File: 0, dLoc: [ 0, 9, 0, 10 ], isGap: true, Ref: 1 }
           - { File: 0, dLoc: [ 0, 10, 0, 12 ], Ref: 1 }
-          - { File: 0, dLoc: [ 2, 10, 0, 17 ], Sub: 1 }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 10, 0, 17 ], Sub: 1 }
           - { File: 0, dLoc: [ 0, 10, 0, 17 ], Branch: { True: { Ref: 2 }, False: { Sub: 3 } } }
           - { File: 0, dLoc: [ 0, 18, 0, 19 ], isGap: true, Ref: 2 }
           - { File: 0, dLoc: [ 0, 19, 6, 4 ], Ref: 2 }
@@ -162,40 +169,45 @@ Sections:
           - { File: 0, dLoc: [ 0, 9, 0, 15 ], Branch: { True: { Ref: 3 }, False: { Sub: 9 } } }
           - { File: 0, dLoc: [ 0, 16, 1, 7 ], isGap: true, Ref: 3 }
           - { File: 0, dLoc: [ 1, 7, 0, 12 ], Ref: 3 }
-          - { File: 0, dLoc: [ 0, 12, 1, 5 ], isGap: true, Sub: 9 }
+          - { File: 0, dLoc: [ 0, 13, 1, 5 ], isGap: true, Sub: 9 }
           - { File: 0, dLoc: [ 1, 5, 2, 4 ], Sub: 9 }
           - { File: 0, dLoc: [ 0, 9, 0, 14 ], Sub: 9 }
           - { File: 0, dLoc: [ 0, 9, 0, 14 ], Branch: { True: { Ref: 4 }, False: { Sub: 8 } } }
           - { File: 0, dLoc: [ 0, 15, 1, 7 ], isGap: true, Ref: 4 }
           - { File: 0, dLoc: [ 1, 7, 0, 15 ], Ref: 4 }
-          - { File: 0, dLoc: [ 3, 7, 0, 8 ], Ref: 0 }
+          - { File: 0, dLoc: [ 2, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 7, 0, 8 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 7, 0, 8 ], Branch: { True: { Ref: 5 }, False: { Sub: 10 } } }
           - { File: 0, dLoc: [ 0, 9, 0, 10 ], isGap: true, Ref: 5 }
           - { File: 0, dLoc: [ 0, 10, 0, 12 ], Ref: 5 }
-          - { File: 0, dLoc: [ 2, 6, 5, 4 ], Add: 22 }
-          - { File: 0, dLoc: [ 1, 9, 0, 15 ], Add: 22 }
-          - { File: 0, dLoc: [ 0, 9, 0, 15 ], Branch: { True: { Ref: 7 }, False: { Sub: 21 } } }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 6, 5, 4 ], Add: 20 }
+          - { File: 0, dLoc: [ 1, 9, 0, 15 ], Add: 20 }
+          - { File: 0, dLoc: [ 0, 9, 0, 15 ], Branch: { True: { Ref: 7 }, False: { Sub: 19 } } }
           - { File: 0, dLoc: [ 0, 16, 1, 7 ], isGap: true, Ref: 7 }
           - { File: 0, dLoc: [ 1, 7, 0, 13 ], Ref: 7 }
-          - { File: 0, dLoc: [ 0, 13, 0, 14 ], isGap: true, Sub: 21 }
-          - { File: 0, dLoc: [ 0, 14, 2, 7 ], isGap: true, Sub: 21 }
-          - { File: 0, dLoc: [ 2, 7, 0, 10 ], Sub: 21 }
-          - { File: 0, dLoc: [ 1, 12, 0, 19 ], Sub: 21 }
-          - { File: 0, dLoc: [ 0, 12, 0, 19 ], Branch: { True: { Ref: 6 }, False: { Sub: 27 } } }
-          - { File: 0, dLoc: [ 2, 3, 2, 2 ], Sub: 27 }
-          - { File: 0, dLoc: [ 0, 7, 0, 8 ], Sub: 27 }
-          - { File: 0, dLoc: [ 0, 7, 0, 8 ], Branch: { True: { Ref: 8 }, False: { Sub: 26 } } }
+          - { File: 0, dLoc: [ 0, 14, 2, 7 ], isGap: true, Sub: 19 }
+          - { File: 0, dLoc: [ 2, 7, 0, 10 ], Sub: 19 }
+          - { File: 0, dLoc: [ 1, 12, 0, 19 ], Sub: 19 }
+          - { File: 0, dLoc: [ 0, 12, 0, 19 ], Branch: { True: { Ref: 6 }, False: { Sub: 26 } } }
+          - { File: 0, dLoc: [ 0, 21, 2, 3 ], isGap: true, Sub: 26 }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 3, 2, 2 ], Sub: 26 }
+          - { File: 0, dLoc: [ 0, 7, 0, 8 ], Sub: 26 }
+          - { File: 0, dLoc: [ 0, 7, 0, 8 ], Branch: { True: { Ref: 8 }, False: { Sub: 25 } } }
           - { File: 0, dLoc: [ 0, 9, 0, 10 ], isGap: true, Ref: 8 }
           - { File: 0, dLoc: [ 0, 10, 0, 12 ], Ref: 8 }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
   - Name:            '__llvm_covfun (3)'
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_GNU_RETAIN ]
     AddressAlign:    0x8
     CovFun:
       - FuncName:        jumps
         Signature:       0xD0E163345D499C1B
-        FilenamesRef:    0x1A6D4D6FD974D39F
+        FilenamesRef:    0x4F0FF417951E554C
         Filenames:
-          - '/tmp/branch-c-general.c'
+          - branch-c-general.c
         Expressions:
           - [ { Ref: 0 }, { Ref: 1 } ]
           - [ { Zero: {  } }, { Ref: 2 } ]
@@ -203,51 +215,63 @@ Sections:
           - [ { Ref: 6 }, { Ref: 5 } ]
           - [ { Ref: 6 }, { Ref: 7 } ]
           - [ { Ref: 6 }, { Ref: 5 } ]
+          - [ { Ref: 6 }, { Ref: 5 } ]
           - [ { Ref: 10 }, { Ref: 11 } ]
           - [ { Ref: 10 }, { Ref: 11 } ]
           - [ { Ref: 10 }, { Ref: 11 } ]
-          - [ { Add: 28 }, { Ref: 11 } ]
+          - [ { Add: 32 }, { Ref: 11 } ]
           - [ { Ref: 10 }, { Ref: 14 } ]
-          - [ { Sub: 18 }, { Ref: 12 } ]
-          - [ { Add: 28 }, { Ref: 11 } ]
+          - [ { Sub: 22 }, { Ref: 12 } ]
+          - [ { Add: 32 }, { Ref: 11 } ]
           - [ { Ref: 10 }, { Ref: 14 } ]
-          - [ { Ref: 16 }, { Ref: 17 } ]
-          - [ { Ref: 15 }, { Ref: 17 } ]
-          - [ { Ref: 15 }, { Ref: 16 } ]
-          - [ { Sub: 18 }, { Ref: 12 } ]
-          - [ { Add: 28 }, { Ref: 11 } ]
+          - [ { Sub: 16 }, { Ref: 17 } ]
+          - [ { Sub: 17 }, { Ref: 16 } ]
+          - [ { Ref: 13 }, { Ref: 15 } ]
+          - [ { Sub: 22 }, { Ref: 12 } ]
+          - [ { Add: 32 }, { Ref: 11 } ]
+          - [ { Ref: 10 }, { Ref: 14 } ]
+          - [ { Sub: 22 }, { Ref: 12 } ]
+          - [ { Add: 32 }, { Ref: 11 } ]
           - [ { Ref: 10 }, { Ref: 14 } ]
-          - [ { Sub: 26 }, { Ref: 12 } ]
-          - [ { Add: 27 }, { Ref: 11 } ]
-          - [ { Add: 28 }, { Ref: 20 } ]
+          - [ { Sub: 30 }, { Ref: 12 } ]
+          - [ { Add: 31 }, { Ref: 11 } ]
+          - [ { Add: 32 }, { Ref: 20 } ]
           - [ { Ref: 10 }, { Ref: 14 } ]
-          - [ { Sub: 25 }, { Ref: 18 } ]
-          - [ { Sub: 26 }, { Ref: 12 } ]
-          - [ { Add: 27 }, { Ref: 11 } ]
-          - [ { Add: 28 }, { Ref: 20 } ]
+          - [ { Sub: 29 }, { Ref: 18 } ]
+          - [ { Sub: 30 }, { Ref: 12 } ]
+          - [ { Add: 31 }, { Ref: 11 } ]
+          - [ { Add: 32 }, { Ref: 20 } ]
           - [ { Ref: 10 }, { Ref: 14 } ]
           - [ { Zero: {  } }, { Ref: 19 } ]
           - [ { Ref: 20 }, { Ref: 21 } ]
         Records:
           - { File: 0, dLoc: [ 59, 14, 47, 2 ], Ref: 0 }
-          - { File: 0, dLoc: [ 3, 15, 0, 20 ], Ref: 0 }
+          - { File: 0, dLoc: [ 2, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 15, 0, 20 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 15, 0, 20 ], Branch: { True: { Ref: 1 }, False: { Sub: 0 } } }
           - { File: 0, dLoc: [ 0, 22, 0, 25 ], Zero: {  } }
           - { File: 0, dLoc: [ 0, 26, 0, 27 ], isGap: true, Ref: 1 }
           - { File: 0, dLoc: [ 0, 27, 4, 4 ], Ref: 1 }
-          - { File: 0, dLoc: [ 3, 5, 1, 4 ], Zero: {  } }
+          - { File: 0, dLoc: [ 1, 20, 2, 5 ], isGap: true, Zero: {  } }
+          - { File: 0, dLoc: [ 1, 1, 0, 35 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 5, 1, 4 ], Zero: {  } }
           - { File: 0, dLoc: [ 0, 9, 0, 10 ], Zero: {  } }
           - { File: 0, dLoc: [ 0, 9, 0, 10 ], Branch: { True: { Ref: 2 }, False: { Sub: 1 } } }
           - { File: 0, dLoc: [ 0, 11, 0, 12 ], isGap: true, Ref: 2 }
           - { File: 0, dLoc: [ 0, 12, 0, 14 ], Ref: 2 }
-          - { File: 0, dLoc: [ 3, 1, 3, 13 ], Ref: 3 }
+          - { File: 0, dLoc: [ 1, 4, 2, 1 ], isGap: true, Sub: 0 }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 1, 3, 13 ], Ref: 3 }
           - { File: 0, dLoc: [ 1, 7, 0, 8 ], Ref: 3 }
           - { File: 0, dLoc: [ 0, 7, 0, 8 ], Branch: { True: { Ref: 4 }, False: { Sub: 2 } } }
           - { File: 0, dLoc: [ 0, 9, 0, 10 ], isGap: true, Ref: 4 }
           - { File: 0, dLoc: [ 0, 10, 0, 12 ], Ref: 4 }
-          - { File: 0, dLoc: [ 4, 3, 33, 2 ], Zero: {  } }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 14, 2, 3 ], isGap: true, Zero: {  } }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 3, 33, 2 ], Zero: {  } }
           - { File: 0, dLoc: [ 0, 10, 0, 11 ], Ref: 6 }
-          - { File: 0, dLoc: [ 0, 10, 0, 11 ], Branch: { True: { Ref: 5 }, False: { Sub: 5 } } }
+          - { File: 0, dLoc: [ 0, 10, 0, 11 ], Branch: { True: { Ref: 5 }, False: { Sub: 6 } } }
           - { File: 0, dLoc: [ 0, 12, 0, 13 ], isGap: true, Ref: 5 }
           - { File: 0, dLoc: [ 0, 13, 3, 4 ], Ref: 5 }
           - { File: 0, dLoc: [ 1, 3, 2, 4 ], Ref: 6 }
@@ -255,55 +279,65 @@ Sections:
           - { File: 0, dLoc: [ 0, 9, 0, 10 ], Branch: { True: { Ref: 7 }, False: { Sub: 4 } } }
           - { File: 0, dLoc: [ 0, 11, 0, 12 ], isGap: true, Ref: 7 }
           - { File: 0, dLoc: [ 0, 12, 0, 14 ], Ref: 7 }
-          - { File: 0, dLoc: [ 3, 3, 0, 13 ], Sub: 5 }
-          - { File: 0, dLoc: [ 0, 13, 1, 1 ], isGap: true, Ref: 8 }
+          - { File: 0, dLoc: [ 2, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 3, 0, 13 ], Sub: 6 }
+          - { File: 0, dLoc: [ 0, 14, 1, 1 ], isGap: true, Sub: 6 }
           - { File: 0, dLoc: [ 1, 1, 27, 2 ], Ref: 8 }
           - { File: 0, dLoc: [ 1, 1, 26, 2 ], Ref: 9 }
           - { File: 0, dLoc: [ 1, 1, 25, 2 ], Ref: 10 }
           - { File: 0, dLoc: [ 2, 7, 0, 12 ], Ref: 10 }
-          - { File: 0, dLoc: [ 0, 7, 0, 12 ], Branch: { True: { Ref: 11 }, False: { Sub: 8 } } }
+          - { File: 0, dLoc: [ 0, 7, 0, 12 ], Branch: { True: { Ref: 11 }, False: { Sub: 9 } } }
           - { File: 0, dLoc: [ 0, 13, 1, 5 ], isGap: true, Ref: 11 }
           - { File: 0, dLoc: [ 1, 5, 0, 15 ], Ref: 11 }
-          - { File: 0, dLoc: [ 0, 15, 2, 3 ], isGap: true, Sub: 8 }
-          - { File: 0, dLoc: [ 2, 3, 20, 2 ], Sub: 8 }
-          - { File: 0, dLoc: [ 0, 10, 0, 15 ], Sub: 18 }
-          - { File: 0, dLoc: [ 0, 10, 0, 15 ], Branch: { True: { Ref: 12 }, False: { Sub: 17 } } }
+          - { File: 0, dLoc: [ 0, 16, 2, 3 ], isGap: true, Sub: 9 }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 3, 20, 2 ], Sub: 9 }
+          - { File: 0, dLoc: [ 0, 10, 0, 15 ], Sub: 22 }
+          - { File: 0, dLoc: [ 0, 10, 0, 15 ], Branch: { True: { Ref: 12 }, False: { Sub: 21 } } }
           - { File: 0, dLoc: [ 0, 16, 0, 17 ], isGap: true, Ref: 12 }
           - { File: 0, dLoc: [ 0, 17, 10, 4 ], Ref: 12 }
           - { File: 0, dLoc: [ 1, 3, 9, 4 ], Ref: 13 }
-          - { File: 0, dLoc: [ 1, 16, 6, 17 ], isGap: true, Zero: {  } }
+          - { File: 0, dLoc: [ 1, 13, 0, 14 ], Branch: { True: { Zero: {  } }, False: { Sub: 15 } } }
+          - { File: 0, dLoc: [ 0, 16, 6, 17 ], isGap: true, Zero: {  } }
           - { File: 0, dLoc: [ 1, 5, 1, 17 ], Ref: 15 }
-          - { File: 0, dLoc: [ 0, 5, 0, 11 ], Branch: { True: { Ref: 15 }, False: { Add: 14 } } }
-          - { File: 0, dLoc: [ 2, 5, 1, 18 ], Ref: 16 }
-          - { File: 0, dLoc: [ 0, 5, 0, 11 ], Branch: { True: { Ref: 16 }, False: { Add: 15 } } }
-          - { File: 0, dLoc: [ 2, 5, 1, 17 ], Ref: 17 }
-          - { File: 0, dLoc: [ 0, 5, 0, 11 ], Branch: { True: { Ref: 17 }, False: { Add: 16 } } }
-          - { File: 0, dLoc: [ 5, 3, 8, 2 ], Sub: 17 }
-          - { File: 0, dLoc: [ 0, 15, 0, 21 ], Sub: 25 }
-          - { File: 0, dLoc: [ 0, 15, 0, 21 ], Branch: { True: { Ref: 18 }, False: { Sub: 24 } } }
+          - { File: 0, dLoc: [ 0, 5, 0, 11 ], Branch: { True: { Ref: 15 }, False: { Zero: {  } } } }
+          - { File: 0, dLoc: [ 1, 18, 1, 5 ], isGap: true, Zero: {  } }
+          - { File: 0, dLoc: [ 1, 5, 1, 18 ], Ref: 16 }
+          - { File: 0, dLoc: [ 0, 5, 0, 11 ], Branch: { True: { Ref: 16 }, False: { Zero: {  } } } }
+          - { File: 0, dLoc: [ 1, 19, 1, 5 ], isGap: true, Zero: {  } }
+          - { File: 0, dLoc: [ 1, 5, 1, 17 ], Ref: 17 }
+          - { File: 0, dLoc: [ 0, 5, 0, 11 ], Branch: { True: { Ref: 17 }, False: { Zero: {  } } } }
+          - { File: 0, dLoc: [ 3, 4, 2, 3 ], isGap: true, Sub: 21 }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 3, 8, 2 ], Sub: 21 }
+          - { File: 0, dLoc: [ 0, 15, 0, 21 ], Sub: 29 }
+          - { File: 0, dLoc: [ 0, 15, 0, 21 ], Branch: { True: { Ref: 18 }, False: { Sub: 28 } } }
           - { File: 0, dLoc: [ 0, 23, 0, 26 ], Ref: 20 }
           - { File: 0, dLoc: [ 0, 27, 0, 28 ], isGap: true, Ref: 18 }
           - { File: 0, dLoc: [ 0, 28, 6, 4 ], Ref: 18 }
-          - { File: 0, dLoc: [ 1, 20, 3, 3 ], isGap: true, Ref: 20 }
-          - { File: 0, dLoc: [ 2, 5, 3, 4 ], Zero: {  } }
+          - { File: 0, dLoc: [ 1, 21, 2, 5 ], isGap: true, Zero: {  } }
+          - { File: 0, dLoc: [ 1, 1, 0, 35 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 5, 3, 4 ], Zero: {  } }
           - { File: 0, dLoc: [ 0, 9, 0, 10 ], Zero: {  } }
-          - { File: 0, dLoc: [ 0, 9, 0, 10 ], Branch: { True: { Ref: 19 }, False: { Sub: 29 } } }
+          - { File: 0, dLoc: [ 0, 9, 0, 10 ], Branch: { True: { Ref: 19 }, False: { Sub: 33 } } }
           - { File: 0, dLoc: [ 0, 11, 0, 12 ], isGap: true, Ref: 19 }
           - { File: 0, dLoc: [ 0, 12, 0, 14 ], Ref: 19 }
           - { File: 0, dLoc: [ 1, 3, 2, 4 ], Ref: 20 }
           - { File: 0, dLoc: [ 1, 9, 0, 10 ], Ref: 20 }
-          - { File: 0, dLoc: [ 0, 9, 0, 10 ], Branch: { True: { Ref: 21 }, False: { Sub: 30 } } }
+          - { File: 0, dLoc: [ 0, 9, 0, 10 ], Branch: { True: { Ref: 21 }, False: { Sub: 34 } } }
           - { File: 0, dLoc: [ 0, 11, 0, 12 ], isGap: true, Ref: 21 }
           - { File: 0, dLoc: [ 0, 12, 0, 14 ], Ref: 21 }
-  - Name:            '__llvm_covfun (9)'
+          - { File: 0, dLoc: [ 2, 1, 0, 1 ], Skip: {  } }
+  - Name:            '__llvm_covfun (4)'
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_GNU_RETAIN ]
     AddressAlign:    0x8
     CovFun:
       - FuncName:        switches
         Signature:       0x99A0C98383683E
-        FilenamesRef:    0x1A6D4D6FD974D39F
+        FilenamesRef:    0x4F0FF417951E554C
         Filenames:
-          - '/tmp/branch-c-general.c'
+          - branch-c-general.c
         Expressions:
           - [ { Add: 1 }, { Ref: 14 } ]
           - [ { Add: 2 }, { Ref: 9 } ]
@@ -311,150 +345,112 @@ Sections:
           - [ { Add: 0 }, { Ref: 3 } ]
           - [ { Add: 5 }, { Ref: 14 } ]
           - [ { Ref: 4 }, { Ref: 9 } ]
-          - [ { Add: 7 }, { Ref: 16 } ]
-          - [ { Add: 8 }, { Ref: 11 } ]
-          - [ { Ref: 7 }, { Ref: 9 } ]
           - [ { Ref: 5 }, { Ref: 6 } ]
           - [ { Ref: 5 }, { Ref: 7 } ]
-          - [ { Add: 12 }, { Ref: 16 } ]
-          - [ { Add: 13 }, { Ref: 11 } ]
-          - [ { Ref: 5 }, { Ref: 9 } ]
           - [ { Ref: 5 }, { Ref: 7 } ]
-          - [ { Add: 29 }, { Ref: 8 } ]
-          - [ { Ref: 5 }, { Ref: 7 } ]
-          - [ { Add: 18 }, { Ref: 16 } ]
-          - [ { Add: 29 }, { Ref: 11 } ]
+          - [ { Add: 10 }, { Ref: 8 } ]
           - [ { Ref: 5 }, { Ref: 7 } ]
           - [ { Ref: 9 }, { Ref: 10 } ]
-          - [ { Add: 28 }, { Ref: 16 } ]
-          - [ { Add: 29 }, { Ref: 9 } ]
-          - [ { Ref: 5 }, { Ref: 7 } ]
           - [ { Ref: 11 }, { Ref: 12 } ]
+          - [ { Ref: 11 }, { Ref: 14 } ]
           - [ { Ref: 14 }, { Ref: 15 } ]
           - [ { Ref: 13 }, { Ref: 16 } ]
-          - [ { Add: 28 }, { Ref: 11 } ]
-          - [ { Add: 29 }, { Ref: 9 } ]
-          - [ { Ref: 5 }, { Ref: 7 } ]
           - [ { Ref: 13 }, { Ref: 16 } ]
-          - [ { Add: 32 }, { Ref: 17 } ]
+          - [ { Add: 18 }, { Ref: 17 } ]
           - [ { Ref: 13 }, { Ref: 16 } ]
           - [ { Add: 0 }, { Ref: 3 } ]
           - [ { Add: 0 }, { Ref: 3 } ]
-          - [ { Sub: 36 }, { Ref: 18 } ]
+          - [ { Add: 0 }, { Ref: 3 } ]
+          - [ { Sub: 23 }, { Ref: 18 } ]
           - [ { Add: 0 }, { Ref: 3 } ]
         Records:
           - { File: 0, dLoc: [ 108, 17, 37, 2 ], Ref: 0 }
-          - { File: 0, dLoc: [ 4, 23, 2, 10 ], isGap: true, Zero: {  } }
+          - { File: 0, dLoc: [ 2, 1, 1, 28 ], Skip: {  } }
+          - { File: 0, dLoc: [ 2, 23, 2, 10 ], isGap: true, Zero: {  } }
           - { File: 0, dLoc: [ 1, 3, 1, 10 ], Ref: 2 }
           - { File: 0, dLoc: [ 0, 3, 0, 10 ], Branch: { True: { Ref: 2 }, False: { Zero: {  } } } }
-          - { File: 0, dLoc: [ 1, 10, 3, 3 ], isGap: true, Ref: 1 }
-          - { File: 0, dLoc: [ 3, 3, 28, 2 ], Ref: 1 }
+          - { File: 0, dLoc: [ 2, 4, 2, 3 ], isGap: true, Ref: 1 }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 3, 28, 2 ], Ref: 1 }
           - { File: 0, dLoc: [ 0, 63, 0, 70 ], Add: 0 }
-          - { File: 0, dLoc: [ 0, 63, 0, 70 ], Branch: { True: { Ref: 3 }, False: { Sub: 36 } } }
+          - { File: 0, dLoc: [ 0, 63, 0, 70 ], Branch: { True: { Ref: 3 }, False: { Sub: 23 } } }
           - { File: 0, dLoc: [ 0, 72, 0, 75 ], Add: 4 }
           - { File: 0, dLoc: [ 0, 76, 0, 77 ], isGap: true, Ref: 3 }
           - { File: 0, dLoc: [ 0, 77, 23, 4 ], Ref: 3 }
           - { File: 0, dLoc: [ 1, 25, 20, 15 ], isGap: true, Zero: {  } }
           - { File: 0, dLoc: [ 1, 5, 19, 15 ], Ref: 5 }
-          - { File: 0, dLoc: [ 0, 5, 0, 11 ], Branch: { True: { Ref: 5 }, False: { Add: 6 } } }
+          - { File: 0, dLoc: [ 0, 5, 0, 11 ], Branch: { True: { Ref: 5 }, False: { Zero: {  } } } }
           - { File: 0, dLoc: [ 1, 11, 0, 12 ], Ref: 5 }
-          - { File: 0, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Ref: 6 }, False: { Sub: 9 } } }
+          - { File: 0, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Ref: 6 }, False: { Sub: 6 } } }
           - { File: 0, dLoc: [ 0, 13, 0, 14 ], isGap: true, Ref: 6 }
           - { File: 0, dLoc: [ 0, 14, 0, 16 ], Ref: 6 }
-          - { File: 0, dLoc: [ 2, 5, 2, 12 ], Add: 29 }
-          - { File: 0, dLoc: [ 0, 5, 0, 11 ], Branch: { True: { Ref: 7 }, False: { Add: 11 } } }
-          - { File: 0, dLoc: [ 1, 11, 0, 12 ], Add: 29 }
-          - { File: 0, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Ref: 8 }, False: { Sub: 15 } } }
+          - { File: 0, dLoc: [ 1, 1, 0, 21 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 5, 2, 12 ], Add: 10 }
+          - { File: 0, dLoc: [ 0, 5, 0, 11 ], Branch: { True: { Ref: 7 }, False: { Zero: {  } } } }
+          - { File: 0, dLoc: [ 1, 11, 0, 12 ], Add: 10 }
+          - { File: 0, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Ref: 8 }, False: { Sub: 9 } } }
           - { File: 0, dLoc: [ 0, 13, 0, 14 ], isGap: true, Ref: 8 }
           - { File: 0, dLoc: [ 0, 14, 0, 16 ], Ref: 8 }
-          - { File: 0, dLoc: [ 2, 5, 2, 15 ], Ref: 9 }
-          - { File: 0, dLoc: [ 0, 5, 0, 11 ], Branch: { True: { Ref: 9 }, False: { Add: 17 } } }
+          - { File: 0, dLoc: [ 1, 13, 1, 5 ], isGap: true, Zero: {  } }
+          - { File: 0, dLoc: [ 1, 5, 2, 15 ], Ref: 9 }
+          - { File: 0, dLoc: [ 0, 5, 0, 11 ], Branch: { True: { Ref: 9 }, False: { Zero: {  } } } }
           - { File: 0, dLoc: [ 1, 11, 0, 12 ], Ref: 9 }
-          - { File: 0, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Ref: 10 }, False: { Sub: 20 } } }
+          - { File: 0, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Ref: 10 }, False: { Sub: 11 } } }
           - { File: 0, dLoc: [ 0, 13, 0, 14 ], isGap: true, Ref: 10 }
           - { File: 0, dLoc: [ 0, 14, 0, 16 ], Ref: 10 }
-          - { File: 0, dLoc: [ 2, 5, 10, 15 ], Ref: 11 }
-          - { File: 0, dLoc: [ 0, 5, 0, 11 ], Branch: { True: { Ref: 11 }, False: { Add: 21 } } }
+          - { File: 0, dLoc: [ 1, 16, 1, 5 ], isGap: true, Zero: {  } }
+          - { File: 0, dLoc: [ 1, 5, 10, 15 ], Ref: 11 }
+          - { File: 0, dLoc: [ 0, 5, 0, 11 ], Branch: { True: { Ref: 11 }, False: { Zero: {  } } } }
           - { File: 0, dLoc: [ 1, 11, 0, 12 ], Ref: 11 }
-          - { File: 0, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Ref: 12 }, False: { Sub: 24 } } }
+          - { File: 0, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Ref: 12 }, False: { Sub: 12 } } }
           - { File: 0, dLoc: [ 0, 13, 0, 14 ], isGap: true, Ref: 12 }
           - { File: 0, dLoc: [ 0, 14, 0, 16 ], Ref: 12 }
-          - { File: 0, dLoc: [ 1, 18, 3, 17 ], isGap: true, Zero: {  } }
+          - { File: 0, dLoc: [ 1, 15, 0, 16 ], Branch: { True: { Zero: {  } }, False: { Sub: 13 } } }
+          - { File: 0, dLoc: [ 0, 18, 3, 17 ], isGap: true, Zero: {  } }
           - { File: 0, dLoc: [ 1, 7, 2, 17 ], Ref: 14 }
           - { File: 0, dLoc: [ 0, 7, 0, 19 ], Branch: { True: { Ref: 14 }, False: { Zero: {  } } } }
           - { File: 0, dLoc: [ 1, 13, 0, 14 ], Ref: 14 }
-          - { File: 0, dLoc: [ 0, 13, 0, 14 ], Branch: { True: { Ref: 15 }, False: { Sub: 25 } } }
+          - { File: 0, dLoc: [ 0, 13, 0, 14 ], Branch: { True: { Ref: 15 }, False: { Sub: 14 } } }
           - { File: 0, dLoc: [ 0, 15, 0, 16 ], isGap: true, Ref: 15 }
           - { File: 0, dLoc: [ 0, 16, 0, 18 ], Ref: 15 }
-          - { File: 0, dLoc: [ 1, 17, 3, 5 ], isGap: true, Ref: 13 }
-          - { File: 0, dLoc: [ 3, 5, 2, 15 ], Add: 32 }
-          - { File: 0, dLoc: [ 0, 5, 2, 15 ], Ref: 13 }
-          - { File: 0, dLoc: [ 0, 5, 0, 12 ], Branch: { True: { Ref: 16 }, False: { Add: 27 } } }
-          - { File: 0, dLoc: [ 1, 11, 0, 23 ], Add: 32 }
-          - { File: 0, dLoc: [ 0, 11, 0, 23 ], Branch: { True: { Ref: 17 }, False: { Sub: 31 } } }
+          - { File: 0, dLoc: [ 2, 8, 2, 5 ], isGap: true, Ref: 13 }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 5, 2, 15 ], Add: 18 }
+          - { File: 0, dLoc: [ 0, 5, 0, 12 ], Branch: { True: { Ref: 16 }, False: { Zero: {  } } } }
+          - { File: 0, dLoc: [ 1, 11, 0, 23 ], Add: 18 }
+          - { File: 0, dLoc: [ 0, 11, 0, 23 ], Branch: { True: { Ref: 17 }, False: { Sub: 17 } } }
           - { File: 0, dLoc: [ 0, 24, 1, 9 ], isGap: true, Ref: 17 }
           - { File: 0, dLoc: [ 1, 9, 0, 15 ], Ref: 17 }
-          - { File: 0, dLoc: [ 5, 3, 2, 2 ], Sub: 36 }
-          - { File: 0, dLoc: [ 0, 7, 0, 17 ], Sub: 36 }
-          - { File: 0, dLoc: [ 0, 7, 0, 17 ], Branch: { True: { Ref: 18 }, False: { Sub: 35 } } }
+          - { File: 0, dLoc: [ 2, 4, 3, 3 ], isGap: true, Sub: 23 }
+          - { File: 0, dLoc: [ 1, 1, 1, 33 ], Skip: {  } }
+          - { File: 0, dLoc: [ 2, 3, 2, 2 ], Sub: 23 }
+          - { File: 0, dLoc: [ 0, 7, 0, 17 ], Sub: 23 }
+          - { File: 0, dLoc: [ 0, 7, 0, 17 ], Branch: { True: { Ref: 18 }, False: { Sub: 22 } } }
           - { File: 0, dLoc: [ 0, 18, 0, 19 ], isGap: true, Ref: 18 }
           - { File: 0, dLoc: [ 0, 19, 0, 21 ], Ref: 18 }
-  - Name:            '__llvm_covfun (8)'
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+  - Name:            '__llvm_covfun (5)'
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_GNU_RETAIN ]
     AddressAlign:    0x8
     CovFun:
       - FuncName:        big_switch
         Signature:       0xB6695A86B856FFD6
-        FilenamesRef:    0x1A6D4D6FD974D39F
+        FilenamesRef:    0x4F0FF417951E554C
         Filenames:
-          - '/tmp/branch-c-general.c'
+          - branch-c-general.c
         Expressions:
           - [ { Ref: 0 }, { Ref: 2 } ]
           - [ { Add: 0 }, { Ref: 1 } ]
-          - [ { Add: 3 }, { Ref: 15 } ]
-          - [ { Add: 4 }, { Ref: 13 } ]
-          - [ { Add: 5 }, { Ref: 11 } ]
-          - [ { Add: 6 }, { Ref: 9 } ]
-          - [ { Ref: 5 }, { Ref: 7 } ]
           - [ { Ref: 3 }, { Ref: 4 } ]
           - [ { Ref: 3 }, { Ref: 5 } ]
-          - [ { Add: 10 }, { Ref: 15 } ]
-          - [ { Add: 11 }, { Ref: 13 } ]
-          - [ { Add: 12 }, { Ref: 11 } ]
-          - [ { Add: 13 }, { Ref: 9 } ]
-          - [ { Ref: 3 }, { Ref: 7 } ]
           - [ { Ref: 3 }, { Ref: 5 } ]
-          - [ { Add: 45 }, { Ref: 6 } ]
-          - [ { Ref: 3 }, { Ref: 5 } ]
-          - [ { Add: 18 }, { Ref: 15 } ]
-          - [ { Add: 19 }, { Ref: 13 } ]
-          - [ { Add: 20 }, { Ref: 11 } ]
-          - [ { Add: 45 }, { Ref: 9 } ]
+          - [ { Add: 6 }, { Ref: 6 } ]
           - [ { Ref: 3 }, { Ref: 5 } ]
           - [ { Ref: 7 }, { Ref: 8 } ]
-          - [ { Add: 24 }, { Ref: 15 } ]
-          - [ { Add: 25 }, { Ref: 13 } ]
-          - [ { Add: 44 }, { Ref: 11 } ]
-          - [ { Add: 45 }, { Ref: 7 } ]
-          - [ { Ref: 3 }, { Ref: 5 } ]
           - [ { Ref: 9 }, { Ref: 10 } ]
-          - [ { Add: 30 }, { Ref: 15 } ]
-          - [ { Add: 43 }, { Ref: 13 } ]
-          - [ { Add: 44 }, { Ref: 9 } ]
-          - [ { Add: 45 }, { Ref: 7 } ]
-          - [ { Ref: 3 }, { Ref: 5 } ]
           - [ { Ref: 11 }, { Ref: 12 } ]
-          - [ { Add: 42 }, { Ref: 15 } ]
-          - [ { Add: 43 }, { Ref: 11 } ]
-          - [ { Add: 44 }, { Ref: 9 } ]
-          - [ { Add: 45 }, { Ref: 7 } ]
-          - [ { Ref: 3 }, { Ref: 5 } ]
           - [ { Ref: 13 }, { Ref: 14 } ]
-          - [ { Add: 42 }, { Ref: 13 } ]
-          - [ { Add: 43 }, { Ref: 11 } ]
-          - [ { Add: 44 }, { Ref: 9 } ]
-          - [ { Add: 45 }, { Ref: 7 } ]
-          - [ { Ref: 3 }, { Ref: 5 } ]
           - [ { Ref: 15 }, { Ref: 16 } ]
         Records:
           - { File: 0, dLoc: [ 147, 19, 31, 2 ], Ref: 0 }
@@ -465,56 +461,66 @@ Sections:
           - { File: 0, dLoc: [ 0, 32, 28, 4 ], Ref: 1 }
           - { File: 0, dLoc: [ 1, 21, 25, 12 ], isGap: true, Zero: {  } }
           - { File: 0, dLoc: [ 1, 5, 24, 12 ], Ref: 3 }
-          - { File: 0, dLoc: [ 0, 5, 0, 18 ], Branch: { True: { Ref: 3 }, False: { Add: 2 } } }
+          - { File: 0, dLoc: [ 0, 5, 0, 18 ], Branch: { True: { Ref: 3 }, False: { Zero: {  } } } }
           - { File: 0, dLoc: [ 1, 11, 0, 12 ], Ref: 3 }
-          - { File: 0, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Ref: 4 }, False: { Sub: 7 } } }
+          - { File: 0, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Ref: 4 }, False: { Sub: 2 } } }
           - { File: 0, dLoc: [ 0, 13, 0, 14 ], isGap: true, Ref: 4 }
           - { File: 0, dLoc: [ 0, 14, 0, 16 ], Ref: 4 }
-          - { File: 0, dLoc: [ 2, 5, 2, 12 ], Add: 45 }
-          - { File: 0, dLoc: [ 0, 5, 0, 18 ], Branch: { True: { Ref: 5 }, False: { Add: 9 } } }
-          - { File: 0, dLoc: [ 1, 11, 0, 12 ], Add: 45 }
-          - { File: 0, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Ref: 6 }, False: { Sub: 15 } } }
+          - { File: 0, dLoc: [ 1, 1, 0, 21 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 5, 2, 12 ], Add: 6 }
+          - { File: 0, dLoc: [ 0, 5, 0, 18 ], Branch: { True: { Ref: 5 }, False: { Zero: {  } } } }
+          - { File: 0, dLoc: [ 1, 11, 0, 12 ], Add: 6 }
+          - { File: 0, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Ref: 6 }, False: { Sub: 5 } } }
           - { File: 0, dLoc: [ 0, 13, 0, 14 ], isGap: true, Ref: 6 }
           - { File: 0, dLoc: [ 0, 14, 0, 16 ], Ref: 6 }
-          - { File: 0, dLoc: [ 2, 5, 2, 12 ], Ref: 7 }
-          - { File: 0, dLoc: [ 0, 5, 0, 32 ], Branch: { True: { Ref: 7 }, False: { Add: 17 } } }
+          - { File: 0, dLoc: [ 1, 13, 1, 5 ], isGap: true, Zero: {  } }
+          - { File: 0, dLoc: [ 1, 5, 2, 12 ], Ref: 7 }
+          - { File: 0, dLoc: [ 0, 5, 0, 32 ], Branch: { True: { Ref: 7 }, False: { Zero: {  } } } }
           - { File: 0, dLoc: [ 1, 11, 0, 12 ], Ref: 7 }
-          - { File: 0, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Ref: 8 }, False: { Sub: 22 } } }
+          - { File: 0, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Ref: 8 }, False: { Sub: 7 } } }
           - { File: 0, dLoc: [ 0, 13, 0, 14 ], isGap: true, Ref: 8 }
           - { File: 0, dLoc: [ 0, 14, 0, 16 ], Ref: 8 }
-          - { File: 0, dLoc: [ 4, 5, 2, 12 ], Ref: 9 }
-          - { File: 0, dLoc: [ 0, 5, 0, 19 ], Branch: { True: { Ref: 9 }, False: { Add: 23 } } }
+          - { File: 0, dLoc: [ 1, 13, 3, 5 ], isGap: true, Zero: {  } }
+          - { File: 0, dLoc: [ 1, 1, 1, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 2, 5, 2, 12 ], Ref: 9 }
+          - { File: 0, dLoc: [ 0, 5, 0, 19 ], Branch: { True: { Ref: 9 }, False: { Zero: {  } } } }
           - { File: 0, dLoc: [ 1, 11, 0, 12 ], Ref: 9 }
-          - { File: 0, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Ref: 10 }, False: { Sub: 28 } } }
+          - { File: 0, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Ref: 10 }, False: { Sub: 8 } } }
           - { File: 0, dLoc: [ 0, 13, 0, 14 ], isGap: true, Ref: 10 }
           - { File: 0, dLoc: [ 0, 14, 0, 16 ], Ref: 10 }
-          - { File: 0, dLoc: [ 2, 5, 2, 12 ], Ref: 11 }
-          - { File: 0, dLoc: [ 0, 5, 0, 33 ], Branch: { True: { Ref: 11 }, False: { Add: 29 } } }
+          - { File: 0, dLoc: [ 1, 13, 1, 5 ], isGap: true, Zero: {  } }
+          - { File: 0, dLoc: [ 1, 5, 2, 12 ], Ref: 11 }
+          - { File: 0, dLoc: [ 0, 5, 0, 33 ], Branch: { True: { Ref: 11 }, False: { Zero: {  } } } }
           - { File: 0, dLoc: [ 1, 11, 0, 12 ], Ref: 11 }
-          - { File: 0, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Ref: 12 }, False: { Sub: 34 } } }
+          - { File: 0, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Ref: 12 }, False: { Sub: 9 } } }
           - { File: 0, dLoc: [ 0, 13, 0, 14 ], isGap: true, Ref: 12 }
           - { File: 0, dLoc: [ 0, 14, 0, 16 ], Ref: 12 }
-          - { File: 0, dLoc: [ 4, 5, 2, 12 ], Ref: 13 }
-          - { File: 0, dLoc: [ 0, 5, 0, 39 ], Branch: { True: { Ref: 13 }, False: { Add: 35 } } }
+          - { File: 0, dLoc: [ 1, 13, 3, 5 ], isGap: true, Zero: {  } }
+          - { File: 0, dLoc: [ 1, 1, 1, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 2, 5, 2, 12 ], Ref: 13 }
+          - { File: 0, dLoc: [ 0, 5, 0, 39 ], Branch: { True: { Ref: 13 }, False: { Zero: {  } } } }
           - { File: 0, dLoc: [ 1, 11, 0, 12 ], Ref: 13 }
-          - { File: 0, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Ref: 14 }, False: { Sub: 40 } } }
+          - { File: 0, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Ref: 14 }, False: { Sub: 10 } } }
           - { File: 0, dLoc: [ 0, 13, 0, 14 ], isGap: true, Ref: 14 }
           - { File: 0, dLoc: [ 0, 14, 0, 16 ], Ref: 14 }
-          - { File: 0, dLoc: [ 2, 5, 2, 12 ], Ref: 15 }
-          - { File: 0, dLoc: [ 0, 5, 0, 12 ], Branch: { True: { Ref: 15 }, False: { Add: 41 } } }
+          - { File: 0, dLoc: [ 1, 13, 1, 5 ], isGap: true, Zero: {  } }
+          - { File: 0, dLoc: [ 1, 5, 2, 12 ], Ref: 15 }
+          - { File: 0, dLoc: [ 0, 5, 0, 12 ], Branch: { True: { Ref: 15 }, False: { Zero: {  } } } }
           - { File: 0, dLoc: [ 1, 11, 0, 12 ], Ref: 15 }
-          - { File: 0, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Ref: 16 }, False: { Sub: 46 } } }
+          - { File: 0, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Ref: 16 }, False: { Sub: 11 } } }
           - { File: 0, dLoc: [ 0, 13, 0, 14 ], isGap: true, Ref: 16 }
           - { File: 0, dLoc: [ 0, 14, 0, 16 ], Ref: 16 }
-  - Name:            '__llvm_covfun (2)'
+          - { File: 0, dLoc: [ 4, 1, 0, 1 ], Skip: {  } }
+  - Name:            '__llvm_covfun (6)'
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_GNU_RETAIN ]
     AddressAlign:    0x8
     CovFun:
       - FuncName:        boolean_operators
         Signature:       0x46CF38F3CE391
-        FilenamesRef:    0x1A6D4D6FD974D39F
+        FilenamesRef:    0x4F0FF417951E554C
         Filenames:
-          - '/tmp/branch-c-general.c'
+          - branch-c-general.c
         Expressions:
           - [ { Ref: 0 }, { Ref: 1 } ]
           - [ { Ref: 1 }, { Ref: 2 } ]
@@ -538,33 +544,38 @@ Sections:
           - { File: 0, dLoc: [ 0, 9, 0, 14 ], Branch: { True: { Sub: 1 }, False: { Ref: 2 } } }
           - { File: 0, dLoc: [ 0, 18, 0, 19 ], Ref: 2 }
           - { File: 0, dLoc: [ 0, 18, 0, 19 ], Branch: { True: { Sub: 2 }, False: { Ref: 3 } } }
-          - { File: 0, dLoc: [ 2, 9, 0, 14 ], Ref: 1 }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 9, 0, 14 ], Ref: 1 }
           - { File: 0, dLoc: [ 0, 9, 0, 14 ], Branch: { True: { Ref: 4 }, False: { Sub: 3 } } }
           - { File: 0, dLoc: [ 0, 18, 0, 19 ], Ref: 4 }
           - { File: 0, dLoc: [ 0, 18, 0, 19 ], Branch: { True: { Ref: 5 }, False: { Sub: 4 } } }
-          - { File: 0, dLoc: [ 2, 9, 0, 14 ], Ref: 1 }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 9, 0, 14 ], Ref: 1 }
           - { File: 0, dLoc: [ 0, 9, 0, 23 ], Ref: 1 }
           - { File: 0, dLoc: [ 0, 9, 0, 14 ], Branch: { True: { Sub: 5 }, False: { Ref: 8 } } }
           - { File: 0, dLoc: [ 0, 18, 0, 23 ], Ref: 8 }
           - { File: 0, dLoc: [ 0, 18, 0, 23 ], Branch: { True: { Sub: 6 }, False: { Ref: 9 } } }
           - { File: 0, dLoc: [ 0, 27, 0, 28 ], Ref: 6 }
           - { File: 0, dLoc: [ 0, 27, 0, 28 ], Branch: { True: { Sub: 7 }, False: { Ref: 7 } } }
-          - { File: 0, dLoc: [ 2, 9, 0, 14 ], Ref: 1 }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 9, 0, 14 ], Ref: 1 }
           - { File: 0, dLoc: [ 0, 9, 0, 23 ], Ref: 1 }
           - { File: 0, dLoc: [ 0, 9, 0, 14 ], Branch: { True: { Ref: 12 }, False: { Sub: 8 } } }
           - { File: 0, dLoc: [ 0, 18, 0, 23 ], Ref: 12 }
           - { File: 0, dLoc: [ 0, 18, 0, 23 ], Branch: { True: { Ref: 13 }, False: { Sub: 9 } } }
           - { File: 0, dLoc: [ 0, 27, 0, 28 ], Ref: 10 }
           - { File: 0, dLoc: [ 0, 27, 0, 28 ], Branch: { True: { Ref: 11 }, False: { Sub: 10 } } }
-  - Name:            __llvm_covfun
+          - { File: 0, dLoc: [ 2, 1, 0, 1 ], Skip: {  } }
+  - Name:            '__llvm_covfun (7)'
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_GNU_RETAIN ]
     AddressAlign:    0x8
     CovFun:
       - FuncName:        boolop_loops
         Signature:       0xAC1EE72F5632D15F
-        FilenamesRef:    0x1A6D4D6FD974D39F
+        FilenamesRef:    0x4F0FF417951E554C
         Filenames:
-          - '/tmp/branch-c-general.c'
+          - branch-c-general.c
         Expressions:
           - [ { Ref: 0 }, { Ref: 1 } ]
           - [ { Add: 0 }, { Ref: 2 } ]
@@ -586,64 +597,76 @@ Sections:
           - [ { Ref: 11 }, { Ref: 12 } ]
         Records:
           - { File: 0, dLoc: [ 194, 21, 13, 2 ], Ref: 0 }
-          - { File: 0, dLoc: [ 3, 10, 0, 11 ], Add: 0 }
+          - { File: 0, dLoc: [ 2, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 10, 0, 11 ], Add: 0 }
           - { File: 0, dLoc: [ 0, 10, 0, 21 ], Add: 0 }
           - { File: 0, dLoc: [ 0, 10, 0, 11 ], Branch: { True: { Ref: 2 }, False: { Sub: 1 } } }
           - { File: 0, dLoc: [ 0, 15, 0, 21 ], Ref: 2 }
           - { File: 0, dLoc: [ 0, 15, 0, 21 ], Branch: { True: { Ref: 3 }, False: { Sub: 2 } } }
           - { File: 0, dLoc: [ 0, 22, 1, 5 ], isGap: true, Ref: 1 }
           - { File: 0, dLoc: [ 1, 5, 0, 8 ], Ref: 1 }
-          - { File: 0, dLoc: [ 2, 10, 0, 17 ], Add: 6 }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 10, 0, 17 ], Add: 6 }
           - { File: 0, dLoc: [ 0, 10, 0, 28 ], Add: 6 }
           - { File: 0, dLoc: [ 0, 10, 0, 17 ], Branch: { True: { Sub: 5 }, False: { Ref: 5 } } }
           - { File: 0, dLoc: [ 0, 21, 0, 28 ], Ref: 5 }
           - { File: 0, dLoc: [ 0, 21, 0, 28 ], Branch: { True: { Sub: 7 }, False: { Ref: 6 } } }
           - { File: 0, dLoc: [ 0, 29, 1, 5 ], isGap: true, Ref: 4 }
           - { File: 0, dLoc: [ 1, 5, 0, 8 ], Ref: 4 }
-          - { File: 0, dLoc: [ 2, 17, 0, 18 ], Add: 11 }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 17, 0, 18 ], Add: 11 }
           - { File: 0, dLoc: [ 0, 17, 0, 28 ], Add: 11 }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Ref: 8 }, False: { Sub: 10 } } }
           - { File: 0, dLoc: [ 0, 22, 0, 28 ], Ref: 8 }
           - { File: 0, dLoc: [ 0, 22, 0, 28 ], Branch: { True: { Ref: 9 }, False: { Sub: 12 } } }
           - { File: 0, dLoc: [ 0, 30, 0, 33 ], Ref: 7 }
           - { File: 0, dLoc: [ 0, 34, 0, 35 ], Ref: 7 }
-          - { File: 0, dLoc: [ 2, 10, 0, 17 ], Add: 16 }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 10, 0, 17 ], Add: 16 }
           - { File: 0, dLoc: [ 0, 10, 0, 28 ], Add: 16 }
           - { File: 0, dLoc: [ 0, 10, 0, 17 ], Branch: { True: { Sub: 15 }, False: { Ref: 11 } } }
           - { File: 0, dLoc: [ 0, 21, 0, 28 ], Ref: 11 }
           - { File: 0, dLoc: [ 0, 21, 0, 28 ], Branch: { True: { Sub: 17 }, False: { Ref: 12 } } }
           - { File: 0, dLoc: [ 0, 30, 0, 33 ], Ref: 10 }
           - { File: 0, dLoc: [ 0, 34, 0, 35 ], Ref: 10 }
-  - Name:            '__llvm_covfun (6)'
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+  - Name:            '__llvm_covfun (8)'
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_GNU_RETAIN ]
     AddressAlign:    0x8
     CovFun:
       - FuncName:        conditional_operator
         Signature:       0xD6D0
-        FilenamesRef:    0x1A6D4D6FD974D39F
+        FilenamesRef:    0x4F0FF417951E554C
         Filenames:
-          - '/tmp/branch-c-general.c'
+          - branch-c-general.c
         Expressions:
           - [ { Ref: 0 }, { Ref: 1 } ]
           - [ { Ref: 0 }, { Ref: 2 } ]
           - [ { Ref: 0 }, { Ref: 2 } ]
         Records:
           - { File: 0, dLoc: [ 209, 29, 7, 2 ], Ref: 0 }
-          - { File: 0, dLoc: [ 3, 11, 0, 17 ], Branch: { True: { Ref: 1 }, False: { Sub: 0 } } }
-          - { File: 0, dLoc: [ 0, 18, 0, 20 ], isGap: true, Ref: 1 }
+          - { File: 0, dLoc: [ 2, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 11, 0, 17 ], Ref: 0 }
+          - { File: 0, dLoc: [ 0, 11, 0, 17 ], Branch: { True: { Ref: 1 }, False: { Sub: 0 } } }
+          - { File: 0, dLoc: [ 0, 19, 0, 20 ], isGap: true, Ref: 1 }
           - { File: 0, dLoc: [ 0, 20, 0, 21 ], Ref: 1 }
           - { File: 0, dLoc: [ 0, 24, 0, 25 ], Sub: 0 }
-          - { File: 0, dLoc: [ 2, 11, 0, 12 ], Branch: { True: { Ref: 2 }, False: { Sub: 2 } } }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 11, 0, 12 ], Ref: 0 }
+          - { File: 0, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Ref: 2 }, False: { Sub: 2 } } }
           - { File: 0, dLoc: [ 0, 16, 0, 17 ], Sub: 2 }
-  - Name:            '__llvm_covfun (1)'
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+  - Name:            '__llvm_covfun (9)'
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_GNU_RETAIN ]
     AddressAlign:    0x8
     CovFun:
       - FuncName:        do_fallthrough
         Signature:       0x78F0876298F0EA92
-        FilenamesRef:    0x1A6D4D6FD974D39F
+        FilenamesRef:    0x4F0FF417951E554C
         Filenames:
-          - '/tmp/branch-c-general.c'
+          - branch-c-general.c
         Expressions:
           - [ { Ref: 0 }, { Ref: 1 } ]
           - [ { Ref: 1 }, { Ref: 2 } ]
@@ -665,35 +688,38 @@ Sections:
           - { File: 0, dLoc: [ 0, 31, 0, 32 ], isGap: true, Ref: 1 }
           - { File: 0, dLoc: [ 0, 32, 9, 4 ], Ref: 1 }
           - { File: 0, dLoc: [ 2, 8, 6, 6 ], Add: 10 }
-          - { File: 0, dLoc: [ 4, 11, 0, 16 ], Add: 10 }
+          - { File: 0, dLoc: [ 1, 1, 2, 77 ], Skip: {  } }
+          - { File: 0, dLoc: [ 3, 11, 0, 16 ], Add: 10 }
           - { File: 0, dLoc: [ 0, 11, 0, 16 ], Branch: { True: { Ref: 3 }, False: { Sub: 9 } } }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], isGap: true, Ref: 3 }
           - { File: 0, dLoc: [ 0, 18, 0, 23 ], Ref: 3 }
-          - { File: 0, dLoc: [ 0, 23, 1, 7 ], isGap: true, Sub: 9 }
+          - { File: 0, dLoc: [ 0, 24, 1, 7 ], isGap: true, Sub: 9 }
           - { File: 0, dLoc: [ 1, 7, 1, 6 ], Sub: 9 }
           - { File: 0, dLoc: [ 1, 14, 0, 19 ], Sub: 9 }
           - { File: 0, dLoc: [ 0, 14, 0, 19 ], Branch: { True: { Ref: 2 }, False: { Sub: 11 } } }
   - Name:            '__llvm_covfun (10)'
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_GNU_RETAIN ]
     AddressAlign:    0x8
     CovFun:
       - FuncName:        main
         Signature:       0x18
-        FilenamesRef:    0x1A6D4D6FD974D39F
+        FilenamesRef:    0x4F0FF417951E554C
         Filenames:
-          - '/tmp/branch-c-general.c'
+          - branch-c-general.c
         Expressions:     []
         Records:
           - { File: 0, dLoc: [ 245, 40, 15, 2 ], Ref: 0 }
   - Name:            '__llvm_covfun (11)'
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_GNU_RETAIN ]
     AddressAlign:    0x8
     CovFun:
       - FuncName:        'branch-c-general.c:static_func'
         Signature:       0x46D1
-        FilenamesRef:    0x1A6D4D6FD974D39F
+        FilenamesRef:    0x4F0FF417951E554C
         Filenames:
-          - '/tmp/branch-c-general.c'
+          - branch-c-general.c
         Expressions:
           - [ { Ref: 0 }, { Ref: 1 } ]
         Records:
@@ -705,14 +731,16 @@ Sections:
           - { File: 0, dLoc: [ 0, 32, 1, 4 ], Ref: 1 }
   - Name:            __llvm_covmap
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_GNU_RETAIN ]
     AddressAlign:    0x8
     CovMap:
-      - Version:         3
-        FnBlobHash:      0x1A6D4D6FD974D39F
+      - Version:         6
+        FnBlobHash:      0x4F0FF417951E554C
         Filenames:
-          - '/tmp/branch-c-general.c'
+          - branch-c-general.c
   - Name:            __llvm_prf_names
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_GNU_RETAIN ]
     AddressAlign:    0x1
     PrfNames:
       - Names:
@@ -731,84 +759,87 @@ Sections:
   - Type:            SectionHeaderTable
     Sections:
       - Name:            .strtab
-      - Name:            '__llvm_covfun (7)'
+      - Name:            __llvm_covfun
+      - Name:            '__llvm_covfun (1)'
+      - Name:            '__llvm_covfun (2)'
+      - Name:            '__llvm_covfun (3)'
       - Name:            '__llvm_covfun (4)'
       - Name:            '__llvm_covfun (5)'
-      - Name:            '__llvm_covfun (3)'
-      - Name:            '__llvm_covfun (9)'
-      - Name:            '__llvm_covfun (8)'
-      - Name:            '__llvm_covfun (2)'
-      - Name:            __llvm_covfun
       - Name:            '__llvm_covfun (6)'
-      - Name:            '__llvm_covfun (1)'
+      - Name:            '__llvm_covfun (7)'
+      - Name:            '__llvm_covfun (8)'
+      - Name:            '__llvm_covfun (9)'
       - Name:            '__llvm_covfun (10)'
       - Name:            '__llvm_covfun (11)'
       - Name:            __llvm_covmap
       - Name:            __llvm_prf_names
       - Name:            .symtab
 Symbols:
+  - Name:            __llvm_covmap
+    Type:            STT_SECTION
+    Section:         __llvm_covmap
   - Name:            __llvm_prf_names
     Type:            STT_SECTION
     Section:         __llvm_prf_names
-  - Name:            __covrec_135D504B043D95F5u
+  - Name:            __covrec_79BE9FB148987D7u
     Type:            STT_OBJECT
     Section:         __llvm_covfun
     Binding:         STB_WEAK
-    Size:            0xEE
+    Size:            0x7C
     Other:           [ STV_HIDDEN ]
-  - Name:            __covrec_42EB9670C4E7E87Du
+  - Name:            __covrec_688E43F1A505AD83u
     Type:            STT_OBJECT
     Section:         '__llvm_covfun (1)'
     Binding:         STB_WEAK
-    Size:            0x96
+    Size:            0x16A
     Other:           [ STV_HIDDEN ]
-  - Name:            __covrec_58A39A89A88AA459u
+  - Name:            __covrec_6973C52804C74904u
     Type:            STT_OBJECT
     Section:         '__llvm_covfun (2)'
     Binding:         STB_WEAK
-    Size:            0xDD
+    Size:            0x16A
     Other:           [ STV_HIDDEN ]
   - Name:            __covrec_5E259F0529789455u
     Type:            STT_OBJECT
     Section:         '__llvm_covfun (3)'
     Binding:         STB_WEAK
-    Size:            0x1FA
+    Size:            0x279
     Other:           [ STV_HIDDEN ]
-  - Name:            __covrec_688E43F1A505AD83u
+  - Name:            __covrec_BF9282263CCA2971u
     Type:            STT_OBJECT
     Section:         '__llvm_covfun (4)'
     Binding:         STB_WEAK
-    Size:            0x160
+    Size:            0x1F5
     Other:           [ STV_HIDDEN ]
-  - Name:            __covrec_6973C52804C74904u
+  - Name:            __covrec_7B4187606E1C4D3Fu
     Type:            STT_OBJECT
     Section:         '__llvm_covfun (5)'
     Binding:         STB_WEAK
-    Size:            0x14E
+    Size:            0x1B1
     Other:           [ STV_HIDDEN ]
-  - Name:            __covrec_795CF1BD69C3E520u
+  - Name:            __covrec_58A39A89A88AA459u
     Type:            STT_OBJECT
     Section:         '__llvm_covfun (6)'
     Binding:         STB_WEAK
-    Size:            0x52
+    Size:            0xF1
     Other:           [ STV_HIDDEN ]
-  - Name:            __covrec_79BE9FB148987D7u
+  - Name:            __covrec_135D504B043D95F5u
     Type:            STT_OBJECT
     Section:         '__llvm_covfun (7)'
     Binding:         STB_WEAK
-    Size:            0x77
+    Size:            0x107
     Other:           [ STV_HIDDEN ]
-  - Name:            __covrec_7B4187606E1C4D3Fu
+  - Name:            __covrec_795CF1BD69C3E520u
     Type:            STT_OBJECT
     Section:         '__llvm_covfun (8)'
     Binding:         STB_WEAK
-    Size:            0x1CC
+    Size:            0x6B
     Other:           [ STV_HIDDEN ]
-  - Name:            __covrec_BF9282263CCA2971u
+  - Name:            __covrec_42EB9670C4E7E87Du
     Type:            STT_OBJECT
     Section:         '__llvm_covfun (9)'
     Binding:         STB_WEAK
-    Size:            0x1DC
+    Size:            0x9B
     Other:           [ STV_HIDDEN ]
   - Name:            __covrec_DB956436E78DD5FAu
     Type:            STT_OBJECT
diff --git a/llvm/test/tools/llvm-cov/Inputs/branch-logical-mixed.cpp b/llvm/test/tools/llvm-cov/Inputs/branch-logical-mixed.cpp
index 0a7d8d896711585..a5fb68c98bb5ed2 100644
--- a/llvm/test/tools/llvm-cov/Inputs/branch-logical-mixed.cpp
+++ b/llvm/test/tools/llvm-cov/Inputs/branch-logical-mixed.cpp
@@ -78,6 +78,6 @@ extern "C" { extern void __llvm_profile_write_file(void); }
 int main(int argc, char *argv[])
 {
   func(atoi(argv[1]), atoi(argv[2]));
-  __llvm_profile_write_file();
+  (void)0;
   return 0;
 }
diff --git a/llvm/test/tools/llvm-cov/Inputs/branch-logical-mixed.proftext b/llvm/test/tools/llvm-cov/Inputs/branch-logical-mixed.proftext
index e5c67dd21a04b24..26f0f20656d1708 100644
--- a/llvm/test/tools/llvm-cov/Inputs/branch-logical-mixed.proftext
+++ b/llvm/test/tools/llvm-cov/Inputs/branch-logical-mixed.proftext
@@ -1,8 +1,8 @@
 _Z4funcii
 # Func Hash:
-9495997393973228792
+8468630735863722633
 # Num Counters:
-69
+59
 # Counter Values:
 4
 0
@@ -31,11 +31,6 @@ _Z4funcii
 3
 3
 3
-3
-3
-3
-3
-3
 1
 2
 0
@@ -51,12 +46,7 @@ _Z4funcii
 3
 3
 3
-3
-3
-3
-3
 4
-3
 1
 0
 2
diff --git a/llvm/test/tools/llvm-cov/Inputs/branch-logical-mixed.yaml b/llvm/test/tools/llvm-cov/Inputs/branch-logical-mixed.yaml
index bae787216fee7ce..8e8182bf3e6db33 100644
--- a/llvm/test/tools/llvm-cov/Inputs/branch-logical-mixed.yaml
+++ b/llvm/test/tools/llvm-cov/Inputs/branch-logical-mixed.yaml
@@ -1,21 +1,22 @@
 --- !ELF
 FileHeader:
-  Class:           ELFCLASS32
+  Class:           ELFCLASS64
   Data:            ELFDATA2LSB
+  OSABI:           ELFOSABI_GNU
   Type:            ET_REL
-  Machine:         EM_ARM
-  Flags:           [ EF_ARM_EABI_VER5 ]
+  Machine:         EM_X86_64
   SectionHeaderStringTable: .strtab
 Sections:
   - Name:            __llvm_covfun
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_GNU_RETAIN ]
     AddressAlign:    0x8
     CovFun:
       - FuncName:        _Z4funcii
-        Signature:       0x83C88F515FCF34F8
-        FilenamesRef:    0x433778095298742
+        Signature:       0x75869EC9191CB289
+        FilenamesRef:    0xE846BD6FE050298F
         Filenames:
-          - '/tmp/branch-logical-mixed.cpp'
+          - branch-logical-mixed.cpp
         Expressions:
           - [ { Ref: 0 }, { Ref: 9 } ]
           - [ { Ref: 9 }, { Ref: 10 } ]
@@ -29,45 +30,46 @@ Sections:
           - [ { Ref: 15 }, { Ref: 16 } ]
           - [ { Ref: 13 }, { Ref: 14 } ]
           - [ { Ref: 11 }, { Ref: 12 } ]
-          - [ { Ref: 0 }, { Ref: 31 } ]
-          - [ { Ref: 31 }, { Ref: 32 } ]
-          - [ { Ref: 29 }, { Ref: 33 } ]
-          - [ { Ref: 33 }, { Ref: 34 } ]
-          - [ { Ref: 27 }, { Ref: 35 } ]
-          - [ { Ref: 35 }, { Ref: 36 } ]
-          - [ { Ref: 25 }, { Ref: 37 } ]
-          - [ { Ref: 37 }, { Ref: 38 } ]
-          - [ { Ref: 23 }, { Ref: 39 } ]
-          - [ { Ref: 39 }, { Ref: 40 } ]
-          - [ { Ref: 21 }, { Ref: 41 } ]
-          - [ { Ref: 41 }, { Ref: 42 } ]
-          - [ { Ref: 0 }, { Ref: 53 } ]
+          - [ { Ref: 0 }, { Ref: 26 } ]
+          - [ { Ref: 26 }, { Ref: 27 } ]
+          - [ { Ref: 25 }, { Ref: 28 } ]
+          - [ { Ref: 28 }, { Ref: 29 } ]
+          - [ { Ref: 24 }, { Ref: 30 } ]
+          - [ { Ref: 30 }, { Ref: 31 } ]
+          - [ { Ref: 23 }, { Ref: 32 } ]
+          - [ { Ref: 32 }, { Ref: 33 } ]
+          - [ { Ref: 22 }, { Ref: 34 } ]
+          - [ { Ref: 34 }, { Ref: 35 } ]
+          - [ { Ref: 21 }, { Ref: 36 } ]
+          - [ { Ref: 36 }, { Ref: 37 } ]
+          - [ { Ref: 0 }, { Ref: 43 } ]
+          - [ { Ref: 43 }, { Ref: 44 } ]
+          - [ { Ref: 42 }, { Ref: 45 } ]
+          - [ { Ref: 45 }, { Ref: 46 } ]
+          - [ { Ref: 41 }, { Ref: 47 } ]
+          - [ { Ref: 47 }, { Ref: 48 } ]
+          - [ { Ref: 40 }, { Ref: 49 } ]
+          - [ { Ref: 49 }, { Ref: 50 } ]
+          - [ { Ref: 39 }, { Ref: 51 } ]
+          - [ { Ref: 51 }, { Ref: 52 } ]
+          - [ { Ref: 38 }, { Ref: 53 } ]
           - [ { Ref: 53 }, { Ref: 54 } ]
-          - [ { Ref: 51 }, { Ref: 55 } ]
-          - [ { Ref: 55 }, { Ref: 56 } ]
-          - [ { Ref: 49 }, { Ref: 57 } ]
-          - [ { Ref: 57 }, { Ref: 58 } ]
-          - [ { Ref: 47 }, { Ref: 59 } ]
-          - [ { Ref: 59 }, { Ref: 60 } ]
-          - [ { Ref: 45 }, { Ref: 61 } ]
-          - [ { Ref: 61 }, { Ref: 62 } ]
-          - [ { Ref: 43 }, { Ref: 63 } ]
-          - [ { Ref: 63 }, { Ref: 64 } ]
-          - [ { Ref: 0 }, { Ref: 65 } ]
-          - [ { Ref: 0 }, { Ref: 65 } ]
-          - [ { Ref: 0 }, { Ref: 65 } ]
-          - [ { Ref: 0 }, { Ref: 66 } ]
-          - [ { Ref: 0 }, { Ref: 66 } ]
-          - [ { Ref: 0 }, { Ref: 66 } ]
-          - [ { Ref: 0 }, { Ref: 67 } ]
-          - [ { Ref: 0 }, { Ref: 67 } ]
-          - [ { Ref: 0 }, { Ref: 67 } ]
-          - [ { Ref: 0 }, { Ref: 68 } ]
-          - [ { Ref: 0 }, { Ref: 68 } ]
-          - [ { Ref: 0 }, { Ref: 68 } ]
+          - [ { Ref: 0 }, { Ref: 55 } ]
+          - [ { Ref: 0 }, { Ref: 55 } ]
+          - [ { Ref: 0 }, { Ref: 55 } ]
+          - [ { Ref: 0 }, { Ref: 56 } ]
+          - [ { Ref: 0 }, { Ref: 56 } ]
+          - [ { Ref: 0 }, { Ref: 56 } ]
+          - [ { Ref: 0 }, { Ref: 57 } ]
+          - [ { Ref: 0 }, { Ref: 57 } ]
+          - [ { Ref: 0 }, { Ref: 57 } ]
+          - [ { Ref: 0 }, { Ref: 58 } ]
+          - [ { Ref: 0 }, { Ref: 58 } ]
+          - [ { Ref: 0 }, { Ref: 58 } ]
         Records:
           - { File: 0, dLoc: [ 8, 25, 67, 2 ], Ref: 0 }
-          - { File: 0, dLoc: [ 8, 12, 0, 14 ], Ref: 0 }
+          - { File: 0, dLoc: [ 7, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 12, 0, 14 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 12, 1, 14 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 12, 2, 14 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 12, 3, 14 ], Ref: 0 }
@@ -83,7 +85,8 @@ Sections:
           - { File: 0, dLoc: [ 0, 12, 0, 14 ], Branch: { True: { Ref: 4 }, False: { Sub: 4 } } }
           - { File: 0, dLoc: [ 1, 12, 0, 14 ], Ref: 1 }
           - { File: 0, dLoc: [ 0, 12, 0, 14 ], Branch: { True: { Ref: 2 }, False: { Sub: 5 } } }
-          - { File: 0, dLoc: [ 2, 12, 0, 14 ], Ref: 0 }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 12, 0, 14 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 12, 1, 14 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 12, 2, 14 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 12, 3, 14 ], Ref: 0 }
@@ -99,120 +102,129 @@ Sections:
           - { File: 0, dLoc: [ 0, 12, 0, 14 ], Branch: { True: { Sub: 10 }, False: { Ref: 14 } } }
           - { File: 0, dLoc: [ 1, 12, 0, 14 ], Ref: 11 }
           - { File: 0, dLoc: [ 0, 12, 0, 14 ], Branch: { True: { Sub: 11 }, False: { Ref: 12 } } }
-          - { File: 0, dLoc: [ 2, 12, 1, 16 ], Ref: 0 }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 12, 1, 16 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 12, 3, 16 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 12, 5, 16 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 12, 7, 16 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 12, 9, 16 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 13, 0, 15 ], Ref: 0 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Ref: 31 }, False: { Sub: 12 } } }
-          - { File: 0, dLoc: [ 1, 13, 0, 15 ], Ref: 31 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Ref: 32 }, False: { Sub: 13 } } }
-          - { File: 0, dLoc: [ 1, 12, 1, 16 ], Ref: 29 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Ref: 29 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Ref: 33 }, False: { Sub: 14 } } }
-          - { File: 0, dLoc: [ 1, 13, 0, 15 ], Ref: 33 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Ref: 34 }, False: { Sub: 15 } } }
-          - { File: 0, dLoc: [ 1, 12, 1, 16 ], Ref: 27 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Ref: 27 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Ref: 35 }, False: { Sub: 16 } } }
-          - { File: 0, dLoc: [ 1, 13, 0, 15 ], Ref: 35 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Ref: 36 }, False: { Sub: 17 } } }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Ref: 26 }, False: { Sub: 12 } } }
+          - { File: 0, dLoc: [ 1, 13, 0, 15 ], Ref: 26 }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Ref: 27 }, False: { Sub: 13 } } }
           - { File: 0, dLoc: [ 1, 12, 1, 16 ], Ref: 25 }
           - { File: 0, dLoc: [ 0, 13, 0, 15 ], Ref: 25 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Ref: 37 }, False: { Sub: 18 } } }
-          - { File: 0, dLoc: [ 1, 13, 0, 15 ], Ref: 37 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Ref: 38 }, False: { Sub: 19 } } }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Ref: 28 }, False: { Sub: 14 } } }
+          - { File: 0, dLoc: [ 1, 13, 0, 15 ], Ref: 28 }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Ref: 29 }, False: { Sub: 15 } } }
+          - { File: 0, dLoc: [ 1, 12, 1, 16 ], Ref: 24 }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Ref: 24 }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Ref: 30 }, False: { Sub: 16 } } }
+          - { File: 0, dLoc: [ 1, 13, 0, 15 ], Ref: 30 }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Ref: 31 }, False: { Sub: 17 } } }
           - { File: 0, dLoc: [ 1, 12, 1, 16 ], Ref: 23 }
           - { File: 0, dLoc: [ 0, 13, 0, 15 ], Ref: 23 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Ref: 39 }, False: { Sub: 20 } } }
-          - { File: 0, dLoc: [ 1, 13, 0, 15 ], Ref: 39 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Ref: 40 }, False: { Sub: 21 } } }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Ref: 32 }, False: { Sub: 18 } } }
+          - { File: 0, dLoc: [ 1, 13, 0, 15 ], Ref: 32 }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Ref: 33 }, False: { Sub: 19 } } }
+          - { File: 0, dLoc: [ 1, 12, 1, 16 ], Ref: 22 }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Ref: 22 }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Ref: 34 }, False: { Sub: 20 } } }
+          - { File: 0, dLoc: [ 1, 13, 0, 15 ], Ref: 34 }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Ref: 35 }, False: { Sub: 21 } } }
           - { File: 0, dLoc: [ 1, 12, 1, 16 ], Ref: 21 }
           - { File: 0, dLoc: [ 0, 13, 0, 15 ], Ref: 21 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Ref: 41 }, False: { Sub: 22 } } }
-          - { File: 0, dLoc: [ 1, 13, 0, 15 ], Ref: 41 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Ref: 42 }, False: { Sub: 23 } } }
-          - { File: 0, dLoc: [ 2, 12, 1, 16 ], Ref: 0 }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Ref: 36 }, False: { Sub: 22 } } }
+          - { File: 0, dLoc: [ 1, 13, 0, 15 ], Ref: 36 }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Ref: 37 }, False: { Sub: 23 } } }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 12, 1, 16 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 12, 3, 16 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 12, 5, 16 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 12, 7, 16 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 12, 9, 16 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 13, 0, 15 ], Ref: 0 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Sub: 24 }, False: { Ref: 53 } } }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Sub: 24 }, False: { Ref: 43 } } }
+          - { File: 0, dLoc: [ 1, 13, 0, 15 ], Ref: 43 }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Sub: 25 }, False: { Ref: 44 } } }
+          - { File: 0, dLoc: [ 1, 12, 1, 16 ], Ref: 42 }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Ref: 42 }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Sub: 26 }, False: { Ref: 45 } } }
+          - { File: 0, dLoc: [ 1, 13, 0, 15 ], Ref: 45 }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Sub: 27 }, False: { Ref: 46 } } }
+          - { File: 0, dLoc: [ 1, 12, 1, 16 ], Ref: 41 }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Ref: 41 }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Sub: 28 }, False: { Ref: 47 } } }
+          - { File: 0, dLoc: [ 1, 13, 0, 15 ], Ref: 47 }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Sub: 29 }, False: { Ref: 48 } } }
+          - { File: 0, dLoc: [ 1, 12, 1, 16 ], Ref: 40 }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Ref: 40 }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Sub: 30 }, False: { Ref: 49 } } }
+          - { File: 0, dLoc: [ 1, 13, 0, 15 ], Ref: 49 }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Sub: 31 }, False: { Ref: 50 } } }
+          - { File: 0, dLoc: [ 1, 12, 1, 16 ], Ref: 39 }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Ref: 39 }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Sub: 32 }, False: { Ref: 51 } } }
+          - { File: 0, dLoc: [ 1, 13, 0, 15 ], Ref: 51 }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Sub: 33 }, False: { Ref: 52 } } }
+          - { File: 0, dLoc: [ 1, 12, 1, 16 ], Ref: 38 }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Ref: 38 }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Sub: 34 }, False: { Ref: 53 } } }
           - { File: 0, dLoc: [ 1, 13, 0, 15 ], Ref: 53 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Sub: 25 }, False: { Ref: 54 } } }
-          - { File: 0, dLoc: [ 1, 12, 1, 16 ], Ref: 51 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Ref: 51 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Sub: 26 }, False: { Ref: 55 } } }
-          - { File: 0, dLoc: [ 1, 13, 0, 15 ], Ref: 55 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Sub: 27 }, False: { Ref: 56 } } }
-          - { File: 0, dLoc: [ 1, 12, 1, 16 ], Ref: 49 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Ref: 49 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Sub: 28 }, False: { Ref: 57 } } }
-          - { File: 0, dLoc: [ 1, 13, 0, 15 ], Ref: 57 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Sub: 29 }, False: { Ref: 58 } } }
-          - { File: 0, dLoc: [ 1, 12, 1, 16 ], Ref: 47 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Ref: 47 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Sub: 30 }, False: { Ref: 59 } } }
-          - { File: 0, dLoc: [ 1, 13, 0, 15 ], Ref: 59 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Sub: 31 }, False: { Ref: 60 } } }
-          - { File: 0, dLoc: [ 1, 12, 1, 16 ], Ref: 45 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Ref: 45 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Sub: 32 }, False: { Ref: 61 } } }
-          - { File: 0, dLoc: [ 1, 13, 0, 15 ], Ref: 61 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Sub: 33 }, False: { Ref: 62 } } }
-          - { File: 0, dLoc: [ 1, 12, 1, 16 ], Ref: 43 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Ref: 43 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Sub: 34 }, False: { Ref: 63 } } }
-          - { File: 0, dLoc: [ 1, 13, 0, 15 ], Ref: 63 }
-          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Sub: 35 }, False: { Ref: 64 } } }
-          - { File: 0, dLoc: [ 2, 7, 0, 8 ], Ref: 0 }
-          - { File: 0, dLoc: [ 0, 7, 0, 8 ], Branch: { True: { Ref: 65 }, False: { Sub: 38 } } }
-          - { File: 0, dLoc: [ 0, 9, 1, 5 ], isGap: true, Ref: 65 }
-          - { File: 0, dLoc: [ 1, 5, 0, 22 ], Ref: 65 }
+          - { File: 0, dLoc: [ 0, 13, 0, 15 ], Branch: { True: { Sub: 35 }, False: { Ref: 54 } } }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 7, 0, 8 ], Ref: 0 }
+          - { File: 0, dLoc: [ 0, 7, 0, 8 ], Branch: { True: { Ref: 55 }, False: { Sub: 38 } } }
+          - { File: 0, dLoc: [ 0, 9, 1, 5 ], isGap: true, Ref: 55 }
+          - { File: 0, dLoc: [ 1, 5, 0, 22 ], Ref: 55 }
           - { File: 0, dLoc: [ 0, 23, 2, 5 ], isGap: true, Sub: 38 }
           - { File: 0, dLoc: [ 2, 5, 0, 22 ], Sub: 38 }
-          - { File: 0, dLoc: [ 2, 7, 0, 8 ], Ref: 0 }
-          - { File: 0, dLoc: [ 0, 7, 0, 8 ], Branch: { True: { Ref: 66 }, False: { Sub: 41 } } }
-          - { File: 0, dLoc: [ 0, 9, 1, 5 ], isGap: true, Ref: 66 }
-          - { File: 0, dLoc: [ 1, 5, 0, 22 ], Ref: 66 }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 7, 0, 8 ], Ref: 0 }
+          - { File: 0, dLoc: [ 0, 7, 0, 8 ], Branch: { True: { Ref: 56 }, False: { Sub: 41 } } }
+          - { File: 0, dLoc: [ 0, 9, 1, 5 ], isGap: true, Ref: 56 }
+          - { File: 0, dLoc: [ 1, 5, 0, 22 ], Ref: 56 }
           - { File: 0, dLoc: [ 0, 23, 2, 5 ], isGap: true, Sub: 41 }
           - { File: 0, dLoc: [ 2, 5, 0, 22 ], Sub: 41 }
-          - { File: 0, dLoc: [ 2, 7, 0, 8 ], Ref: 0 }
-          - { File: 0, dLoc: [ 0, 7, 0, 8 ], Branch: { True: { Ref: 67 }, False: { Sub: 44 } } }
-          - { File: 0, dLoc: [ 0, 9, 1, 5 ], isGap: true, Ref: 67 }
-          - { File: 0, dLoc: [ 1, 5, 0, 22 ], Ref: 67 }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 7, 0, 8 ], Ref: 0 }
+          - { File: 0, dLoc: [ 0, 7, 0, 8 ], Branch: { True: { Ref: 57 }, False: { Sub: 44 } } }
+          - { File: 0, dLoc: [ 0, 9, 1, 5 ], isGap: true, Ref: 57 }
+          - { File: 0, dLoc: [ 1, 5, 0, 22 ], Ref: 57 }
           - { File: 0, dLoc: [ 0, 23, 2, 5 ], isGap: true, Sub: 44 }
           - { File: 0, dLoc: [ 2, 5, 0, 22 ], Sub: 44 }
-          - { File: 0, dLoc: [ 2, 7, 0, 8 ], Ref: 0 }
-          - { File: 0, dLoc: [ 0, 7, 0, 8 ], Branch: { True: { Ref: 68 }, False: { Sub: 47 } } }
-          - { File: 0, dLoc: [ 0, 9, 1, 5 ], isGap: true, Ref: 68 }
-          - { File: 0, dLoc: [ 1, 5, 0, 22 ], Ref: 68 }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 7, 0, 8 ], Ref: 0 }
+          - { File: 0, dLoc: [ 0, 7, 0, 8 ], Branch: { True: { Ref: 58 }, False: { Sub: 47 } } }
+          - { File: 0, dLoc: [ 0, 9, 1, 5 ], isGap: true, Ref: 58 }
+          - { File: 0, dLoc: [ 1, 5, 0, 22 ], Ref: 58 }
           - { File: 0, dLoc: [ 0, 23, 2, 5 ], isGap: true, Sub: 47 }
           - { File: 0, dLoc: [ 2, 5, 0, 22 ], Sub: 47 }
   - Name:            '__llvm_covfun (1)'
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_GNU_RETAIN ]
     AddressAlign:    0x8
     CovFun:
       - FuncName:        main
         Signature:       0x18
-        FilenamesRef:    0x433778095298742
+        FilenamesRef:    0xE846BD6FE050298F
         Filenames:
-          - '/tmp/branch-logical-mixed.cpp'
+          - branch-logical-mixed.cpp
         Expressions:     []
         Records:
           - { File: 0, dLoc: [ 79, 1, 4, 2 ], Ref: 0 }
   - Name:            __llvm_covmap
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_GNU_RETAIN ]
     AddressAlign:    0x8
     CovMap:
-      - Version:         3
-        FnBlobHash:      0x433778095298742
+      - Version:         6
+        FnBlobHash:      0xE846BD6FE050298F
         Filenames:
-          - '/tmp/branch-logical-mixed.cpp'
+          - branch-logical-mixed.cpp
   - Name:            __llvm_prf_names
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_GNU_RETAIN ]
     AddressAlign:    0x1
     PrfNames:
       - Names:
@@ -227,6 +239,9 @@ Sections:
       - Name:            __llvm_prf_names
       - Name:            .symtab
 Symbols:
+  - Name:            __llvm_covmap
+    Type:            STT_SECTION
+    Section:         __llvm_covmap
   - Name:            __llvm_prf_names
     Type:            STT_SECTION
     Section:         __llvm_prf_names
@@ -234,7 +249,7 @@ Symbols:
     Type:            STT_OBJECT
     Section:         __llvm_covfun
     Binding:         STB_WEAK
-    Size:            0x3DC
+    Size:            0x3F7
     Other:           [ STV_HIDDEN ]
   - Name:            __covrec_DB956436E78DD5FAu
     Type:            STT_OBJECT
diff --git a/llvm/test/tools/llvm-cov/Inputs/branch-macros.cpp b/llvm/test/tools/llvm-cov/Inputs/branch-macros.cpp
index 712b2790f774aab..bea4a7ec88f3cd0 100644
--- a/llvm/test/tools/llvm-cov/Inputs/branch-macros.cpp
+++ b/llvm/test/tools/llvm-cov/Inputs/branch-macros.cpp
@@ -42,11 +42,11 @@ bool func2(int a, int b) {
   return h;
 }
 
-extern "C" { extern void __llvm_profile_write_file(void); }
+
 int main(int argc, char *argv[])
 {
   func(atoi(argv[1]), atoi(argv[2]));
   func2(atoi(argv[1]), atoi(argv[2]));
-  __llvm_profile_write_file();
+  (void)0;
   return 0;
 }
diff --git a/llvm/test/tools/llvm-cov/Inputs/branch-macros.proftext b/llvm/test/tools/llvm-cov/Inputs/branch-macros.proftext
index 3b42e4121c94b07..08763fb0d007014 100644
--- a/llvm/test/tools/llvm-cov/Inputs/branch-macros.proftext
+++ b/llvm/test/tools/llvm-cov/Inputs/branch-macros.proftext
@@ -1,6 +1,6 @@
 _Z4funcii
 # Func Hash:
-2263559805428111017
+456046650042366162
 # Num Counters:
 19
 # Counter Values:
@@ -26,7 +26,7 @@ _Z4funcii
 
 _Z5func2ii
 # Func Hash:
-5552544297182115648
+14151920320560143107
 # Num Counters:
 8
 # Counter Values:
diff --git a/llvm/test/tools/llvm-cov/Inputs/branch-macros.yaml b/llvm/test/tools/llvm-cov/Inputs/branch-macros.yaml
index bc6275196767f24..b26129b217431fc 100644
--- a/llvm/test/tools/llvm-cov/Inputs/branch-macros.yaml
+++ b/llvm/test/tools/llvm-cov/Inputs/branch-macros.yaml
@@ -1,41 +1,42 @@
 --- !ELF
 FileHeader:
-  Class:           ELFCLASS32
+  Class:           ELFCLASS64
   Data:            ELFDATA2LSB
+  OSABI:           ELFOSABI_GNU
   Type:            ET_REL
-  Machine:         EM_ARM
-  Flags:           [ EF_ARM_EABI_VER5 ]
+  Machine:         EM_X86_64
   SectionHeaderStringTable: .strtab
 Sections:
-  - Name:            '__llvm_covfun (1)'
+  - Name:            __llvm_covfun
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_GNU_RETAIN ]
     AddressAlign:    0x8
     CovFun:
       - FuncName:        _Z4funcii
-        Signature:       0x1F69C7A6726516A9
-        FilenamesRef:    0x6606FE403140CB5C
+        Signature:       0x654340310C838D2
+        FilenamesRef:    0x5D8FCE3E3196E693
         Filenames:
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
         Expressions:
           - [ { Ref: 0 }, { Ref: 17 } ]
           - [ { Ref: 17 }, { Ref: 18 } ]
@@ -56,11 +57,16 @@ Sections:
           - { File: 0, dLoc: [ 16, 25, 17, 2 ], Ref: 0 }
           - { File: 0, dLoc: [ 1, 12, 0, 17 ], Expansion: 1 }
           - { File: 0, dLoc: [ 0, 21, 0, 26 ], Expansion: 2 }
-          - { File: 0, dLoc: [ 2, 12, 0, 17 ], Expansion: 3 }
-          - { File: 0, dLoc: [ 2, 12, 0, 18 ], Expansion: 4 }
-          - { File: 0, dLoc: [ 2, 12, 0, 18 ], Expansion: 5 }
-          - { File: 0, dLoc: [ 2, 12, 0, 18 ], Expansion: 6 }
-          - { File: 0, dLoc: [ 2, 10, 0, 11 ], Ref: 0 }
+          - { File: 0, dLoc: [ 1, 1, 0, 92 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 12, 0, 17 ], Expansion: 3 }
+          - { File: 0, dLoc: [ 1, 1, 0, 98 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 12, 0, 18 ], Expansion: 4 }
+          - { File: 0, dLoc: [ 1, 1, 0, 104 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 12, 0, 18 ], Expansion: 5 }
+          - { File: 0, dLoc: [ 1, 1, 0, 110 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 12, 0, 18 ], Expansion: 6 }
+          - { File: 0, dLoc: [ 1, 1, 0, 116 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 10, 0, 11 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 10, 0, 16 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 10, 0, 21 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 10, 0, 26 ], Ref: 0 }
@@ -73,6 +79,7 @@ Sections:
           - { File: 0, dLoc: [ 0, 25, 0, 26 ], Branch: { True: { Ref: 14 }, False: { Sub: 3 } } }
           - { File: 0, dLoc: [ 0, 30, 0, 31 ], Ref: 11 }
           - { File: 0, dLoc: [ 0, 30, 0, 31 ], Branch: { True: { Ref: 12 }, False: { Sub: 4 } } }
+          - { File: 0, dLoc: [ 1, 1, 4, 85 ], Skip: {  } }
           - { File: 1, dLoc: [ 5, 15, 0, 23 ], Ref: 0 }
           - { File: 1, dLoc: [ 0, 15, 0, 23 ], Ref: 0 }
           - { File: 1, dLoc: [ 0, 15, 0, 23 ], Branch: { True: { Ref: 1 }, False: { Sub: 5 } } }
@@ -116,27 +123,28 @@ Sections:
           - { File: 19, dLoc: [ 0, 15, 0, 23 ], Branch: { True: { Ref: 9 }, False: { Sub: 13 } } }
           - { File: 20, dLoc: [ 6, 15, 0, 23 ], Ref: 9 }
           - { File: 20, dLoc: [ 0, 15, 0, 23 ], Branch: { True: { Ref: 10 }, False: { Sub: 14 } } }
-  - Name:            __llvm_covfun
+  - Name:            '__llvm_covfun (1)'
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_GNU_RETAIN ]
     AddressAlign:    0x8
     CovFun:
       - FuncName:        _Z5func2ii
-        Signature:       0x4D0E999EA1293740
-        FilenamesRef:    0x6606FE403140CB5C
+        Signature:       0xC465B88D2C9E9B03
+        FilenamesRef:    0x5D8FCE3E3196E693
         Filenames:
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
-          - '/tmp/branch-macros.cpp'
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
+          - branch-macros.cpp
         Expressions:
           - [ { Ref: 1 }, { Ref: 2 } ]
           - [ { Ref: 1 }, { Ref: 5 } ]
@@ -148,6 +156,7 @@ Sections:
           - { File: 0, dLoc: [ 36, 26, 7, 2 ], Ref: 0 }
           - { File: 0, dLoc: [ 1, 14, 0, 20 ], Expansion: 1 }
           - { File: 0, dLoc: [ 0, 24, 0, 29 ], Expansion: 2 }
+          - { File: 0, dLoc: [ 1, 1, 3, 96 ], Skip: {  } }
           - { File: 1, dLoc: [ 11, 16, 0, 22 ], Expansion: 3 }
           - { File: 2, dLoc: [ 8, 15, 0, 38 ], Ref: 1 }
           - { File: 2, dLoc: [ 0, 15, 0, 38 ], Branch: { True: { Sub: 0 }, False: { Ref: 2 } } }
@@ -177,26 +186,29 @@ Sections:
           - { File: 12, dLoc: [ 0, 15, 0, 23 ], Branch: { True: { Ref: 4 }, False: { Sub: 5 } } }
   - Name:            '__llvm_covfun (2)'
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_GNU_RETAIN ]
     AddressAlign:    0x8
     CovFun:
       - FuncName:        main
         Signature:       0x18
-        FilenamesRef:    0x6606FE403140CB5C
+        FilenamesRef:    0x5D8FCE3E3196E693
         Filenames:
-          - '/tmp/branch-macros.cpp'
+          - branch-macros.cpp
         Expressions:     []
         Records:
           - { File: 0, dLoc: [ 47, 1, 5, 2 ], Ref: 0 }
   - Name:            __llvm_covmap
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_GNU_RETAIN ]
     AddressAlign:    0x8
     CovMap:
-      - Version:         3
-        FnBlobHash:      0x6606FE403140CB5C
+      - Version:         6
+        FnBlobHash:      0x5D8FCE3E3196E693
         Filenames:
-          - '/tmp/branch-macros.cpp'
+          - branch-macros.cpp
   - Name:            __llvm_prf_names
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_GNU_RETAIN ]
     AddressAlign:    0x1
     PrfNames:
       - Names:
@@ -206,27 +218,30 @@ Sections:
   - Type:            SectionHeaderTable
     Sections:
       - Name:            .strtab
-      - Name:            '__llvm_covfun (1)'
       - Name:            __llvm_covfun
+      - Name:            '__llvm_covfun (1)'
       - Name:            '__llvm_covfun (2)'
       - Name:            __llvm_covmap
       - Name:            __llvm_prf_names
       - Name:            .symtab
 Symbols:
+  - Name:            __llvm_covmap
+    Type:            STT_SECTION
+    Section:         __llvm_covmap
   - Name:            __llvm_prf_names
     Type:            STT_SECTION
     Section:         __llvm_prf_names
-  - Name:            __covrec_956373C63F981DB0u
+  - Name:            __covrec_B30B5C302CEDA0F0u
     Type:            STT_OBJECT
     Section:         __llvm_covfun
     Binding:         STB_WEAK
-    Size:            0xE4
+    Size:            0x1E2
     Other:           [ STV_HIDDEN ]
-  - Name:            __covrec_B30B5C302CEDA0F0u
+  - Name:            __covrec_956373C63F981DB0u
     Type:            STT_OBJECT
     Section:         '__llvm_covfun (1)'
     Binding:         STB_WEAK
-    Size:            0x1C4
+    Size:            0xE9
     Other:           [ STV_HIDDEN ]
   - Name:            __covrec_DB956436E78DD5FAu
     Type:            STT_OBJECT
diff --git a/llvm/test/tools/llvm-cov/Inputs/branch-showBranchPercentage.c b/llvm/test/tools/llvm-cov/Inputs/branch-showBranchPercentage.c
index c41739ff0b22f15..f2d6e4ad31e0b6d 100644
--- a/llvm/test/tools/llvm-cov/Inputs/branch-showBranchPercentage.c
+++ b/llvm/test/tools/llvm-cov/Inputs/branch-showBranchPercentage.c
@@ -13,7 +13,7 @@ int main(int argc, char *argv[])
   int i = 0;
   if (argc < 3)                       // CHECK: Branch ([[@LINE]]:7): [True: 16.67%, False: 83.33%]
   {
-    __llvm_profile_write_file();
+    (void)0;
     return 0;
   }
 
@@ -38,13 +38,13 @@ int main(int argc, char *argv[])
 
   switch (a)
   {
-    case 0:                           // CHECK: Branch ([[@LINE]]:5): [True: 20.00%, False: 80.00%]
+    case 0:                           // CHECK: Branch ([[@LINE]]:5): [True: 100.00%, Folded]
       printf("case0\n");
-    case 2:                           // CHECK: Branch ([[@LINE]]:5): [True: 20.00%, False: 80.00%]
+    case 2:                           // CHECK: Branch ([[@LINE]]:5): [True: 100.00%, Folded]
       printf("case2\n");
-    case 3:                           // CHECK: Branch ([[@LINE]]:5): [True: 0.00%, False: 100.00%]
+    case 3:                           // CHECK: Branch ([[@LINE]]:5): [True: 0.00%, Folded]
       printf("case3\n");
-    default: break;                   // CHECK: Branch ([[@LINE]]:5): [True: 60.00%, False: 40.00%]
+    default: break;                   // CHECK: Branch ([[@LINE]]:5): [True: 100.00%, Folded]
   }
 
   i = 0;
@@ -52,7 +52,7 @@ int main(int argc, char *argv[])
     printf("loop\n");
   } while (i++ < 10);                 // CHECK: Branch ([[@LINE]]:12): [True: 90.91%, False: 9.09%]
 
-  __llvm_profile_write_file();
+  (void)b;
 
-  return b;
+  return 0;
 }
diff --git a/llvm/test/tools/llvm-cov/Inputs/branch-showBranchPercentage.proftext b/llvm/test/tools/llvm-cov/Inputs/branch-showBranchPercentage.proftext
index 9bb07479e863e83..18c3743f16f6d61 100644
--- a/llvm/test/tools/llvm-cov/Inputs/branch-showBranchPercentage.proftext
+++ b/llvm/test/tools/llvm-cov/Inputs/branch-showBranchPercentage.proftext
@@ -1,6 +1,6 @@
 main
 # Func Hash:
-3890582504168513655
+947882199001105187
 # Num Counters:
 21
 # Counter Values:
diff --git a/llvm/test/tools/llvm-cov/Inputs/branch-showBranchPercentage.yaml b/llvm/test/tools/llvm-cov/Inputs/branch-showBranchPercentage.yaml
index b038df7a17cb0ad..232d1ee3c77bb7d 100644
--- a/llvm/test/tools/llvm-cov/Inputs/branch-showBranchPercentage.yaml
+++ b/llvm/test/tools/llvm-cov/Inputs/branch-showBranchPercentage.yaml
@@ -1,21 +1,22 @@
 --- !ELF
 FileHeader:
-  Class:           ELFCLASS32
+  Class:           ELFCLASS64
   Data:            ELFDATA2LSB
+  OSABI:           ELFOSABI_GNU
   Type:            ET_REL
-  Machine:         EM_ARM
-  Flags:           [ EF_ARM_EABI_VER5 ]
+  Machine:         EM_X86_64
   SectionHeaderStringTable: .strtab
 Sections:
   - Name:            __llvm_covfun
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_GNU_RETAIN ]
     AddressAlign:    0x8
     CovFun:
       - FuncName:        main
-        Signature:       0x35FE202CA2506077
-        FilenamesRef:    0x520437DDBB69AFCD
+        Signature:       0xD278DD680608323
+        FilenamesRef:    0xBE97BD4135C71D17
         Filenames:
-          - '/tmp/branch-showBranchPercentage.c'
+          - branch-showBranchPercentage.c
         Expressions:
           - [ { Ref: 0 }, { Ref: 1 } ]
           - [ { Sub: 0 }, { Ref: 7 } ]
@@ -29,19 +30,11 @@ Sections:
           - [ { Ref: 12 }, { Ref: 13 } ]
           - [ { Add: 11 }, { Ref: 1 } ]
           - [ { Ref: 0 }, { Ref: 14 } ]
-          - [ { Add: 13 }, { Ref: 19 } ]
-          - [ { Ref: 17 }, { Ref: 18 } ]
           - [ { Ref: 16 }, { Ref: 17 } ]
-          - [ { Add: 16 }, { Ref: 19 } ]
-          - [ { Ref: 16 }, { Ref: 18 } ]
-          - [ { Add: 25 }, { Ref: 18 } ]
-          - [ { Ref: 16 }, { Ref: 17 } ]
-          - [ { Add: 25 }, { Ref: 19 } ]
+          - [ { Add: 17 }, { Ref: 18 } ]
           - [ { Ref: 16 }, { Ref: 17 } ]
-          - [ { Add: 24 }, { Ref: 19 } ]
-          - [ { Add: 25 }, { Ref: 18 } ]
-          - [ { Ref: 16 }, { Ref: 17 } ]
-          - [ { Add: 25 }, { Ref: 18 } ]
+          - [ { Add: 16 }, { Ref: 19 } ]
+          - [ { Add: 17 }, { Ref: 18 } ]
           - [ { Ref: 16 }, { Ref: 17 } ]
           - [ { Ref: 15 }, { Ref: 20 } ]
           - [ { Ref: 15 }, { Ref: 20 } ]
@@ -52,8 +45,10 @@ Sections:
           - { File: 0, dLoc: [ 0, 16, 1, 3 ], isGap: true, Ref: 1 }
           - { File: 0, dLoc: [ 1, 3, 3, 4 ], Ref: 1 }
           - { File: 0, dLoc: [ 3, 4, 2, 3 ], isGap: true, Sub: 0 }
-          - { File: 0, dLoc: [ 2, 3, 38, 2 ], Sub: 0 }
-          - { File: 0, dLoc: [ 7, 7, 0, 25 ], Sub: 0 }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 3, 38, 2 ], Sub: 0 }
+          - { File: 0, dLoc: [ 2, 1, 4, 103 ], Skip: {  } }
+          - { File: 0, dLoc: [ 5, 7, 0, 25 ], Sub: 0 }
           - { File: 0, dLoc: [ 0, 7, 0, 36 ], Sub: 0 }
           - { File: 0, dLoc: [ 0, 7, 0, 46 ], Sub: 0 }
           - { File: 0, dLoc: [ 0, 8, 0, 14 ], Sub: 0 }
@@ -66,46 +61,57 @@ Sections:
           - { File: 0, dLoc: [ 0, 40, 0, 46 ], Branch: { True: { Sub: 4 }, False: { Ref: 4 } } }
           - { File: 0, dLoc: [ 0, 47, 1, 5 ], isGap: true, Ref: 2 }
           - { File: 0, dLoc: [ 1, 5, 0, 22 ], Ref: 2 }
-          - { File: 0, dLoc: [ 2, 8, 0, 14 ], Sub: 0 }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 7, 0, 25 ], Sub: 0 }
+          - { File: 0, dLoc: [ 0, 8, 0, 14 ], Sub: 0 }
           - { File: 0, dLoc: [ 0, 8, 0, 14 ], Branch: { True: { Sub: 5 }, False: { Ref: 10 } } }
           - { File: 0, dLoc: [ 0, 18, 0, 24 ], Ref: 10 }
           - { File: 0, dLoc: [ 0, 18, 0, 24 ], Branch: { True: { Sub: 6 }, False: { Ref: 11 } } }
-          - { File: 0, dLoc: [ 0, 26, 0, 28 ], isGap: true, Ref: 9 }
+          - { File: 0, dLoc: [ 0, 27, 0, 28 ], isGap: true, Ref: 9 }
           - { File: 0, dLoc: [ 0, 28, 0, 29 ], Ref: 9 }
           - { File: 0, dLoc: [ 0, 32, 0, 35 ], Sub: 7 }
-          - { File: 0, dLoc: [ 2, 8, 0, 14 ], Sub: 0 }
+          - { File: 0, dLoc: [ 1, 1, 0, 103 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 8, 0, 14 ], Sub: 0 }
           - { File: 0, dLoc: [ 0, 8, 0, 14 ], Branch: { True: { Ref: 12 }, False: { Sub: 8 } } }
           - { File: 0, dLoc: [ 0, 18, 0, 24 ], Ref: 12 }
           - { File: 0, dLoc: [ 0, 18, 0, 24 ], Branch: { True: { Ref: 13 }, False: { Sub: 9 } } }
-          - { File: 0, dLoc: [ 2, 15, 0, 20 ], Sub: 10 }
+          - { File: 0, dLoc: [ 1, 1, 0, 103 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 15, 0, 20 ], Sub: 10 }
           - { File: 0, dLoc: [ 0, 15, 0, 20 ], Branch: { True: { Ref: 14 }, False: { Sub: 0 } } }
           - { File: 0, dLoc: [ 0, 22, 0, 25 ], Ref: 14 }
           - { File: 0, dLoc: [ 0, 26, 0, 27 ], isGap: true, Ref: 14 }
           - { File: 0, dLoc: [ 0, 27, 0, 45 ], Ref: 14 }
-          - { File: 0, dLoc: [ 6, 3, 7, 19 ], isGap: true, Zero: {  } }
+          - { File: 0, dLoc: [ 1, 1, 1, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 3, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 2, 3, 7, 19 ], isGap: true, Zero: {  } }
           - { File: 0, dLoc: [ 1, 5, 6, 19 ], Ref: 16 }
-          - { File: 0, dLoc: [ 0, 5, 0, 11 ], Branch: { True: { Ref: 16 }, False: { Add: 12 } } }
-          - { File: 0, dLoc: [ 2, 5, 4, 19 ], Add: 25 }
-          - { File: 0, dLoc: [ 0, 5, 0, 11 ], Branch: { True: { Ref: 17 }, False: { Add: 15 } } }
-          - { File: 0, dLoc: [ 2, 5, 2, 19 ], Add: 24 }
-          - { File: 0, dLoc: [ 0, 5, 0, 11 ], Branch: { True: { Ref: 18 }, False: { Add: 19 } } }
-          - { File: 0, dLoc: [ 2, 5, 0, 19 ], Add: 21 }
-          - { File: 0, dLoc: [ 0, 5, 0, 12 ], Branch: { True: { Ref: 19 }, False: { Add: 24 } } }
-          - { File: 0, dLoc: [ 0, 19, 3, 3 ], isGap: true, Ref: 15 }
-          - { File: 0, dLoc: [ 3, 3, 8, 2 ], Ref: 15 }
-          - { File: 0, dLoc: [ 1, 6, 2, 4 ], Add: 27 }
-          - { File: 0, dLoc: [ 2, 12, 0, 20 ], Add: 27 }
+          - { File: 0, dLoc: [ 0, 5, 0, 11 ], Branch: { True: { Ref: 16 }, False: { Zero: {  } } } }
+          - { File: 0, dLoc: [ 2, 5, 4, 19 ], Add: 17 }
+          - { File: 0, dLoc: [ 0, 5, 0, 11 ], Branch: { True: { Ref: 17 }, False: { Zero: {  } } } }
+          - { File: 0, dLoc: [ 2, 5, 2, 19 ], Add: 16 }
+          - { File: 0, dLoc: [ 0, 5, 0, 11 ], Branch: { True: { Ref: 18 }, False: { Zero: {  } } } }
+          - { File: 0, dLoc: [ 2, 5, 0, 19 ], Add: 15 }
+          - { File: 0, dLoc: [ 0, 5, 0, 12 ], Branch: { True: { Ref: 19 }, False: { Zero: {  } } } }
+          - { File: 0, dLoc: [ 1, 4, 2, 3 ], isGap: true, Ref: 15 }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 1, 3, 7, 11 ], Ref: 15 }
+          - { File: 0, dLoc: [ 1, 6, 2, 4 ], Add: 19 }
+          - { File: 0, dLoc: [ 2, 12, 0, 20 ], Add: 19 }
           - { File: 0, dLoc: [ 0, 12, 0, 20 ], Branch: { True: { Ref: 20 }, False: { Ref: 15 } } }
+          - { File: 0, dLoc: [ 1, 1, 0, 1 ], Skip: {  } }
+          - { File: 0, dLoc: [ 2, 1, 0, 1 ], Skip: {  } }
   - Name:            __llvm_covmap
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_GNU_RETAIN ]
     AddressAlign:    0x8
     CovMap:
-      - Version:         3
-        FnBlobHash:      0x520437DDBB69AFCD
+      - Version:         6
+        FnBlobHash:      0xBE97BD4135C71D17
         Filenames:
-          - '/tmp/branch-showBranchPercentage.c'
+          - branch-showBranchPercentage.c
   - Name:            __llvm_prf_names
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_GNU_RETAIN ]
     AddressAlign:    0x1
     PrfNames:
       - Names:
@@ -118,6 +124,9 @@ Sections:
       - Name:            __llvm_prf_names
       - Name:            .symtab
 Symbols:
+  - Name:            __llvm_covmap
+    Type:            STT_SECTION
+    Section:         __llvm_covmap
   - Name:            __llvm_prf_names
     Type:            STT_SECTION
     Section:         __llvm_prf_names
@@ -125,6 +134,6 @@ Symbols:
     Type:            STT_OBJECT
     Section:         __llvm_covfun
     Binding:         STB_WEAK
-    Size:            0x18C
+    Size:            0x1B3
     Other:           [ STV_HIDDEN ]
 ...
diff --git a/llvm/test/tools/llvm-cov/Inputs/branch-templates.cpp b/llvm/test/tools/llvm-cov/Inputs/branch-templates.cpp
index 0795a5346380de8..597e596ae84d5cb 100644
--- a/llvm/test/tools/llvm-cov/Inputs/branch-templates.cpp
+++ b/llvm/test/tools/llvm-cov/Inputs/branch-templates.cpp
@@ -25,7 +25,7 @@ int func(T x) {
               // CHECK-LABEL: _Z4funcIfEiT_:
               // CHECK: |  |  Branch ([[@LINE-12]]:6): [True: 0, False: 1]
 
-extern "C" { extern void __llvm_profile_write_file(void); }
+
 int main() {
   if (func<int>(0))      // CHECK: |  Branch ([[@LINE]]:7): [True: 1, False: 0]
     printf("case1\n");
@@ -33,6 +33,6 @@ int main() {
     printf("case2\n");
   if (func<float>(0.0))  // CHECK: |  Branch ([[@LINE]]:7): [True: 1, False: 0]
     printf("case3\n");
-  __llvm_profile_write_file();
+  (void)0;
   return 0;
 }
diff --git a/llvm/test/tools/llvm-cov/Inputs/branch-templates.yaml b/llvm/test/tools/llvm-cov/Inputs/branch-templates.yaml
index c0a89e96e567567..d9afe69bb8a2b20 100644
--- a/llvm/test/tools/llvm-cov/Inputs/branch-templates.yaml
+++ b/llvm/test/tools/llvm-cov/Inputs/branch-templates.yaml
@@ -1,21 +1,22 @@
 --- !ELF
 FileHeader:
-  Class:           ELFCLASS32
+  Class:           ELFCLASS64
   Data:            ELFDATA2LSB
+  OSABI:           ELFOSABI_GNU
   Type:            ET_REL
-  Machine:         EM_ARM
-  Flags:           [ EF_ARM_EABI_VER5 ]
+  Machine:         EM_X86_64
   SectionHeaderStringTable: .strtab
 Sections:
-  - Name:            '__llvm_covfun (3)'
+  - Name:            __llvm_covfun
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_GNU_RETAIN ]
     AddressAlign:    0x8
     CovFun:
       - FuncName:        main
         Signature:       0x29244A491292458
-        FilenamesRef:    0xB8050C68267FC0DD
+        FilenamesRef:    0x6BBCABDA409AED26
         Filenames:
-          - '/tmp/branch-templates.cpp'
+          - branch-templates.cpp
         Expressions:
           - [ { Ref: 0 }, { Ref: 1 } ]
           - [ { Ref: 0 }, { Ref: 2 } ]
@@ -36,13 +37,14 @@ Sections:
           - { File: 0, dLoc: [ 1, 5, 0, 22 ], Ref: 3 }
   - Name:            '__llvm_covfun (1)'
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_GNU_RETAIN ]
     AddressAlign:    0x8
     CovFun:
       - FuncName:        _Z4funcIiEiT_
         Signature:       0x292613611
-        FilenamesRef:    0xB8050C68267FC0DD
+        FilenamesRef:    0x6BBCABDA409AED26
         Filenames:
-          - '/tmp/branch-templates.cpp'
+          - branch-templates.cpp
         Expressions:
           - [ { Ref: 0 }, { Ref: 1 } ]
         Records:
@@ -51,20 +53,20 @@ Sections:
           - { File: 0, dLoc: [ 0, 6, 0, 7 ], Branch: { True: { Ref: 1 }, False: { Sub: 0 } } }
           - { File: 0, dLoc: [ 0, 8, 1, 5 ], isGap: true, Ref: 1 }
           - { File: 0, dLoc: [ 1, 5, 0, 13 ], Ref: 1 }
-          - { File: 0, dLoc: [ 0, 13, 0, 14 ], isGap: true, Sub: 0 }
           - { File: 0, dLoc: [ 0, 14, 2, 5 ], isGap: true, Sub: 0 }
           - { File: 0, dLoc: [ 2, 5, 0, 13 ], Sub: 0 }
-          - { File: 0, dLoc: [ 0, 13, 1, 3 ], isGap: true, Zero: {  } }
+          - { File: 0, dLoc: [ 0, 14, 1, 3 ], isGap: true, Zero: {  } }
           - { File: 0, dLoc: [ 1, 3, 1, 2 ], Zero: {  } }
   - Name:            '__llvm_covfun (2)'
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_GNU_RETAIN ]
     AddressAlign:    0x8
     CovFun:
       - FuncName:        _Z4funcIbEiT_
         Signature:       0x292613611
-        FilenamesRef:    0xB8050C68267FC0DD
+        FilenamesRef:    0x6BBCABDA409AED26
         Filenames:
-          - '/tmp/branch-templates.cpp'
+          - branch-templates.cpp
         Expressions:
           - [ { Ref: 0 }, { Ref: 1 } ]
         Records:
@@ -73,20 +75,20 @@ Sections:
           - { File: 0, dLoc: [ 0, 6, 0, 7 ], Branch: { True: { Ref: 1 }, False: { Sub: 0 } } }
           - { File: 0, dLoc: [ 0, 8, 1, 5 ], isGap: true, Ref: 1 }
           - { File: 0, dLoc: [ 1, 5, 0, 13 ], Ref: 1 }
-          - { File: 0, dLoc: [ 0, 13, 0, 14 ], isGap: true, Sub: 0 }
           - { File: 0, dLoc: [ 0, 14, 2, 5 ], isGap: true, Sub: 0 }
           - { File: 0, dLoc: [ 2, 5, 0, 13 ], Sub: 0 }
-          - { File: 0, dLoc: [ 0, 13, 1, 3 ], isGap: true, Zero: {  } }
+          - { File: 0, dLoc: [ 0, 14, 1, 3 ], isGap: true, Zero: {  } }
           - { File: 0, dLoc: [ 1, 3, 1, 2 ], Zero: {  } }
-  - Name:            __llvm_covfun
+  - Name:            '__llvm_covfun (3)'
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_GNU_RETAIN ]
     AddressAlign:    0x8
     CovFun:
       - FuncName:        _Z4funcIfEiT_
         Signature:       0x292613611
-        FilenamesRef:    0xB8050C68267FC0DD
+        FilenamesRef:    0x6BBCABDA409AED26
         Filenames:
-          - '/tmp/branch-templates.cpp'
+          - branch-templates.cpp
         Expressions:
           - [ { Ref: 0 }, { Ref: 1 } ]
         Records:
@@ -95,21 +97,22 @@ Sections:
           - { File: 0, dLoc: [ 0, 6, 0, 7 ], Branch: { True: { Ref: 1 }, False: { Sub: 0 } } }
           - { File: 0, dLoc: [ 0, 8, 1, 5 ], isGap: true, Ref: 1 }
           - { File: 0, dLoc: [ 1, 5, 0, 13 ], Ref: 1 }
-          - { File: 0, dLoc: [ 0, 13, 0, 14 ], isGap: true, Sub: 0 }
           - { File: 0, dLoc: [ 0, 14, 2, 5 ], isGap: true, Sub: 0 }
           - { File: 0, dLoc: [ 2, 5, 0, 13 ], Sub: 0 }
-          - { File: 0, dLoc: [ 0, 13, 1, 3 ], isGap: true, Zero: {  } }
+          - { File: 0, dLoc: [ 0, 14, 1, 3 ], isGap: true, Zero: {  } }
           - { File: 0, dLoc: [ 1, 3, 1, 2 ], Zero: {  } }
   - Name:            __llvm_covmap
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_GNU_RETAIN ]
     AddressAlign:    0x8
     CovMap:
-      - Version:         3
-        FnBlobHash:      0xB8050C68267FC0DD
+      - Version:         6
+        FnBlobHash:      0x6BBCABDA409AED26
         Filenames:
-          - '/tmp/branch-templates.cpp'
+          - branch-templates.cpp
   - Name:            __llvm_prf_names
     Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_GNU_RETAIN ]
     AddressAlign:    0x1
     PrfNames:
       - Names:
@@ -120,39 +123,42 @@ Sections:
   - Type:            SectionHeaderTable
     Sections:
       - Name:            .strtab
-      - Name:            '__llvm_covfun (3)'
+      - Name:            __llvm_covfun
       - Name:            '__llvm_covfun (1)'
       - Name:            '__llvm_covfun (2)'
-      - Name:            __llvm_covfun
+      - Name:            '__llvm_covfun (3)'
       - Name:            __llvm_covmap
       - Name:            __llvm_prf_names
       - Name:            .symtab
 Symbols:
+  - Name:            __llvm_covmap
+    Type:            STT_SECTION
+    Section:         __llvm_covmap
   - Name:            __llvm_prf_names
     Type:            STT_SECTION
     Section:         __llvm_prf_names
-  - Name:            __covrec_1AE4A33DBC4014ACu
+  - Name:            __covrec_DB956436E78DD5FAu
     Type:            STT_OBJECT
     Section:         __llvm_covfun
     Binding:         STB_WEAK
-    Size:            0x66
+    Size:            0x79
     Other:           [ STV_HIDDEN ]
   - Name:            __covrec_3EE4E05972712754u
     Type:            STT_OBJECT
     Section:         '__llvm_covfun (1)'
     Binding:         STB_WEAK
-    Size:            0x66
+    Size:            0x5D
     Other:           [ STV_HIDDEN ]
   - Name:            __covrec_AA51052F08227E4Bu
     Type:            STT_OBJECT
     Section:         '__llvm_covfun (2)'
     Binding:         STB_WEAK
-    Size:            0x66
+    Size:            0x5D
     Other:           [ STV_HIDDEN ]
-  - Name:            __covrec_DB956436E78DD5FAu
+  - Name:            __covrec_1AE4A33DBC4014ACu
     Type:            STT_OBJECT
     Section:         '__llvm_covfun (3)'
     Binding:         STB_WEAK
-    Size:            0x79
+    Size:            0x5D
     Other:           [ STV_HIDDEN ]
 ...
diff --git a/llvm/test/tools/llvm-cov/Inputs/mcdc-const-folding.yaml b/llvm/test/tools/llvm-cov/Inputs/mcdc-const-folding.yaml
index 021b55ecc0996a8..5070950bdf12027 100644
--- a/llvm/test/tools/llvm-cov/Inputs/mcdc-const-folding.yaml
+++ b/llvm/test/tools/llvm-cov/Inputs/mcdc-const-folding.yaml
@@ -18,14 +18,15 @@ Sections:
         Filenames:
           - mcdc-const-folding.cpp
         Expressions:
+          - [ { Ref: 0 }, { Ref: 1 } ]
           - [ { Ref: 1 }, { Ref: 2 } ]
         Records:
           - { File: 0, dLoc: [ 3, 20, 2, 2 ], Ref: 0 }
           - { File: 0, dLoc: [ 1, 12, 0, 13 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 12, 0, 18 ], Decision: { BIdx: 3, NCond: 2 } }
-          - { File: 0, dLoc: [ 0, 12, 0, 13 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 1, 2, 0 ] } }
+          - { File: 0, dLoc: [ 0, 12, 0, 13 ], Branch: { True: { Zero: {  } }, False: { Sub: 0 }, MCDC: [ 1, 2, 0 ] } }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Ref: 1 }
-          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Ref: 2 }, False: { Sub: 0 }, MCDC: [ 2, 0, 0 ] } }
+          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Ref: 2 }, False: { Sub: 1 }, MCDC: [ 2, 0, 0 ] } }
   - Name:            '__llvm_covfun (1)'
     Type:            SHT_PROGBITS
     Flags:           [ SHF_GNU_RETAIN ]
@@ -38,13 +39,14 @@ Sections:
           - mcdc-const-folding.cpp
         Expressions:
           - [ { Ref: 0 }, { Ref: 1 } ]
+          - [ { Ref: 1 }, { Ref: 2 } ]
         Records:
           - { File: 0, dLoc: [ 6, 20, 2, 2 ], Ref: 0 }
           - { File: 0, dLoc: [ 1, 12, 0, 13 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 12, 0, 18 ], Decision: { BIdx: 3, NCond: 2 } }
           - { File: 0, dLoc: [ 0, 12, 0, 13 ], Branch: { True: { Ref: 1 }, False: { Sub: 0 }, MCDC: [ 1, 2, 0 ] } }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Ref: 1 }
-          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 2, 0, 0 ] } }
+          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Zero: {  } }, False: { Sub: 1 }, MCDC: [ 2, 0, 0 ] } }
   - Name:            '__llvm_covfun (2)'
     Type:            SHT_PROGBITS
     Flags:           [ SHF_GNU_RETAIN ]
@@ -61,7 +63,7 @@ Sections:
           - { File: 0, dLoc: [ 9, 20, 2, 2 ], Ref: 0 }
           - { File: 0, dLoc: [ 1, 12, 0, 13 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 12, 0, 18 ], Decision: { BIdx: 3, NCond: 2 } }
-          - { File: 0, dLoc: [ 0, 12, 0, 13 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 1, 2, 0 ] } }
+          - { File: 0, dLoc: [ 0, 12, 0, 13 ], Branch: { True: { Ref: 1 }, False: { Zero: {  } }, MCDC: [ 1, 2, 0 ] } }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Ref: 1 }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Ref: 2 }, False: { Sub: 0 }, MCDC: [ 2, 0, 0 ] } }
   - Name:            '__llvm_covfun (3)'
@@ -82,7 +84,7 @@ Sections:
           - { File: 0, dLoc: [ 0, 12, 0, 18 ], Decision: { BIdx: 3, NCond: 2 } }
           - { File: 0, dLoc: [ 0, 12, 0, 13 ], Branch: { True: { Ref: 1 }, False: { Sub: 0 }, MCDC: [ 1, 2, 0 ] } }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Ref: 1 }
-          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 2, 0, 0 ] } }
+          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Ref: 2 }, False: { Zero: {  } }, MCDC: [ 2, 0, 0 ] } }
   - Name:            '__llvm_covfun (4)'
     Type:            SHT_PROGBITS
     Flags:           [ SHF_GNU_RETAIN ]
@@ -94,14 +96,15 @@ Sections:
         Filenames:
           - mcdc-const-folding.cpp
         Expressions:
+          - [ { Ref: 0 }, { Ref: 1 } ]
           - [ { Ref: 1 }, { Ref: 2 } ]
         Records:
           - { File: 0, dLoc: [ 15, 20, 2, 2 ], Ref: 0 }
           - { File: 0, dLoc: [ 1, 12, 0, 13 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 12, 0, 18 ], Decision: { BIdx: 3, NCond: 2 } }
-          - { File: 0, dLoc: [ 0, 12, 0, 13 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 1, 0, 2 ] } }
+          - { File: 0, dLoc: [ 0, 12, 0, 13 ], Branch: { True: { Sub: 0 }, False: { Zero: {  } }, MCDC: [ 1, 0, 2 ] } }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Ref: 1 }
-          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Sub: 0 }, False: { Ref: 2 }, MCDC: [ 2, 0, 0 ] } }
+          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Sub: 1 }, False: { Ref: 2 }, MCDC: [ 2, 0, 0 ] } }
   - Name:            '__llvm_covfun (5)'
     Type:            SHT_PROGBITS
     Flags:           [ SHF_GNU_RETAIN ]
@@ -114,13 +117,14 @@ Sections:
           - mcdc-const-folding.cpp
         Expressions:
           - [ { Ref: 0 }, { Ref: 1 } ]
+          - [ { Ref: 1 }, { Ref: 2 } ]
         Records:
           - { File: 0, dLoc: [ 18, 20, 2, 2 ], Ref: 0 }
           - { File: 0, dLoc: [ 1, 12, 0, 13 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 12, 0, 18 ], Decision: { BIdx: 3, NCond: 2 } }
           - { File: 0, dLoc: [ 0, 12, 0, 13 ], Branch: { True: { Sub: 0 }, False: { Ref: 1 }, MCDC: [ 1, 0, 2 ] } }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Ref: 1 }
-          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 2, 0, 0 ] } }
+          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Sub: 1 }, False: { Zero: {  } }, MCDC: [ 2, 0, 0 ] } }
   - Name:            '__llvm_covfun (6)'
     Type:            SHT_PROGBITS
     Flags:           [ SHF_GNU_RETAIN ]
@@ -137,7 +141,7 @@ Sections:
           - { File: 0, dLoc: [ 21, 20, 2, 2 ], Ref: 0 }
           - { File: 0, dLoc: [ 1, 12, 0, 13 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 12, 0, 18 ], Decision: { BIdx: 3, NCond: 2 } }
-          - { File: 0, dLoc: [ 0, 12, 0, 13 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 1, 0, 2 ] } }
+          - { File: 0, dLoc: [ 0, 12, 0, 13 ], Branch: { True: { Zero: {  } }, False: { Ref: 1 }, MCDC: [ 1, 0, 2 ] } }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Ref: 1 }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Sub: 0 }, False: { Ref: 2 }, MCDC: [ 2, 0, 0 ] } }
   - Name:            '__llvm_covfun (7)'
@@ -158,7 +162,7 @@ Sections:
           - { File: 0, dLoc: [ 0, 12, 0, 18 ], Decision: { BIdx: 3, NCond: 2 } }
           - { File: 0, dLoc: [ 0, 12, 0, 13 ], Branch: { True: { Sub: 0 }, False: { Ref: 1 }, MCDC: [ 1, 0, 2 ] } }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Ref: 1 }
-          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 2, 0, 0 ] } }
+          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Zero: {  } }, False: { Ref: 2 }, MCDC: [ 2, 0, 0 ] } }
   - Name:            '__llvm_covfun (8)'
     Type:            SHT_PROGBITS
     Flags:           [ SHF_GNU_RETAIN ]
@@ -170,6 +174,7 @@ Sections:
         Filenames:
           - mcdc-const-folding.cpp
         Expressions:
+          - [ { Ref: 0 }, { Ref: 3 } ]
           - [ { Ref: 3 }, { Ref: 4 } ]
           - [ { Ref: 1 }, { Ref: 2 } ]
         Records:
@@ -177,11 +182,11 @@ Sections:
           - { File: 0, dLoc: [ 1, 12, 0, 13 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 12, 0, 18 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 12, 0, 23 ], Decision: { BIdx: 4, NCond: 3 } }
-          - { File: 0, dLoc: [ 0, 12, 0, 13 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 1, 3, 0 ] } }
+          - { File: 0, dLoc: [ 0, 12, 0, 13 ], Branch: { True: { Zero: {  } }, False: { Sub: 0 }, MCDC: [ 1, 3, 0 ] } }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Ref: 3 }
-          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Ref: 4 }, False: { Sub: 0 }, MCDC: [ 3, 2, 0 ] } }
+          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Ref: 4 }, False: { Sub: 1 }, MCDC: [ 3, 2, 0 ] } }
           - { File: 0, dLoc: [ 0, 22, 0, 23 ], Ref: 1 }
-          - { File: 0, dLoc: [ 0, 22, 0, 23 ], Branch: { True: { Ref: 2 }, False: { Sub: 1 }, MCDC: [ 2, 0, 0 ] } }
+          - { File: 0, dLoc: [ 0, 22, 0, 23 ], Branch: { True: { Ref: 2 }, False: { Sub: 2 }, MCDC: [ 2, 0, 0 ] } }
   - Name:            '__llvm_covfun (9)'
     Type:            SHT_PROGBITS
     Flags:           [ SHF_GNU_RETAIN ]
@@ -194,6 +199,7 @@ Sections:
           - mcdc-const-folding.cpp
         Expressions:
           - [ { Ref: 0 }, { Ref: 3 } ]
+          - [ { Ref: 3 }, { Ref: 4 } ]
           - [ { Ref: 1 }, { Ref: 2 } ]
         Records:
           - { File: 0, dLoc: [ 31, 28, 2, 2 ], Ref: 0 }
@@ -202,9 +208,9 @@ Sections:
           - { File: 0, dLoc: [ 0, 12, 0, 23 ], Decision: { BIdx: 4, NCond: 3 } }
           - { File: 0, dLoc: [ 0, 12, 0, 13 ], Branch: { True: { Ref: 3 }, False: { Sub: 0 }, MCDC: [ 1, 3, 0 ] } }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Ref: 3 }
-          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 3, 2, 0 ] } }
+          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Zero: {  } }, False: { Sub: 1 }, MCDC: [ 3, 2, 0 ] } }
           - { File: 0, dLoc: [ 0, 22, 0, 23 ], Ref: 1 }
-          - { File: 0, dLoc: [ 0, 22, 0, 23 ], Branch: { True: { Ref: 2 }, False: { Sub: 1 }, MCDC: [ 2, 0, 0 ] } }
+          - { File: 0, dLoc: [ 0, 22, 0, 23 ], Branch: { True: { Ref: 2 }, False: { Sub: 2 }, MCDC: [ 2, 0, 0 ] } }
   - Name:            '__llvm_covfun (10)'
     Type:            SHT_PROGBITS
     Flags:           [ SHF_GNU_RETAIN ]
@@ -223,7 +229,7 @@ Sections:
           - { File: 0, dLoc: [ 1, 12, 0, 13 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 12, 0, 18 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 12, 0, 23 ], Decision: { BIdx: 4, NCond: 3 } }
-          - { File: 0, dLoc: [ 0, 12, 0, 13 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 1, 3, 0 ] } }
+          - { File: 0, dLoc: [ 0, 12, 0, 13 ], Branch: { True: { Ref: 3 }, False: { Zero: {  } }, MCDC: [ 1, 3, 0 ] } }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Ref: 3 }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Ref: 4 }, False: { Sub: 0 }, MCDC: [ 3, 2, 0 ] } }
           - { File: 0, dLoc: [ 0, 22, 0, 23 ], Ref: 1 }
@@ -248,7 +254,7 @@ Sections:
           - { File: 0, dLoc: [ 0, 12, 0, 23 ], Decision: { BIdx: 4, NCond: 3 } }
           - { File: 0, dLoc: [ 0, 12, 0, 13 ], Branch: { True: { Ref: 3 }, False: { Sub: 0 }, MCDC: [ 1, 3, 0 ] } }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Ref: 3 }
-          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 3, 2, 0 ] } }
+          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Ref: 4 }, False: { Zero: {  } }, MCDC: [ 3, 2, 0 ] } }
           - { File: 0, dLoc: [ 0, 22, 0, 23 ], Ref: 1 }
           - { File: 0, dLoc: [ 0, 22, 0, 23 ], Branch: { True: { Ref: 2 }, False: { Sub: 1 }, MCDC: [ 2, 0, 0 ] } }
   - Name:            '__llvm_covfun (12)'
@@ -262,6 +268,7 @@ Sections:
         Filenames:
           - mcdc-const-folding.cpp
         Expressions:
+          - [ { Ref: 0 }, { Ref: 3 } ]
           - [ { Ref: 3 }, { Ref: 4 } ]
           - [ { Ref: 1 }, { Ref: 2 } ]
         Records:
@@ -269,11 +276,11 @@ Sections:
           - { File: 0, dLoc: [ 1, 12, 0, 13 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 12, 0, 18 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 12, 0, 23 ], Decision: { BIdx: 4, NCond: 3 } }
-          - { File: 0, dLoc: [ 0, 12, 0, 13 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 1, 0, 3 ] } }
+          - { File: 0, dLoc: [ 0, 12, 0, 13 ], Branch: { True: { Sub: 0 }, False: { Zero: {  } }, MCDC: [ 1, 0, 3 ] } }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Ref: 3 }
-          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Sub: 0 }, False: { Ref: 4 }, MCDC: [ 3, 0, 2 ] } }
+          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Sub: 1 }, False: { Ref: 4 }, MCDC: [ 3, 0, 2 ] } }
           - { File: 0, dLoc: [ 0, 22, 0, 23 ], Ref: 1 }
-          - { File: 0, dLoc: [ 0, 22, 0, 23 ], Branch: { True: { Sub: 1 }, False: { Ref: 2 }, MCDC: [ 2, 0, 0 ] } }
+          - { File: 0, dLoc: [ 0, 22, 0, 23 ], Branch: { True: { Sub: 2 }, False: { Ref: 2 }, MCDC: [ 2, 0, 0 ] } }
   - Name:            '__llvm_covfun (13)'
     Type:            SHT_PROGBITS
     Flags:           [ SHF_GNU_RETAIN ]
@@ -286,6 +293,7 @@ Sections:
           - mcdc-const-folding.cpp
         Expressions:
           - [ { Ref: 0 }, { Ref: 3 } ]
+          - [ { Ref: 3 }, { Ref: 4 } ]
           - [ { Ref: 1 }, { Ref: 2 } ]
         Records:
           - { File: 0, dLoc: [ 43, 28, 2, 2 ], Ref: 0 }
@@ -294,9 +302,9 @@ Sections:
           - { File: 0, dLoc: [ 0, 12, 0, 23 ], Decision: { BIdx: 4, NCond: 3 } }
           - { File: 0, dLoc: [ 0, 12, 0, 13 ], Branch: { True: { Sub: 0 }, False: { Ref: 3 }, MCDC: [ 1, 0, 3 ] } }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Ref: 3 }
-          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 3, 0, 2 ] } }
+          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Sub: 1 }, False: { Zero: {  } }, MCDC: [ 3, 0, 2 ] } }
           - { File: 0, dLoc: [ 0, 22, 0, 23 ], Ref: 1 }
-          - { File: 0, dLoc: [ 0, 22, 0, 23 ], Branch: { True: { Sub: 1 }, False: { Ref: 2 }, MCDC: [ 2, 0, 0 ] } }
+          - { File: 0, dLoc: [ 0, 22, 0, 23 ], Branch: { True: { Sub: 2 }, False: { Ref: 2 }, MCDC: [ 2, 0, 0 ] } }
   - Name:            '__llvm_covfun (14)'
     Type:            SHT_PROGBITS
     Flags:           [ SHF_GNU_RETAIN ]
@@ -315,7 +323,7 @@ Sections:
           - { File: 0, dLoc: [ 1, 12, 0, 13 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 12, 0, 18 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 12, 0, 23 ], Decision: { BIdx: 4, NCond: 3 } }
-          - { File: 0, dLoc: [ 0, 12, 0, 13 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 1, 0, 3 ] } }
+          - { File: 0, dLoc: [ 0, 12, 0, 13 ], Branch: { True: { Zero: {  } }, False: { Ref: 3 }, MCDC: [ 1, 0, 3 ] } }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Ref: 3 }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Sub: 0 }, False: { Ref: 4 }, MCDC: [ 3, 0, 2 ] } }
           - { File: 0, dLoc: [ 0, 22, 0, 23 ], Ref: 1 }
@@ -340,7 +348,7 @@ Sections:
           - { File: 0, dLoc: [ 0, 12, 0, 23 ], Decision: { BIdx: 4, NCond: 3 } }
           - { File: 0, dLoc: [ 0, 12, 0, 13 ], Branch: { True: { Sub: 0 }, False: { Ref: 3 }, MCDC: [ 1, 0, 3 ] } }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Ref: 3 }
-          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 3, 0, 2 ] } }
+          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Zero: {  } }, False: { Ref: 4 }, MCDC: [ 3, 0, 2 ] } }
           - { File: 0, dLoc: [ 0, 22, 0, 23 ], Ref: 1 }
           - { File: 0, dLoc: [ 0, 22, 0, 23 ], Branch: { True: { Sub: 1 }, False: { Ref: 2 }, MCDC: [ 2, 0, 0 ] } }
   - Name:            '__llvm_covfun (16)'
@@ -356,6 +364,7 @@ Sections:
         Expressions:
           - [ { Ref: 0 }, { Ref: 3 } ]
           - [ { Ref: 3 }, { Ref: 4 } ]
+          - [ { Ref: 1 }, { Ref: 2 } ]
         Records:
           - { File: 0, dLoc: [ 53, 28, 2, 2 ], Ref: 0 }
           - { File: 0, dLoc: [ 1, 12, 0, 13 ], Ref: 0 }
@@ -365,7 +374,7 @@ Sections:
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Ref: 3 }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Ref: 4 }, False: { Sub: 1 }, MCDC: [ 3, 2, 0 ] } }
           - { File: 0, dLoc: [ 0, 22, 0, 23 ], Ref: 1 }
-          - { File: 0, dLoc: [ 0, 22, 0, 23 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 2, 0, 0 ] } }
+          - { File: 0, dLoc: [ 0, 22, 0, 23 ], Branch: { True: { Zero: {  } }, False: { Sub: 2 }, MCDC: [ 2, 0, 0 ] } }
   - Name:            '__llvm_covfun (17)'
     Type:            SHT_PROGBITS
     Flags:           [ SHF_GNU_RETAIN ]
@@ -378,6 +387,7 @@ Sections:
           - mcdc-const-folding.cpp
         Expressions:
           - [ { Ref: 0 }, { Ref: 3 } ]
+          - [ { Ref: 3 }, { Ref: 4 } ]
           - [ { Ref: 1 }, { Ref: 2 } ]
         Records:
           - { File: 0, dLoc: [ 56, 28, 2, 2 ], Ref: 0 }
@@ -386,9 +396,9 @@ Sections:
           - { File: 0, dLoc: [ 0, 12, 0, 23 ], Decision: { BIdx: 4, NCond: 3 } }
           - { File: 0, dLoc: [ 0, 12, 0, 13 ], Branch: { True: { Ref: 3 }, False: { Sub: 0 }, MCDC: [ 1, 3, 0 ] } }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Ref: 3 }
-          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 3, 2, 0 ] } }
+          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Zero: {  } }, False: { Sub: 1 }, MCDC: [ 3, 2, 0 ] } }
           - { File: 0, dLoc: [ 0, 22, 0, 23 ], Ref: 1 }
-          - { File: 0, dLoc: [ 0, 22, 0, 23 ], Branch: { True: { Ref: 2 }, False: { Sub: 1 }, MCDC: [ 2, 0, 0 ] } }
+          - { File: 0, dLoc: [ 0, 22, 0, 23 ], Branch: { True: { Ref: 2 }, False: { Sub: 2 }, MCDC: [ 2, 0, 0 ] } }
   - Name:            '__llvm_covfun (18)'
     Type:            SHT_PROGBITS
     Flags:           [ SHF_GNU_RETAIN ]
@@ -411,7 +421,7 @@ Sections:
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Ref: 3 }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Ref: 4 }, False: { Sub: 1 }, MCDC: [ 3, 2, 0 ] } }
           - { File: 0, dLoc: [ 0, 22, 0, 23 ], Ref: 1 }
-          - { File: 0, dLoc: [ 0, 22, 0, 23 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 2, 0, 0 ] } }
+          - { File: 0, dLoc: [ 0, 22, 0, 23 ], Branch: { True: { Ref: 2 }, False: { Zero: {  } }, MCDC: [ 2, 0, 0 ] } }
   - Name:            '__llvm_covfun (19)'
     Type:            SHT_PROGBITS
     Flags:           [ SHF_GNU_RETAIN ]
@@ -432,7 +442,7 @@ Sections:
           - { File: 0, dLoc: [ 0, 12, 0, 23 ], Decision: { BIdx: 4, NCond: 3 } }
           - { File: 0, dLoc: [ 0, 12, 0, 13 ], Branch: { True: { Ref: 3 }, False: { Sub: 0 }, MCDC: [ 1, 3, 0 ] } }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Ref: 3 }
-          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 3, 2, 0 ] } }
+          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Ref: 4 }, False: { Zero: {  } }, MCDC: [ 3, 2, 0 ] } }
           - { File: 0, dLoc: [ 0, 22, 0, 23 ], Ref: 1 }
           - { File: 0, dLoc: [ 0, 22, 0, 23 ], Branch: { True: { Ref: 2 }, False: { Sub: 1 }, MCDC: [ 2, 0, 0 ] } }
   - Name:            '__llvm_covfun (20)'
@@ -448,6 +458,7 @@ Sections:
         Expressions:
           - [ { Ref: 0 }, { Ref: 3 } ]
           - [ { Ref: 3 }, { Ref: 4 } ]
+          - [ { Ref: 1 }, { Ref: 2 } ]
         Records:
           - { File: 0, dLoc: [ 65, 28, 2, 2 ], Ref: 0 }
           - { File: 0, dLoc: [ 1, 12, 0, 13 ], Ref: 0 }
@@ -457,7 +468,7 @@ Sections:
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Ref: 3 }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Sub: 1 }, False: { Ref: 4 }, MCDC: [ 3, 0, 2 ] } }
           - { File: 0, dLoc: [ 0, 22, 0, 23 ], Ref: 1 }
-          - { File: 0, dLoc: [ 0, 22, 0, 23 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 2, 0, 0 ] } }
+          - { File: 0, dLoc: [ 0, 22, 0, 23 ], Branch: { True: { Sub: 2 }, False: { Zero: {  } }, MCDC: [ 2, 0, 0 ] } }
   - Name:            '__llvm_covfun (21)'
     Type:            SHT_PROGBITS
     Flags:           [ SHF_GNU_RETAIN ]
@@ -470,6 +481,7 @@ Sections:
           - mcdc-const-folding.cpp
         Expressions:
           - [ { Ref: 0 }, { Ref: 3 } ]
+          - [ { Ref: 3 }, { Ref: 4 } ]
           - [ { Ref: 1 }, { Ref: 2 } ]
         Records:
           - { File: 0, dLoc: [ 68, 28, 2, 2 ], Ref: 0 }
@@ -478,9 +490,9 @@ Sections:
           - { File: 0, dLoc: [ 0, 12, 0, 23 ], Decision: { BIdx: 4, NCond: 3 } }
           - { File: 0, dLoc: [ 0, 12, 0, 13 ], Branch: { True: { Sub: 0 }, False: { Ref: 3 }, MCDC: [ 1, 0, 3 ] } }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Ref: 3 }
-          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 3, 0, 2 ] } }
+          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Sub: 1 }, False: { Zero: {  } }, MCDC: [ 3, 0, 2 ] } }
           - { File: 0, dLoc: [ 0, 22, 0, 23 ], Ref: 1 }
-          - { File: 0, dLoc: [ 0, 22, 0, 23 ], Branch: { True: { Sub: 1 }, False: { Ref: 2 }, MCDC: [ 2, 0, 0 ] } }
+          - { File: 0, dLoc: [ 0, 22, 0, 23 ], Branch: { True: { Sub: 2 }, False: { Ref: 2 }, MCDC: [ 2, 0, 0 ] } }
   - Name:            '__llvm_covfun (22)'
     Type:            SHT_PROGBITS
     Flags:           [ SHF_GNU_RETAIN ]
@@ -503,7 +515,7 @@ Sections:
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Ref: 3 }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Sub: 1 }, False: { Ref: 4 }, MCDC: [ 3, 0, 2 ] } }
           - { File: 0, dLoc: [ 0, 22, 0, 23 ], Ref: 1 }
-          - { File: 0, dLoc: [ 0, 22, 0, 23 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 2, 0, 0 ] } }
+          - { File: 0, dLoc: [ 0, 22, 0, 23 ], Branch: { True: { Zero: {  } }, False: { Ref: 2 }, MCDC: [ 2, 0, 0 ] } }
   - Name:            '__llvm_covfun (23)'
     Type:            SHT_PROGBITS
     Flags:           [ SHF_GNU_RETAIN ]
@@ -524,7 +536,7 @@ Sections:
           - { File: 0, dLoc: [ 0, 12, 0, 23 ], Decision: { BIdx: 4, NCond: 3 } }
           - { File: 0, dLoc: [ 0, 12, 0, 13 ], Branch: { True: { Sub: 0 }, False: { Ref: 3 }, MCDC: [ 1, 0, 3 ] } }
           - { File: 0, dLoc: [ 0, 17, 0, 18 ], Ref: 3 }
-          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 3, 0, 2 ] } }
+          - { File: 0, dLoc: [ 0, 17, 0, 18 ], Branch: { True: { Zero: {  } }, False: { Ref: 4 }, MCDC: [ 3, 0, 2 ] } }
           - { File: 0, dLoc: [ 0, 22, 0, 23 ], Ref: 1 }
           - { File: 0, dLoc: [ 0, 22, 0, 23 ], Branch: { True: { Sub: 1 }, False: { Ref: 2 }, MCDC: [ 2, 0, 0 ] } }
   - Name:            '__llvm_covfun (24)'
@@ -626,13 +638,13 @@ Symbols:
     Type:            STT_OBJECT
     Section:         __llvm_covfun
     Binding:         STB_WEAK
-    Size:            0x4C
+    Size:            0x4E
     Other:           [ STV_HIDDEN ]
   - Name:            __covrec_8B3F25D7C81A6992u
     Type:            STT_OBJECT
     Section:         '__llvm_covfun (1)'
     Binding:         STB_WEAK
-    Size:            0x4C
+    Size:            0x4E
     Other:           [ STV_HIDDEN ]
   - Name:            __covrec_5B9A380DA46F7D9Au
     Type:            STT_OBJECT
@@ -650,13 +662,13 @@ Symbols:
     Type:            STT_OBJECT
     Section:         '__llvm_covfun (4)'
     Binding:         STB_WEAK
-    Size:            0x4C
+    Size:            0x4E
     Other:           [ STV_HIDDEN ]
   - Name:            __covrec_F192047347FC6909u
     Type:            STT_OBJECT
     Section:         '__llvm_covfun (5)'
     Binding:         STB_WEAK
-    Size:            0x4C
+    Size:            0x4E
     Other:           [ STV_HIDDEN ]
   - Name:            __covrec_796F3F96F70ECB0Eu
     Type:            STT_OBJECT
@@ -674,13 +686,13 @@ Symbols:
     Type:            STT_OBJECT
     Section:         '__llvm_covfun (8)'
     Binding:         STB_WEAK
-    Size:            0x62
+    Size:            0x64
     Other:           [ STV_HIDDEN ]
   - Name:            __covrec_539FFBCF164E2424u
     Type:            STT_OBJECT
     Section:         '__llvm_covfun (9)'
     Binding:         STB_WEAK
-    Size:            0x62
+    Size:            0x64
     Other:           [ STV_HIDDEN ]
   - Name:            __covrec_7D62D12E1DCD9CCCu
     Type:            STT_OBJECT
@@ -698,13 +710,13 @@ Symbols:
     Type:            STT_OBJECT
     Section:         '__llvm_covfun (12)'
     Binding:         STB_WEAK
-    Size:            0x62
+    Size:            0x64
     Other:           [ STV_HIDDEN ]
   - Name:            __covrec_AC33A01E6046BD54u
     Type:            STT_OBJECT
     Section:         '__llvm_covfun (13)'
     Binding:         STB_WEAK
-    Size:            0x62
+    Size:            0x64
     Other:           [ STV_HIDDEN ]
   - Name:            __covrec_3BA1ADB6033E9539u
     Type:            STT_OBJECT
@@ -722,13 +734,13 @@ Symbols:
     Type:            STT_OBJECT
     Section:         '__llvm_covfun (16)'
     Binding:         STB_WEAK
-    Size:            0x62
+    Size:            0x64
     Other:           [ STV_HIDDEN ]
   - Name:            __covrec_767C49B7AF88DB98u
     Type:            STT_OBJECT
     Section:         '__llvm_covfun (17)'
     Binding:         STB_WEAK
-    Size:            0x62
+    Size:            0x64
     Other:           [ STV_HIDDEN ]
   - Name:            __covrec_BAEE555D93576359u
     Type:            STT_OBJECT
@@ -746,13 +758,13 @@ Symbols:
     Type:            STT_OBJECT
     Section:         '__llvm_covfun (20)'
     Binding:         STB_WEAK
-    Size:            0x62
+    Size:            0x64
     Other:           [ STV_HIDDEN ]
   - Name:            __covrec_ACA4E62EF2CC665Eu
     Type:            STT_OBJECT
     Section:         '__llvm_covfun (21)'
     Binding:         STB_WEAK
-    Size:            0x62
+    Size:            0x64
     Other:           [ STV_HIDDEN ]
   - Name:            __covrec_E8A2769910EA4D7Cu
     Type:            STT_OBJECT
diff --git a/llvm/test/tools/llvm-cov/Inputs/mcdc-const.yaml b/llvm/test/tools/llvm-cov/Inputs/mcdc-const.yaml
index 66fac0747dee5ea..5b7cfeb433ace60 100644
--- a/llvm/test/tools/llvm-cov/Inputs/mcdc-const.yaml
+++ b/llvm/test/tools/llvm-cov/Inputs/mcdc-const.yaml
@@ -19,6 +19,7 @@ Sections:
           - mcdc-const.cpp
         Expressions:
           - [ { Ref: 0 }, { Ref: 5 } ]
+          - [ { Ref: 4 }, { Ref: 7 } ]
           - [ { Ref: 7 }, { Ref: 8 } ]
         Records:
           - { File: 0, dLoc: [ 10, 43, 4, 2 ], Ref: 0 }
@@ -30,14 +31,14 @@ Sections:
           - { File: 0, dLoc: [ 0, 8, 0, 9 ], Ref: 0 }
           - { File: 0, dLoc: [ 0, 8, 0, 9 ], Branch: { True: { Ref: 5 }, False: { Sub: 0 }, MCDC: [ 1, 4, 3 ] } }
           - { File: 0, dLoc: [ 0, 13, 0, 14 ], Ref: 5 }
-          - { File: 0, dLoc: [ 0, 13, 0, 14 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 4, 0, 3 ] } }
+          - { File: 0, dLoc: [ 0, 13, 0, 14 ], Branch: { True: { Ref: 6 }, False: { Zero: {  } }, MCDC: [ 4, 0, 3 ] } }
           - { File: 0, dLoc: [ 0, 19, 0, 27 ], Ref: 4 }
           - { File: 0, dLoc: [ 0, 20, 0, 21 ], Ref: 4 }
-          - { File: 0, dLoc: [ 0, 20, 0, 21 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 3, 5, 2 ] } }
+          - { File: 0, dLoc: [ 0, 20, 0, 21 ], Branch: { True: { Zero: {  } }, False: { Sub: 1 }, MCDC: [ 3, 5, 2 ] } }
           - { File: 0, dLoc: [ 0, 25, 0, 26 ], Ref: 7 }
-          - { File: 0, dLoc: [ 0, 25, 0, 26 ], Branch: { True: { Ref: 8 }, False: { Sub: 1 }, MCDC: [ 5, 0, 2 ] } }
+          - { File: 0, dLoc: [ 0, 25, 0, 26 ], Branch: { True: { Ref: 8 }, False: { Sub: 2 }, MCDC: [ 5, 0, 2 ] } }
           - { File: 0, dLoc: [ 0, 31, 0, 32 ], Ref: 2 }
-          - { File: 0, dLoc: [ 0, 31, 0, 32 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 2, 0, 0 ] } }
+          - { File: 0, dLoc: [ 0, 31, 0, 32 ], Branch: { True: { Zero: {  } }, False: { Ref: 3 }, MCDC: [ 2, 0, 0 ] } }
           - { File: 0, dLoc: [ 0, 33, 1, 5 ], isGap: true, Ref: 1 }
           - { File: 0, dLoc: [ 1, 5, 0, 36 ], Ref: 1 }
   - Name:            '__llvm_covfun (1)'
@@ -91,7 +92,7 @@ Symbols:
     Type:            STT_OBJECT
     Section:         __llvm_covfun
     Binding:         STB_WEAK
-    Size:            0xA2
+    Size:            0xA4
     Other:           [ STV_HIDDEN ]
   - Name:            __covrec_DB956436E78DD5FAu
     Type:            STT_OBJECT
diff --git a/llvm/test/tools/llvm-cov/Inputs/mcdc-macro.yaml b/llvm/test/tools/llvm-cov/Inputs/mcdc-macro.yaml
index 24847ae952a68c7..05f86db4fd91a90 100644
--- a/llvm/test/tools/llvm-cov/Inputs/mcdc-macro.yaml
+++ b/llvm/test/tools/llvm-cov/Inputs/mcdc-macro.yaml
@@ -91,7 +91,7 @@ Sections:
           - { File: 0, dLoc: [ 1, 5, 0, 12 ], Ref: 13 }
           - { File: 1, dLoc: [ 2, 11, 0, 12 ], Ref: 8 }
           - { File: 1, dLoc: [ 0, 11, 0, 12 ], Ref: 0 }
-          - { File: 1, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 5, 4, 2 ] } }
+          - { File: 1, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Ref: 9 }, False: { Zero: {  } }, MCDC: [ 5, 4, 2 ] } }
           - { File: 2, dLoc: [ 3, 11, 0, 19 ], Ref: 6 }
           - { File: 2, dLoc: [ 0, 11, 0, 30 ], Ref: 0 }
           - { File: 2, dLoc: [ 0, 11, 0, 30 ], Ref: 0 }
@@ -101,12 +101,12 @@ Sections:
           - { File: 2, dLoc: [ 0, 23, 0, 30 ], Branch: { True: { Ref: 5 }, False: { Sub: 6 }, MCDC: [ 3, 0, 2 ] } }
           - { File: 2, dLoc: [ 0, 24, 0, 25 ], Expansion: 8 }
           - { File: 3, dLoc: [ 2, 11, 0, 12 ], Ref: 11 }
-          - { File: 3, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 2, 0, 0 ] } }
+          - { File: 3, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Ref: 12 }, False: { Zero: {  } }, MCDC: [ 2, 0, 0 ] } }
           - { File: 4, dLoc: [ 1, 11, 0, 12 ], Ref: 16 }
           - { File: 4, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Ref: 17 }, False: { Sub: 7 }, MCDC: [ 4, 0, 2 ] } }
           - { File: 5, dLoc: [ 2, 11, 0, 12 ], Ref: 14 }
           - { File: 5, dLoc: [ 0, 11, 0, 12 ], Ref: 14 }
-          - { File: 5, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Zero: {  } }, False: { Zero: {  } }, MCDC: [ 2, 6, 0 ] } }
+          - { File: 5, dLoc: [ 0, 11, 0, 12 ], Branch: { True: { Ref: 20 }, False: { Zero: {  } }, MCDC: [ 2, 6, 0 ] } }
           - { File: 6, dLoc: [ 4, 11, 0, 12 ], Expansion: 9 }
           - { File: 7, dLoc: [ 1, 11, 0, 12 ], Ref: 6 }
           - { File: 8, dLoc: [ 1, 11, 0, 12 ], Ref: 4 }
diff --git a/llvm/test/tools/llvm-cov/Inputs/yaml.makefile b/llvm/test/tools/llvm-cov/Inputs/yaml.makefile
index fd29aa26baed10f..1f6d4d7a8f44413 100644
--- a/llvm/test/tools/llvm-cov/Inputs/yaml.makefile
+++ b/llvm/test/tools/llvm-cov/Inputs/yaml.makefile
@@ -4,6 +4,19 @@
 #   cd /path/to/llvm-project/llvm/test/tools/llvm-cov/Inputs
 #   PATH=/path/to/build/bin:$PATH make -f yaml.makefile *.yaml
 
+CFLAGS_COVMAP	= -fcoverage-compilation-dir=. \
+		  -mllvm -enable-name-compression=false \
+		  -fprofile-instr-generate -fcoverage-mapping \
+		  $(if $(filter mcdc-%, $*), $(CFLAGS_MCDC))
+
+CFLAGS_MCDC	= -fcoverage-mcdc
+
+%.o: %.cpp
+	clang++ $< -c -o $@ $(CFLAGS_COVMAP)
+
+%.o: %.c
+	clang $< -c -o $@ $(CFLAGS_COVMAP)
+
 %.covmap.o: %.o
 	llvm-objcopy \
 		--only-section=__llvm_covfun \
@@ -14,3 +27,50 @@
 
 %.yaml: %.covmap.o
 	obj2yaml $< > $@
+
+%.exe: %.o
+	clang++ -fprofile-instr-generate $^ -o $@
+
+ARGS_branch-logical-mixed := \
+	0 0; \
+	0 1; \
+	1 0; \
+	1 1
+
+ARGS_branch-macros := \
+	0 1; \
+	1 0; \
+	1 1
+
+ARGS_branch-showBranchPercentage := \
+	0 1; \
+	1 1; \
+	2 2; \
+	4 0; \
+	5 0; \
+	1
+
+ARGS_mcdc-const-folding := \
+	0 1; \
+	1 0; \
+	1 1; \
+	1 1
+
+%.profdata: %.exe
+	-find -name '$*.*.profraw' | xargs rm -fv
+	@if [ "$(ARGS_$*)" = "" ]; then \
+	  echo "Executing: $<"; \
+	  LLVM_PROFILE_FILE=$*.%p.profraw ./$<; \
+	else \
+	  LLVM_PROFILE_FILE=$*.%p.profraw; \
+	  export LLVM_PROFILE_FILE; \
+	  for xcmd in $(shell echo "$(ARGS_$*)" | tr ';[:blank:]' ' %'); do \
+	    cmd=$$(echo "$$xcmd" | tr '%' ' '); \
+	    echo "Executing series: $< $$cmd"; \
+	    eval "./$< $$cmd"; \
+	  done; \
+	fi
+	find -name '$*.*.profraw' | xargs llvm-profdata merge --sparse -o $@
+
+%.proftext: %.profdata
+	llvm-profdata merge --text -o $@ $<
diff --git a/llvm/test/tools/llvm-cov/branch-c-general.test b/llvm/test/tools/llvm-cov/branch-c-general.test
index 8c58c1536f1583b..dd9c92ee50135ee 100644
--- a/llvm/test/tools/llvm-cov/branch-c-general.test
+++ b/llvm/test/tools/llvm-cov/branch-c-general.test
@@ -2,8 +2,8 @@
 
 // RUN: yaml2obj %S/Inputs/branch-c-general.yaml -o %t.o
 // RUN: llvm-profdata merge %S/Inputs/branch-c-general.proftext -o %t.profdata
-// RUN: llvm-cov show --show-branches=count %t.o -instr-profile %t.profdata -path-equivalence=/tmp,%S/Inputs %S/Inputs/branch-c-general.c | FileCheck %s
-// RUN: llvm-cov report --show-branch-summary %t.o -instr-profile %t.profdata -show-functions -path-equivalence=/tmp,%S/Inputs %S/Inputs/branch-c-general.c | FileCheck %s -check-prefix=REPORT
+// RUN: llvm-cov show --show-branches=count %t.o -instr-profile %t.profdata -path-equivalence=.,%S/Inputs %S/Inputs/branch-c-general.c | FileCheck %s
+// RUN: llvm-cov report --show-branch-summary %t.o -instr-profile %t.profdata -show-functions -path-equivalence=.,%S/Inputs %S/Inputs/branch-c-general.c | FileCheck %s -check-prefix=REPORT
 
 // CHECK: simple_loops()
 // CHECK: Branch (9:15): [True: 100, False: 1]
@@ -17,9 +17,9 @@
 // CHECK: Branch (21:16): [True: 33, False: 17]
 // CHECK: Branch (22:11): [True: 33, False: 0]
 // CHECK: Branch (24:11): [True: 16, False: 1]
-// CHECK: Branch (27:9): [Folded - Ignored]
+// CHECK: Branch (27:9): [True: 100, Folded]
 // CHECK: Branch (27:14): [True: 99, False: 1]
-// CHECK: Branch (28:9): [Folded - Ignored]
+// CHECK: Branch (28:9): [Folded, False: 100]
 // CHECK: Branch (28:14): [True: 99, False: 1]
 
 // CHECK: early_exits()
@@ -40,9 +40,9 @@
 // CHECK: Branch (75:9): [True: 0, False: 1]
 // CHECK: Branch (83:7): [True: 2, False: 1]
 // CHECK: Branch (86:10): [True: 0, False: 1]
-// CHECK: Branch (89:5): [True: 1, False: 2]
-// CHECK: Branch (91:5): [True: 1, False: 2]
-// CHECK: Branch (93:5): [True: 1, False: 2]
+// CHECK: Branch (89:5): [True: 1, Folded]
+// CHECK: Branch (91:5): [True: 1, Folded]
+// CHECK: Branch (93:5): [True: 1, Folded]
 // CHECK: Branch (98:15): [True: 10, False: 1]
 // CHECK: Branch (101:9): [True: 0, False: 0]
 // CHECK: Branch (103:9): [True: 9, False: 1]
@@ -50,34 +50,34 @@
 // CHECK: switches()
 // CHECK: Branch (113:3): [True: 1, Folded]
 // CHECK: Branch (117:63): [True: 15, False: 0]
-// CHECK: Branch (119:5): [True: 1, False: 14]
+// CHECK: Branch (119:5): [True: 1, Folded]
 // CHECK: Branch (120:11): [True: 0, False: 1]
-// CHECK: Branch (122:5): [True: 2, False: 13]
+// CHECK: Branch (122:5): [True: 2, Folded]
 // CHECK: Branch (123:11): [True: 2, False: 1]
-// CHECK: Branch (125:5): [True: 3, False: 12]
+// CHECK: Branch (125:5): [True: 3, Folded]
 // CHECK: Branch (126:11): [True: 3, False: 0]
-// CHECK: Branch (128:5): [True: 4, False: 11]
+// CHECK: Branch (128:5): [True: 4, Folded]
 // CHECK: Branch (129:11): [True: 4, False: 0]
 // CHECK: Branch (131:7): [True: 4, Folded]
 // CHECK: Branch (132:13): [True: 4, False: 0]
-// CHECK: Branch (136:5): [True: 5, False: 10]
+// CHECK: Branch (136:5): [True: 5, Folded]
 // CHECK: Branch (137:11): [True: 1, False: 4]
 // CHECK: Branch (143:7): [True: 0, False: 0]
 
 // CHECK: big_switch()
 // CHECK: Branch (148:19): [True: 32, False: 1]
-// CHECK: Branch (150:5): [True: 1, False: 31]
+// CHECK: Branch (150:5): [True: 1, Folded]
 // CHECK: Branch (151:11): [True: 0, False: 1]
-// CHECK: Branch (153:5): [True: 1, False: 31]
+// CHECK: Branch (153:5): [True: 1, Folded]
 // CHECK: Branch (154:11): [True: 1, False: 1]
-// CHECK: Branch (156:5): [True: 11, False: 21]
+// CHECK: Branch (156:5): [True: 11, Folded]
 // CHECK: Branch (157:11): [True: 11, False: 0]
-// CHECK: Branch (161:5): [True: 1, False: 31]
+// CHECK: Branch (161:5): [True: 1, Folded]
 // CHECK: Branch (162:11): [True: 1, False: 0]
-// CHECK: Branch (164:5): [True: 15, False: 17]
+// CHECK: Branch (164:5): [True: 15, Folded]
 // CHECK: Branch (165:11): [True: 15, False: 0]
 // CHECK: Branch (170:11): [True: 1, False: 0]
-// CHECK: Branch (172:5): [True: 2, False: 30]
+// CHECK: Branch (172:5): [True: 2, Folded]
 // CHECK: Branch (173:11): [True: 2, False: 0]
 
 // CHECK: boolean_operators()
@@ -117,34 +117,34 @@
 
 // REPORT:      Name                        Regions    Miss   Cover     Lines    Miss   Cover  Branches    Miss   Cover
 // REPORT-NEXT: ---
-// REPORT-NEXT: simple_loops                      8       0 100.00%         9       0 100.00%         6       0 100.00%
-// REPORT-NEXT: conditionals                     24       0 100.00%        15       0 100.00%        16       2  87.50%
-// REPORT-NEXT: early_exits                      20       4  80.00%        25       2  92.00%        16       6  62.50%
-// REPORT-NEXT: jumps                            39      12  69.23%        48       2  95.83%        26       9  65.38%
-// REPORT-NEXT: switches                         28       5  82.14%        38       4  89.47%        28       7  75.00%
-// REPORT-NEXT: big_switch                       25       1  96.00%        32       0 100.00%        30       6  80.00%
-// REPORT-NEXT: boolean_operators                16       0 100.00%        13       0 100.00%        22       2  90.91%
-// REPORT-NEXT: boolop_loops                     19       0 100.00%        14       0 100.00%        16       2  87.50%
-// REPORT-NEXT: conditional_operator              4       2  50.00%         8       0 100.00%         4       2  50.00%
-// REPORT-NEXT: do_fallthrough                    9       0 100.00%        12       0 100.00%         6       0 100.00%
+// REPORT-NEXT: simple_loops                      8       0 100.00%         8       0 100.00%         6       0 100.00%
+// REPORT-NEXT: conditionals                     24       0 100.00%        13       0 100.00%        18       2  88.89%
+// REPORT-NEXT: early_exits                      20       4  80.00%        19       2  89.47%        16       6  62.50%
+// REPORT-NEXT: jumps                            39      12  69.23%        38       3  92.11%        24      10  58.33%
+// REPORT-NEXT: switches                         27       4  85.19%        30       2  93.33%        24       8  66.67%
+// REPORT-NEXT: big_switch                       25       1  96.00%        26       0 100.00%        23       6  73.91%
+// REPORT-NEXT: boolean_operators                16       0 100.00%         9       0 100.00%        22       2  90.91%
+// REPORT-NEXT: boolop_loops                     19       0 100.00%         9       0 100.00%        16       2  87.50%
+// REPORT-NEXT: conditional_operator              6       2  66.67%         5       0 100.00%         4       2  50.00%
+// REPORT-NEXT: do_fallthrough                    9       0 100.00%         9       0 100.00%         6       0 100.00%
 // REPORT-NEXT: main                              1       0 100.00%        16       0 100.00%         0       0   0.00%
-// REPORT-NEXT: c-general.c:static_func           4       0 100.00%         4       0 100.00%         2       0 100.00%
+// REPORT-NEXT: static_func                       4       0 100.00%         4       0 100.00%         2       0 100.00%
 // REPORT-NEXT: ---
-// REPORT-NEXT: TOTAL                           197      24  87.82%       234       8  96.58%       172      36  79.07%
+// REPORT-NEXT: TOTAL                           198      23  88.38%       186       7  96.24%       161      38  76.40%
 
 // Test file-level report.
 // RUN: llvm-profdata merge %S/Inputs/branch-c-general.proftext -o %t.profdata
-// RUN: llvm-cov report %t.o -instr-profile %t.profdata -path-equivalence=/tmp,%S/Inputs %S/Inputs/branch-c-general.c | FileCheck %s -check-prefix=FILEREPORT
-// FILEREPORT: TOTAL{{.*}}172                36    79.07%
+// RUN: llvm-cov report %t.o -instr-profile %t.profdata -path-equivalence=.,%S/Inputs %S/Inputs/branch-c-general.c | FileCheck %s -check-prefix=FILEREPORT
+// FILEREPORT: TOTAL{{.*}}161                38    76.40%
 
 // Test color True/False output.
-// RUN: llvm-cov show --use-color --show-branches=count %t.o -instr-profile %t.profdata -path-equivalence=/tmp,%S/Inputs %S/Inputs/branch-c-general.c | FileCheck %s -check-prefix=USECOLOR
+// RUN: llvm-cov show --use-color --show-branches=count %t.o -instr-profile %t.profdata -path-equivalence=.,%S/Inputs %S/Inputs/branch-c-general.c | FileCheck %s -check-prefix=USECOLOR
 // USECOLOR: Branch ({{[0-9]+}}:7): {{.*}}: 0, {{.*}}0]
 
 // Test html output.
-// RUN: llvm-cov show --show-branch-summary --show-branches=count %t.o -instr-profile %t.profdata -path-equivalence=/tmp,%S/Inputs %S/Inputs/branch-c-general.c -format html -o %t.html.dir
-// RUN: FileCheck -check-prefix=HTML -input-file=%t.html.dir/coverage/tmp/branch-c-general.c.html %s
-// HTML-COUNT-89: Branch (<span class='line-number'><a name='L{{[0-9]+}}' href='#L{{[0-9]+}}'><span>
+// RUN: llvm-cov show --show-branch-summary --show-branches=count %t.o -instr-profile %t.profdata -path-equivalence=.,%S/Inputs %S/Inputs/branch-c-general.c -format html -o %t.html.dir
+// RUN: FileCheck -check-prefix=HTML -input-file=%t.html.dir/coverage/branch-c-general.c.html %s
+// HTML-COUNT-91: Branch (<span class='line-number'><a name='L{{[0-9]+}}' href='#L{{[0-9]+}}'><span>
 // HTML-NOT: Branch (<span class='line-number'><a name='L{{[0-9]+}}' href='#L{{[0-9]+}}'><span>
 
 // RUN: FileCheck -check-prefix HTML-INDEX -input-file %t.html.dir/index.html %s
@@ -158,10 +158,10 @@
 // HTML-INDEX: <td class='column-entry-green'>
 // HTML-INDEX: 100.00% (12/12)
 // HTML-INDEX: <td class='column-entry-yellow'>
-// HTML-INDEX: 96.58% (226/234)
+// HTML-INDEX: 96.24% (179/186)
 // HTML-INDEX: <td class='column-entry-yellow'>
-// HTML-INDEX: 87.82% (173/197)
+// HTML-INDEX: 88.38% (175/198)
 // HTML-INDEX: <td class='column-entry-red'>
-// HTML-INDEX: 79.07% (136/172)
+// HTML-INDEX: 76.40% (123/161)
 // HTML-INDEX: <tr class='light-row-bold'>
 // HTML-INDEX: Totals
diff --git a/llvm/test/tools/llvm-cov/branch-export-json.test b/llvm/test/tools/llvm-cov/branch-export-json.test
index edeb23c9161d257..8d45270f781a4b8 100644
--- a/llvm/test/tools/llvm-cov/branch-export-json.test
+++ b/llvm/test/tools/llvm-cov/branch-export-json.test
@@ -14,12 +14,12 @@
 // CHECK: 32,8,32,14,4,1,0,0,4
 // CHECK: 32,18,32,24,1,3,0,0,4
 // CHECK: 34,15,34,20,1,5,0,0,4
-// CHECK: 41,5,41,11,1,4,0,0,4
-// CHECK: 43,5,43,11,1,4,0,0,4
-// CHECK: 45,5,45,11,0,5,0,0,4
-// CHECK: 47,5,47,12,3,2,0,0,4
+// CHECK: 41,5,41,11,1,0,0,0,4
+// CHECK: 43,5,43,11,1,0,0,0,4
+// CHECK: 45,5,45,11,0,0,0,0,4
+// CHECK: 47,5,47,12,3,0,0,0,4
 // CHECK: 53,12,53,20,50,5,0,0,4
-// CHECK: {"count":30,"covered":26,"notcovered":4,"percent":86.666666666666671}
+// CHECK: {"count":26,"covered":22,"notcovered":4,"percent":84.615384615384613}
 
 // Check recursive macro-expansions.
 // RUN: yaml2obj %S/Inputs/branch-macros.yaml -o %t-branch-macros.o
diff --git a/llvm/test/tools/llvm-cov/branch-export-lcov.test b/llvm/test/tools/llvm-cov/branch-export-lcov.test
index 60b2fed2f3d2cc8..e73b9e3c5deac82 100644
--- a/llvm/test/tools/llvm-cov/branch-export-lcov.test
+++ b/llvm/test/tools/llvm-cov/branch-export-lcov.test
@@ -25,18 +25,18 @@
 // CHECK-DAG: BRDA:34,0,0,1
 // CHECK-DAG: BRDA:34,0,1,5
 // CHECK-DAG: BRDA:41,0,0,1
-// CHECK-DAG: BRDA:41,0,1,4
+// CHECK-DAG: BRDA:41,0,1,0
 // CHECK-DAG: BRDA:43,0,0,1
-// CHECK-DAG: BRDA:43,0,1,4
-// CHECK-DAG: BRDA:45,0,0,0
-// CHECK-DAG: BRDA:45,0,1,5
+// CHECK-DAG: BRDA:43,0,1,0
+// CHECK-DAG: BRDA:45,0,0,-
+// CHECK-DAG: BRDA:45,0,1,-
 // CHECK-DAG: BRDA:47,0,0,3
-// CHECK-DAG: BRDA:47,0,1,2
+// CHECK-DAG: BRDA:47,0,1,0
 // CHECK-DAG: BRDA:53,0,0,50
 // CHECK-DAG: BRDA:53,0,1,5
 // CHECK-NOT: BRDA
-// CHECK: BRF:30
-// CHECK: BRH:26
+// CHECK: BRF:26
+// CHECK: BRH:22
 
 // Check recursive macro-expansions.
 // RUN: yaml2obj %S/Inputs/branch-macros.yaml -o %t-branch-macros.o
diff --git a/llvm/test/tools/llvm-cov/branch-logical-mixed.test b/llvm/test/tools/llvm-cov/branch-logical-mixed.test
index f570aa999fa4a8c..4d42cd0ae88030e 100644
--- a/llvm/test/tools/llvm-cov/branch-logical-mixed.test
+++ b/llvm/test/tools/llvm-cov/branch-logical-mixed.test
@@ -1,7 +1,7 @@
 // RUN: yaml2obj %S/Inputs/branch-logical-mixed.yaml -o %t.o
 // RUN: llvm-profdata merge %S/Inputs/branch-logical-mixed.proftext -o %t.profdata
-// RUN: llvm-cov show --show-branches=count %t.o -instr-profile %t.profdata -path-equivalence=/tmp,%S/Inputs | FileCheck %S/Inputs/branch-logical-mixed.cpp
-// RUN: llvm-cov report --show-branch-summary %t.o -instr-profile %t.profdata -show-functions -path-equivalence=/tmp,%S/Inputs %S/Inputs/branch-logical-mixed.cpp
+// RUN: llvm-cov show --show-branches=count %t.o -instr-profile %t.profdata -path-equivalence=.,%S/Inputs | FileCheck %S/Inputs/branch-logical-mixed.cpp
+// RUN: llvm-cov report --show-branch-summary %t.o -instr-profile %t.profdata -show-functions -path-equivalence=.,%S/Inputs %S/Inputs/branch-logical-mixed.cpp
 | FileCheck %s -check-prefix=REPORT
 
 // REPORT:      Name                        Regions    Miss   Cover     Lines    Miss   Cover  Branches    Miss   Cover
diff --git a/llvm/test/tools/llvm-cov/branch-macros.test b/llvm/test/tools/llvm-cov/branch-macros.test
index 5d012bb0ec03942..8242b84bfffa773 100644
--- a/llvm/test/tools/llvm-cov/branch-macros.test
+++ b/llvm/test/tools/llvm-cov/branch-macros.test
@@ -1,12 +1,12 @@
 // RUN: yaml2obj %S/Inputs/branch-macros.yaml -o %t.o
 // RUN: llvm-profdata merge %S/Inputs/branch-macros.proftext -o %t.profdata
-// RUN: llvm-cov show --show-expansions --show-branches=count %t.o -instr-profile %t.profdata -path-equivalence=/tmp,%S/Inputs | FileCheck %S/Inputs/branch-macros.cpp
-// RUN: llvm-cov report --show-branch-summary %t.o -instr-profile %t.profdata -show-functions -path-equivalence=/tmp,%S/Inputs %S/Inputs/branch-macros.cpp | FileCheck %s -check-prefix=REPORT
+// RUN: llvm-cov show --show-expansions --show-branches=count %t.o -instr-profile %t.profdata -path-equivalence=.,%S/Inputs | FileCheck %S/Inputs/branch-macros.cpp
+// RUN: llvm-cov report --show-branch-summary %t.o -instr-profile %t.profdata -show-functions -path-equivalence=.,%S/Inputs %S/Inputs/branch-macros.cpp | FileCheck %s -check-prefix=REPORT
 
 // REPORT:      Name                        Regions    Miss   Cover     Lines    Miss   Cover  Branches    Miss   Cover
 // REPORT-NEXT: ---
-// REPORT-NEXT: _Z4funcii                        28       4  85.71%        18       0 100.00%        30      14  53.33%
-// REPORT-NEXT: _Z5func2ii                       13       1  92.31%         8       0 100.00%        10       2  80.00%
+// REPORT-NEXT: _Z4funcii                        28       4  85.71%         8       0 100.00%        30      14  53.33%
+// REPORT-NEXT: _Z5func2ii                       13       1  92.31%         4       0 100.00%        10       2  80.00%
 // REPORT-NEXT: main                              1       0 100.00%         6       0 100.00%         0       0   0.00%
 // REPORT-NEXT: ---
-// REPORT-NEXT: TOTAL                            42       5  88.10%        32       0 100.00%        40      16  60.00%
+// REPORT-NEXT: TOTAL                            42       5  88.10%        18       0 100.00%        40      16  60.00%
diff --git a/llvm/test/tools/llvm-cov/branch-noShowBranch.test b/llvm/test/tools/llvm-cov/branch-noShowBranch.test
index 4f16d6629bf1202..253f63a9e059d09 100644
--- a/llvm/test/tools/llvm-cov/branch-noShowBranch.test
+++ b/llvm/test/tools/llvm-cov/branch-noShowBranch.test
@@ -1,8 +1,8 @@
 
 // RUN: yaml2obj %S/Inputs/branch-c-general.yaml -o %t.o
 // RUN: llvm-profdata merge %S/Inputs/branch-c-general.proftext -o %t.profdata
-// RUN: llvm-cov show %t.o -instr-profile %t.profdata -path-equivalence=/tmp,%S/Inputs | FileCheck %s
-// RUN: llvm-cov report %t.o --show-branch-summary=false -instr-profile %t.profdata -show-functions -path-equivalence=/tmp,%S/Inputs %S/Inputs/branch-c-general.c | FileCheck %s -check-prefix=REPORT
+// RUN: llvm-cov show %t.o -instr-profile %t.profdata -path-equivalence=.,%S/Inputs | FileCheck %s
+// RUN: llvm-cov report %t.o --show-branch-summary=false -instr-profile %t.profdata -show-functions -path-equivalence=.,%S/Inputs %S/Inputs/branch-c-general.c | FileCheck %s -check-prefix=REPORT
 
 // CHECK-NOT: | Branch
 
@@ -21,6 +21,6 @@
 // REPORT-NOT: do_fallthrough                    9       0 100.00%        12       0 100.00%         6       0 100.00%
 // REPORT-NOT: main                              1       0 100.00%        16       0 100.00%         0       0   0.00%
 // REPORT-NOT: c-general.c:static_func           4       0 100.00%         4       0 100.00%         2       0 100.00%
-// REPORT:     TOTAL                           197      24  87.82%       234       8  96.58%
-// REPORT-NOT: TOTAL                           197      24  87.82%       234      13  94.44%       174      38  78.16%
+// REPORT:     TOTAL                           198      23  88.38%       186       7  96.24%
+// REPORT-NOT: TOTAL                           198      23  88.38%       186       7  96.24%       174      38  78.16%
 
diff --git a/llvm/test/tools/llvm-cov/branch-showBranchPercentage.test b/llvm/test/tools/llvm-cov/branch-showBranchPercentage.test
index 5365d4419c2e985..6bd7c647844f927 100644
--- a/llvm/test/tools/llvm-cov/branch-showBranchPercentage.test
+++ b/llvm/test/tools/llvm-cov/branch-showBranchPercentage.test
@@ -3,13 +3,13 @@
 // RUN: rm -rf %t.html.dir
 // RUN: yaml2obj %S/Inputs/branch-showBranchPercentage.yaml -o %t.o
 // RUN: llvm-profdata merge %S/Inputs/branch-showBranchPercentage.proftext -o %t.profdata
-// RUN: llvm-cov show --show-branches=percent %t.o -instr-profile %t.profdata -path-equivalence=/tmp,%S/Inputs | FileCheck %S/Inputs/branch-showBranchPercentage.c
+// RUN: llvm-cov show --show-branches=percent %t.o -instr-profile %t.profdata -path-equivalence=.,%S/Inputs | FileCheck %S/Inputs/branch-showBranchPercentage.c
 
 // RUN: llvm-profdata merge %S/Inputs/branch-showBranchPercentage.proftext -o %t.profdata
-// RUN: llvm-cov show --show-branches=percent %t.o -instr-profile %t.profdata -path-equivalence=/tmp,%S/Inputs -format html -o %t.html.dir
+// RUN: llvm-cov show --show-branches=percent %t.o -instr-profile %t.profdata -path-equivalence=.,%S/Inputs -format html -o %t.html.dir
 
 // Test html output.
-// RUN: FileCheck -check-prefix=HTML -input-file=%t.html.dir/coverage/tmp/branch-showBranchPercentage.c.html %s
+// RUN: FileCheck -check-prefix=HTML -input-file=%t.html.dir/coverage/branch-showBranchPercentage.c.html %s
 // HTML: Branch (<span class='line-number'><a name='L{{[0-9]+}}' href='#L{{[0-9]+}}'><span>{{.*}}16.67%,{{.*}}83.33%]
 // HTML: Branch (<span class='line-number'><a name='L{{[0-9]+}}' href='#L{{[0-9]+}}'><span>{{.*}}20.00%,{{.*}}80.00%]
 // HTML: Branch (<span class='line-number'><a name='L{{[0-9]+}}' href='#L{{[0-9]+}}'><span>{{.*}}0.00%,{{.*}}100.00%]
@@ -20,8 +20,8 @@
 // HTML: Branch (<span class='line-number'><a name='L{{[0-9]+}}' href='#L{{[0-9]+}}'><span>{{.*}}80.00%,{{.*}}20.00%]
 // HTML: Branch (<span class='line-number'><a name='L{{[0-9]+}}' href='#L{{[0-9]+}}'><span>{{.*}}25.00%,{{.*}}75.00%]
 // HTML: Branch (<span class='line-number'><a name='L{{[0-9]+}}' href='#L{{[0-9]+}}'><span>{{.*}}16.67%,{{.*}}83.33%]
-// HTML: Branch (<span class='line-number'><a name='L{{[0-9]+}}' href='#L{{[0-9]+}}'><span>{{.*}}20.00%,{{.*}}80.00%]
-// HTML: Branch (<span class='line-number'><a name='L{{[0-9]+}}' href='#L{{[0-9]+}}'><span>{{.*}}20.00%,{{.*}}80.00%]
-// HTML: Branch (<span class='line-number'><a name='L{{[0-9]+}}' href='#L{{[0-9]+}}'><span>{{.*}}0.00%,{{.*}}100.00%]
-// HTML: Branch (<span class='line-number'><a name='L{{[0-9]+}}' href='#L{{[0-9]+}}'><span>{{.*}}60.00%,{{.*}}40.00%]
+// HTML: Branch (<span class='line-number'><a name='L{{[0-9]+}}' href='#L{{[0-9]+}}'><span>{{.*}}100.00%,{{.*}}Folded]
+// HTML: Branch (<span class='line-number'><a name='L{{[0-9]+}}' href='#L{{[0-9]+}}'><span>{{.*}}100.00%,{{.*}}Folded]
+// HTML: Branch (<span class='line-number'><a name='L{{[0-9]+}}' href='#L{{[0-9]+}}'><span>{{.*}}0.00%,{{.*}}Folded]
+// HTML: Branch (<span class='line-number'><a name='L{{[0-9]+}}' href='#L{{[0-9]+}}'><span>{{.*}}100.00%,{{.*}}Folded]
 // HTML: Branch (<span class='line-number'><a name='L{{[0-9]+}}' href='#L{{[0-9]+}}'><span>{{.*}}90.91%,{{.*}}9.09%]
diff --git a/llvm/test/tools/llvm-cov/branch-templates.test b/llvm/test/tools/llvm-cov/branch-templates.test
index b29e2a9d033c253..a4cfc758b4479f3 100644
--- a/llvm/test/tools/llvm-cov/branch-templates.test
+++ b/llvm/test/tools/llvm-cov/branch-templates.test
@@ -1,8 +1,8 @@
 // RUN: yaml2obj %S/Inputs/branch-templates.yaml -o %t.o
 // RUN: llvm-profdata merge %S/Inputs/branch-templates.proftext -o %t.profdata
-// RUN: llvm-cov show --show-expansions --show-branches=count %t.o -instr-profile %t.profdata -path-equivalence=/tmp,%S/Inputs | FileCheck %S/Inputs/branch-templates.cpp
-// RUN: llvm-cov report --show-branch-summary %t.o -instr-profile %t.profdata -show-functions -path-equivalence=/tmp,%S/Inputs %S/Inputs/branch-templates.cpp | FileCheck %s -check-prefix=REPORT
-// RUN: llvm-cov report --show-branch-summary %t.o -instr-profile %t.profdata -path-equivalence=/tmp,%S/Inputs | FileCheck %s -check-prefix=REPORTFILE
+// RUN: llvm-cov show --show-expansions --show-branches=count %t.o -instr-profile %t.profdata -path-equivalence=.,%S/Inputs | FileCheck %S/Inputs/branch-templates.cpp
+// RUN: llvm-cov report --show-branch-summary %t.o -instr-profile %t.profdata -show-functions -path-equivalence=.,%S/Inputs %S/Inputs/branch-templates.cpp | FileCheck %s -check-prefix=REPORT
+// RUN: llvm-cov report --show-branch-summary %t.o -instr-profile %t.profdata -path-equivalence=.,%S/Inputs | FileCheck %s -check-prefix=REPORTFILE
 
 // REPORT:      Name                        Regions    Miss   Cover     Lines    Miss   Cover  Branches    Miss   Cover
 // REPORT-NEXT: ---
diff --git a/llvm/test/tools/llvm-cov/mcdc-const.test b/llvm/test/tools/llvm-cov/mcdc-const.test
index e6abaa1fa6da869..f940ff2ef9259a3 100644
--- a/llvm/test/tools/llvm-cov/mcdc-const.test
+++ b/llvm/test/tools/llvm-cov/mcdc-const.test
@@ -6,10 +6,10 @@
 
 //      CHECKGENERALCASE:  ------------------
 // CHECKGENERALCASE-NEXT:  |  Branch (12:8): [True: 4, False: 1]
-// CHECKGENERALCASE-NEXT:  |  Branch (12:13): [Folded - Ignored]
-// CHECKGENERALCASE-NEXT:  |  Branch (12:20): [Folded - Ignored]
+// CHECKGENERALCASE-NEXT:  |  Branch (12:13): [True: 4, Folded]
+// CHECKGENERALCASE-NEXT:  |  Branch (12:20): [Folded, False: 1]
 // CHECKGENERALCASE-NEXT:  |  Branch (12:25): [True: 0, False: 0]
-// CHECKGENERALCASE-NEXT:  |  Branch (12:31): [Folded - Ignored]
+// CHECKGENERALCASE-NEXT:  |  Branch (12:31): [Folded, False: 1]
 // CHECKGENERALCASE-NEXT:  ------------------
 // CHECKGENERALCASE-NEXT:  |---> MC/DC Decision Region (12:7) to (12:32)
 // CHECKGENERALCASE-NEXT:  |
diff --git a/llvm/test/tools/llvm-cov/mcdc-macro.test b/llvm/test/tools/llvm-cov/mcdc-macro.test
index 989c7d2fe3039b6..ec0bb3974984ee2 100644
--- a/llvm/test/tools/llvm-cov/mcdc-macro.test
+++ b/llvm/test/tools/llvm-cov/mcdc-macro.test
@@ -4,7 +4,7 @@
 // RUN: llvm-profdata merge %S/Inputs/mcdc-macro.proftext -o %t.profdata
 // RUN: llvm-cov show --show-expansions --show-branches=count --show-mcdc %t.o -instr-profile %t.profdata --compilation-dir=%S/Inputs | FileCheck %s
 
-// CHECK:  |  |  |  Branch (2:11): [Folded - Ignored]
+// CHECK:  |  |  |  Branch (2:11): [True: 1, Folded]
 // CHECK:  |  |  |  Branch (3:11): [True: 1, False: 0]
 // CHECK:  |  |  |  Branch (3:23): [True: 1, False: 0]
 // CHECK:  |  Branch (9:7): [True: 1, False: 0]
@@ -33,7 +33,7 @@
 // CHECK-NEXT:  |
 // CHECK-NEXT:  ------------------
 
-// CHECK:  |  |  |  Branch (2:11): [Folded - Ignored]
+// CHECK:  |  |  |  Branch (2:11): [True: 1, Folded]
 // CHECK:  |  Branch (11:7): [True: 1, False: 0]
 // CHECK-NEXT:  ------------------
 // CHECK-NEXT:  |---> MC/DC Decision Region (11:7) to (11:13)
@@ -54,7 +54,7 @@
 // CHECK-NEXT:  ------------------
 
 // CHECK:  |  |  |  Branch (1:11): [True: 1, False: 0]
-// CHECK:  |  |  |  Branch (2:11): [Folded - Ignored]
+// CHECK:  |  |  |  Branch (2:11): [True: 0, Folded]
 // CHECK:  |  |  |  |  |  Branch (3:11): [True: 0, False: 0]
 // CHECK:  |  |  |  |  |  Branch (3:23): [True: 0, False: 0]
 // CHECK:  |  Branch (13:7): [True: 1, False: 0]



More information about the llvm-branch-commits mailing list