[lld] [ELF] Fix assertion in cdsort (PR #71708)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 8 09:29:57 PST 2023
https://github.com/spupyrev created https://github.com/llvm/llvm-project/pull/71708
None
>From b96c40f561f070ec920d3f1f6046bdd2ca6e2ab9 Mon Sep 17 00:00:00 2001
From: spupyrev <spupyrev at fb.com>
Date: Wed, 8 Nov 2023 09:28:27 -0800
Subject: [PATCH] [ELF] Fix assertion in cdsort
---
lld/ELF/CallGraphSort.cpp | 2 +-
lld/test/ELF/cgprofile-txt2.s | 11 +++++++++++
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/lld/ELF/CallGraphSort.cpp b/lld/ELF/CallGraphSort.cpp
index 5e36964da94fc52..bd8fef2dea010bd 100644
--- a/lld/ELF/CallGraphSort.cpp
+++ b/lld/ELF/CallGraphSort.cpp
@@ -30,6 +30,7 @@
#include "llvm/Support/FileSystem.h"
#include "llvm/Transforms/Utils/CodeLayout.h"
+#include <iostream>
#include <numeric>
using namespace llvm;
@@ -287,7 +288,6 @@ DenseMap<const InputSectionBase *, int> elf::computeCacheDirectedSortOrder() {
if (res.second) {
// inSec does not appear before in the graph.
sections.push_back(inSec);
- assert(inSec->getSize() > 0 && "found a function with zero size");
funcSizes.push_back(inSec->getSize());
funcCounts.push_back(0);
}
diff --git a/lld/test/ELF/cgprofile-txt2.s b/lld/test/ELF/cgprofile-txt2.s
index b59b6eeb292fabf..bb9e78a4a2e9c2b 100644
--- a/lld/test/ELF/cgprofile-txt2.s
+++ b/lld/test/ELF/cgprofile-txt2.s
@@ -5,11 +5,13 @@
# RUN: echo "B C 50" >> %t.call_graph
# RUN: echo "C D 40" >> %t.call_graph
# RUN: echo "D B 10" >> %t.call_graph
+# RUN: echo "D E 1" >> %t.call_graph
# RUN: ld.lld -e A %t --call-graph-ordering-file %t.call_graph --call-graph-profile-sort=hfsort -o %t2
# RUN: llvm-readobj --symbols %t2 | FileCheck %s --check-prefix=CHECKC3
# RUN: ld.lld -e A %t --call-graph-ordering-file %t.call_graph --call-graph-profile-sort=cdsort -o %t2
# RUN: llvm-readobj --symbols %t2 | FileCheck %s --check-prefix=CHECKCDS
+## The expected order is [B, C, D, E, A]
# CHECKC3: Name: A
# CHECKC3-NEXT: Value: 0x201123
# CHECKC3: Name: B
@@ -18,7 +20,10 @@
# CHECKC3-NEXT: Value: 0x201121
# CHECKC3: Name: D
# CHECKC3-NEXT: Value: 0x201122
+# CHECKC3: Name: E
+# CHECKC3-NEXT: Value: 0x201123
+## The expected order is [A, B, C, D, E]
# CHECKCDS: Name: A
# CHECKCDS-NEXT: Value: 0x201120
# CHECKCDS: Name: B
@@ -27,6 +32,8 @@
# CHECKCDS-NEXT: Value: 0x201122
# CHECKCDS: Name: D
# CHECKCDS-NEXT: Value: 0x201123
+# CHECKCDS: Name: E
+# CHECKCDS-NEXT: Value: 0x201124
.section .text.A,"ax", at progbits
.globl A
@@ -47,3 +54,7 @@ C:
.globl D
D:
nop
+
+.section .text.E,"ax", at progbits
+.globl E
+E:
More information about the llvm-commits
mailing list