Skip to content

Commit 922700d

Browse files
committed
Revert "[X86] Change how we treat functions with explicit sections as small/large (#87838)"
This reverts commit e27c373. Breaks ExecutionEngine/MCJIT/test-global-ctors.ll on windows, e.g. https://lab.llvm.org/buildbot/#/builders/117/builds/18749.
1 parent e127997 commit 922700d

File tree

2 files changed

+6
-37
lines changed

2 files changed

+6
-37
lines changed

llvm/lib/Target/TargetMachine.cpp

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -51,20 +51,9 @@ bool TargetMachine::isLargeGlobalValue(const GlobalValue *GVal) const {
5151

5252
auto *GV = dyn_cast<GlobalVariable>(GO);
5353

54-
auto IsPrefix = [](StringRef Name, StringRef Prefix) {
55-
return Name.consume_front(Prefix) && (Name.empty() || Name[0] == '.');
56-
};
57-
5854
// Functions/GlobalIFuncs are only large under the large code model.
59-
if (!GV) {
60-
// Handle explicit sections as we do for GlobalVariables with an explicit
61-
// section, see comments below.
62-
if (GO->hasSection()) {
63-
StringRef Name = GO->getSection();
64-
return IsPrefix(Name, ".ltext");
65-
}
55+
if (!GV)
6656
return getCodeModel() == CodeModel::Large;
67-
}
6857

6958
if (GV->isThreadLocal())
7059
return false;
@@ -84,8 +73,11 @@ bool TargetMachine::isLargeGlobalValue(const GlobalValue *GVal) const {
8473
// data sections. The code model attribute overrides this above.
8574
if (GV->hasSection()) {
8675
StringRef Name = GV->getSection();
87-
return IsPrefix(Name, ".lbss") || IsPrefix(Name, ".ldata") ||
88-
IsPrefix(Name, ".lrodata");
76+
auto IsPrefix = [&](StringRef Prefix) {
77+
StringRef S = Name;
78+
return S.consume_front(Prefix) && (S.empty() || S[0] == '.');
79+
};
80+
return IsPrefix(".lbss") || IsPrefix(".ldata") || IsPrefix(".lrodata");
8981
}
9082

9183
// Respect large data threshold for medium and large code models.

llvm/test/CodeGen/X86/code-model-elf-text-sections.ll

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,36 +13,13 @@
1313
; RUN: llvm-readelf -S %t | FileCheck %s --check-prefix=LARGE-DS
1414

1515
; SMALL: .text {{.*}} AX {{.*}}
16-
; SMALL: .ltext {{.*}} AXl {{.*}}
17-
; SMALL: .ltext.2 {{.*}} AXl {{.*}}
18-
; SMALL: .foo {{.*}} AX {{.*}}
1916
; SMALL-DS: .text.func {{.*}} AX {{.*}}
20-
; SMALL-DS: .ltext {{.*}} AXl {{.*}}
21-
; SMALL-DS: .ltext.2 {{.*}} AXl {{.*}}
22-
; SMALL-DS: .foo {{.*}} AX {{.*}}
2317
; LARGE: .ltext {{.*}} AXl {{.*}}
24-
; LARGE: .ltext.2 {{.*}} AXl {{.*}}
25-
; LARGE: .foo {{.*}} AX {{.*}}
2618
; LARGE-DS: .ltext.func {{.*}} AXl {{.*}}
27-
; LARGE-DS: .ltext {{.*}} AXl {{.*}}
28-
; LARGE-DS: .ltext.2 {{.*}} AXl {{.*}}
29-
; LARGE-DS: .foo {{.*}} AX {{.*}}
3019

3120
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
3221
target triple = "x86_64--linux"
3322

3423
define void @func() {
3524
ret void
3625
}
37-
38-
define void @ltext() section ".ltext" {
39-
ret void
40-
}
41-
42-
define void @ltext2() section ".ltext.2" {
43-
ret void
44-
}
45-
46-
define void @foo() section ".foo" {
47-
ret void
48-
}

0 commit comments

Comments
 (0)