
Following #78348, we should treat functions with an explicit section as small, unless the section name is (or has the prefix) ".ltext". Clang emits global initializers into a ".text.startup" section on Linux. If we mix small/medium code model object files with large code model object files, we'll end up mixing sections with and without the large section flag. Reland of #87838 with a check for non-ELF platforms in TargetMachine::isLargeGlobalValue(), otherwise MCJIT on Windows tests fail.
49 lines
1.7 KiB
LLVM
49 lines
1.7 KiB
LLVM
; RUN: llc < %s -relocation-model=pic -filetype=obj -code-model=small -o %t
|
|
; RUN: llvm-readelf -S %t | FileCheck %s --check-prefix=SMALL
|
|
; RUN: llc < %s -relocation-model=pic -filetype=obj -code-model=medium -o %t
|
|
; RUN: llvm-readelf -S %t | FileCheck %s --check-prefix=SMALL
|
|
; RUN: llc < %s -relocation-model=pic -filetype=obj -code-model=large -o %t
|
|
; RUN: llvm-readelf -S %t | FileCheck %s --check-prefix=LARGE
|
|
|
|
; RUN: llc < %s -relocation-model=pic -filetype=obj -code-model=small -function-sections -o %t
|
|
; RUN: llvm-readelf -S %t | FileCheck %s --check-prefix=SMALL-DS
|
|
; RUN: llc < %s -relocation-model=pic -filetype=obj -code-model=medium -function-sections -o %t
|
|
; RUN: llvm-readelf -S %t | FileCheck %s --check-prefix=SMALL-DS
|
|
; RUN: llc < %s -relocation-model=pic -filetype=obj -code-model=large -function-sections -o %t
|
|
; RUN: llvm-readelf -S %t | FileCheck %s --check-prefix=LARGE-DS
|
|
|
|
; SMALL: .text {{.*}} AX {{.*}}
|
|
; SMALL: .ltext {{.*}} AXl {{.*}}
|
|
; SMALL: .ltext.2 {{.*}} AXl {{.*}}
|
|
; SMALL: .foo {{.*}} AX {{.*}}
|
|
; SMALL-DS: .text.func {{.*}} AX {{.*}}
|
|
; SMALL-DS: .ltext {{.*}} AXl {{.*}}
|
|
; SMALL-DS: .ltext.2 {{.*}} AXl {{.*}}
|
|
; SMALL-DS: .foo {{.*}} AX {{.*}}
|
|
; LARGE: .ltext {{.*}} AXl {{.*}}
|
|
; LARGE: .ltext.2 {{.*}} AXl {{.*}}
|
|
; LARGE: .foo {{.*}} AX {{.*}}
|
|
; LARGE-DS: .ltext.func {{.*}} AXl {{.*}}
|
|
; LARGE-DS: .ltext {{.*}} AXl {{.*}}
|
|
; LARGE-DS: .ltext.2 {{.*}} AXl {{.*}}
|
|
; LARGE-DS: .foo {{.*}} AX {{.*}}
|
|
|
|
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
|
target triple = "x86_64--linux"
|
|
|
|
define void @func() {
|
|
ret void
|
|
}
|
|
|
|
define void @ltext() section ".ltext" {
|
|
ret void
|
|
}
|
|
|
|
define void @ltext2() section ".ltext.2" {
|
|
ret void
|
|
}
|
|
|
|
define void @foo() section ".foo" {
|
|
ret void
|
|
}
|