
This patch implements the directive #pragma clang section on COFF targets with the exact same features available on ELF and Mach-O.
147 lines
5.4 KiB
LLVM
147 lines
5.4 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
|
|
;RUN: llc -mtriple=x86_64-windows-msvc %s -o - | FileCheck %s
|
|
;Test that global variables and functions are assigned to correct sections.
|
|
|
|
@a = global i32 0, align 4 #0
|
|
@b = global i32 1, align 4 #0
|
|
@c = global [4 x i32] zeroinitializer, align 4 #0
|
|
@d = global [5 x i16] zeroinitializer, align 2 #0
|
|
@e = global [6 x i16] [i16 0, i16 0, i16 1, i16 0, i16 0, i16 0], align 2 #0
|
|
@f = constant i32 2, align 4 #0
|
|
@h = global i32 0, align 4 #1
|
|
@i = global i32 0, align 4 #2
|
|
@j = constant i32 4, align 4 #2
|
|
@k = global i32 0, align 4 #2
|
|
@_ZZ3gooE7lstat_h = internal global i32 0, align 4 #2
|
|
@_ZL1g = internal global [2 x i32] zeroinitializer, align 4 #0
|
|
@l = global i32 5, align 4 #3
|
|
@m = constant i32 6, align 4 #3
|
|
@n = global i32 0, align 4
|
|
@o = global i32 6, align 4
|
|
@p = constant i32 7, align 4
|
|
|
|
declare i32 @zoo(ptr, ptr) #6
|
|
|
|
; Function Attrs: noinline nounwind
|
|
define i32 @hoo() #7 {
|
|
; CHECK-LABEL: hoo:
|
|
; CHECK: # %bb.0: # %entry
|
|
; CHECK-NEXT: movl b(%rip), %eax
|
|
; CHECK-NEXT: retq
|
|
entry:
|
|
%0 = load i32, ptr @b, align 4
|
|
ret i32 %0
|
|
}
|
|
|
|
attributes #0 = { "bss-section"="my_bss.1" "data-section"="my_data.1" "rodata-section"="my_rodata.1" }
|
|
attributes #1 = { "data-section"="my_data.1" "rodata-section"="my_rodata.1" }
|
|
attributes #2 = { "bss-section"="my_bss.2" "rodata-section"="my_rodata.1" }
|
|
attributes #3 = { "bss-section"="my_bss.2" "data-section"="my_data.2" "rodata-section"="my_rodata.2" }
|
|
attributes #6 = { "correctly-rounded-divide-sqrt-fp-math"="false" "denormal-fp-math"="preserve-sign,preserve-sign" "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
|
attributes #7 = { noinline nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "denormal-fp-math"="preserve-sign,preserve-sign" "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="true" "no-jump-tables"="false" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
|
|
|
!llvm.module.flags = !{!0, !1, !2, !3}
|
|
|
|
!0 = !{i32 1, !"wchar_size", i32 4}
|
|
!1 = !{i32 1, !"static_rwdata", i32 1}
|
|
!2 = !{i32 1, !"enumsize_buildattr", i32 2}
|
|
!3 = !{i32 1, !"armlib_unavailable", i32 0}
|
|
|
|
;CHECK: .section my_bss.1,"bw"
|
|
;CHECK: .globl a # @a
|
|
;CHECK: .p2align 2, 0x0
|
|
;CHECK: a:
|
|
;CHECK: .long 0 # 0x0
|
|
|
|
;CHECK: .section my_data.1,"dw"
|
|
;CHECK: .globl b # @b
|
|
;CHECK: .p2align 2, 0x0
|
|
;CHECK: b:
|
|
;CHECK: .long 1 # 0x1
|
|
|
|
;CHECK: .section my_bss.1,"bw"
|
|
;CHECK: .globl c # @c
|
|
;CHECK: .p2align 2, 0x0
|
|
;CHECK: c:
|
|
;CHECK: .zero 16
|
|
;CHECK: .globl d # @d
|
|
;CHECK: .p2align 1, 0x0
|
|
;CHECK: d:
|
|
;CHECK: .zero 10
|
|
|
|
;CHECK: .section my_data.1,"dw"
|
|
;CHECK: .globl e # @e
|
|
;CHECK: .p2align 1, 0x0
|
|
;CHECK: e:
|
|
;CHECK: .short 0 # 0x0
|
|
;CHECK: .short 0 # 0x0
|
|
;CHECK: .short 1 # 0x1
|
|
;CHECK: .short 0 # 0x0
|
|
;CHECK: .short 0 # 0x0
|
|
;CHECK: .short 0 # 0x0
|
|
|
|
;CHECK: .section my_rodata.1,"dr"
|
|
;CHECK: .globl f # @f
|
|
;CHECK: .p2align 2, 0x0
|
|
;CHECK: f:
|
|
;CHECK: .long 2 # 0x2
|
|
;CHECK: .bss
|
|
;CHECK: .globl h # @h
|
|
;CHECK: .p2align 2, 0x0
|
|
;CHECK: h:
|
|
;CHECK: .long 0 # 0x0
|
|
|
|
;CHECK: .section my_bss.2,"bw"
|
|
;CHECK: .globl i # @i
|
|
;CHECK: .p2align 2, 0x0
|
|
;CHECK: i:
|
|
;CHECK: .long 0 # 0x0
|
|
|
|
;CHECK: .section my_rodata.1,"dr"
|
|
;CHECK: .globl j # @j
|
|
;CHECK: .p2align 2, 0x0
|
|
;CHECK: j:
|
|
;CHECK: .long 4 # 0x4
|
|
|
|
;CHECK: .section my_bss.2,"bw"
|
|
;CHECK: .globl k # @k
|
|
;CHECK: .p2align 2, 0x0
|
|
;CHECK: k:
|
|
;CHECK: .long 0 # 0x0
|
|
;CHECK: .p2align 2, 0x0 # @_ZZ3gooE7lstat_h
|
|
;CHECK: _ZZ3gooE7lstat_h:
|
|
;CHECK: .long 0 # 0x0
|
|
|
|
;CHECK: .section my_bss.1,"bw"
|
|
;CHECK: .p2align 2, 0x0 # @_ZL1g
|
|
;CHECK: _ZL1g:
|
|
;CHECK: .zero 8
|
|
|
|
;CHECK: .section my_data.2,"dw"
|
|
;CHECK: .globl l # @l
|
|
;CHECK: .p2align 2, 0x0
|
|
;CHECK: l:
|
|
;CHECK: .long 5 # 0x5
|
|
|
|
;CHECK: .section my_rodata.2,"dr"
|
|
;CHECK: .globl m # @m
|
|
;CHECK: .p2align 2, 0x0
|
|
;CHECK: m:
|
|
;CHECK: .long 6 # 0x6
|
|
;CHECK: .bss
|
|
;CHECK: .globl n # @n
|
|
;CHECK: .p2align 2, 0x0
|
|
;CHECK: n:
|
|
;CHECK: .long 0 # 0x0
|
|
;CHECK: .data
|
|
;CHECK: .globl o # @o
|
|
;CHECK: .p2align 2, 0x0
|
|
;CHECK: o:
|
|
;CHECK: .long 6 # 0x6
|
|
|
|
;CHECK: .section .rdata,"dr"
|
|
;CHECK: .globl p # @p
|
|
;CHECK: .p2align 2, 0x0
|
|
;CHECK: p:
|
|
;CHECK: .long 7 # 0x7
|