; 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" "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" "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
