; RUN: llc < %s -mtriple=i386-unknown-linux-gnu | FileCheck %s -check-prefix=LINUX
; RUN: llc < %s -mtriple=i386-apple-darwin9.7 | FileCheck %s -check-prefix=DARWIN
; RUN: llc < %s -mtriple=i386-apple-darwin10 -relocation-model=static | FileCheck %s -check-prefix=DARWIN-STATIC
; RUN: llc < %s -mtriple=x86_64-apple-darwin10 | FileCheck %s -check-prefix=DARWIN64
; RUN: llc < %s -mtriple=i386-unknown-linux-gnu -data-sections -function-sections | FileCheck %s -check-prefix=LINUX-SECTIONS
; RUN: llc < %s -mtriple=i386-unknown-linux-gnu -function-sections | FileCheck %s -check-prefix=LINUX-FUNC-SECTIONS
; RUN: llc < %s -mtriple=x86_64-pc-linux -data-sections -function-sections -relocation-model=pic | FileCheck %s -check-prefix=LINUX-SECTIONS-PIC
; RUN: llc < %s -mtriple=i686-pc-win32 -data-sections -function-sections | FileCheck %s -check-prefix=WIN32-SECTIONS
; RUN: llc < %s -mtriple=i686-pc-win32 -function-sections | FileCheck %s -check-prefix=WIN32-FUNC-SECTIONS

define void @F1() {
  ret void
}

; WIN32-SECTIONS: .section        .text,"xr",one_only,_F1
; WIN32-SECTIONS: .globl _F1

define void @F2(i32 %y) {
bb0:
switch i32 %y, label %bb5 [
    i32 1, label %bb1
    i32 2, label %bb2
    i32 3, label %bb3
    i32 4, label %bb4
  ]
bb1:
  ret void
bb2:
  ret void
bb3:
  ret void
bb4:
  ret void
bb5:
  ret void
}

; LINUX:     .size   F2,
; LINUX-NEX: .cfi_endproc
; LINUX-NEX: .section        .rodata,"a",@progbits

; LINUX-SECTIONS: .section        .text.F2,"ax",@progbits
; LINUX-SECTIONS: .size   F2,
; LINUX-SECTIONS-NEXT: .cfi_endproc
; LINUX-SECTIONS-NEXT: .section        .rodata.F2,"a",@progbits

; LINUX-FUNC-SECTIONS: .section        .text.F2,"ax",@progbits
; LINUX-FUNC-SECTIONS: .size   F2,
; LINUX-FUNC-SECTIONS-NEXT: .cfi_endproc
; LINUX-FUNC-SECTIONS-NEXT: .section        .rodata.F2,"a",@progbits

; WIN32-FUNC-SECTIONS: .section        .text,"xr",one_only,_F2
; WIN32-FUNC-SECTIONS-NOT: .section
; WIN32-FUNC-SECTIONS: .section        .rdata,"dr",associative,_F2


; LINUX-SECTIONS-PIC: .section        .text.F2,"ax",@progbits
; LINUX-SECTIONS-PIC: .size   F2,
; LINUX-SECTIONS-PIC-NEXT: .cfi_endproc
; LINUX-SECTIONS-PIC-NEXT: .section        .rodata.F2,"a",@progbits

declare void @G()

define void @F3(i32 %y) personality i8* bitcast (void ()* @G to i8*) {
bb0:
  invoke void @G()
          to label %bb2 unwind label %bb1
bb1:
  landingpad { i8*, i32 }
          catch i8* null
  br label %bb2
bb2:

switch i32 %y, label %bb7 [
    i32 1, label %bb3
    i32 2, label %bb4
    i32 3, label %bb5
    i32 4, label %bb6
  ]
bb3:
  ret void
bb4:
  ret void
bb5:
  ret void
bb6:
  ret void
bb7:
  ret void
}

; DARWIN64: _F3:
; DARWIN64: Lfunc_end
; DARWIN64-NEXT: .cfi_endproc
; DARWIN64-NOT: .section
; DARWIN64: LJTI{{.*}}:
; DARWIN64-NEXT: .long
; DARWIN64-NEXT: .long
; DARWIN64-NEXT: .long
; DARWIN64-NEXT: .long
; DARWIN64-NEXT: .section        __TEXT,__gcc_except_tab

; int G1;
@G1 = common global i32 0

; LINUX: .type   G1,@object
; LINUX: .comm  G1,4,4

; DARWIN: .comm _G1,4,2




; const int G2 __attribute__((weak)) = 42;
@G2 = weak_odr unnamed_addr constant i32 42     


; TODO: linux drops this into .rodata, we drop it into ".gnu.linkonce.r.G2"

; DARWIN: .section __TEXT,__const_coal,coalesced
; DARWIN: _G2:
; DARWIN:    .long 42


; int * const G3 = &G1;
@G3 = unnamed_addr constant i32* @G1

; DARWIN: .section        __DATA,__const
; DARWIN: .globl _G3
; DARWIN: _G3:
; DARWIN:     .long _G1

; LINUX:   .section        .rodata,"a",@progbits
; LINUX:   .globl  G3

; LINUX-SECTIONS: .section        .rodata.G3,"a",@progbits
; LINUX-SECTIONS: .globl  G3

; WIN32-SECTIONS: .section        .rdata,"dr",one_only,_G3
; WIN32-SECTIONS: .globl  _G3


; _Complex long long const G4 = 34;
@G4 = private unnamed_addr constant {i64,i64} { i64 34, i64 0 }

; DARWIN: .section        __TEXT,__literal16,16byte_literals
; DARWIN: L_G4:
; DARWIN:     .long 34

; DARWIN-STATIC: .section        __TEXT,__literal16,16byte_literals
; DARWIN-STATIC: L_G4:
; DARWIN-STATIC:     .long 34

; DARWIN64: .section        __TEXT,__literal16,16byte_literals
; DARWIN64: L_G4:
; DARWIN64:     .quad 34

; int G5 = 47;
@G5 = global i32 47

; LINUX: .data
; LINUX: .globl G5
; LINUX: G5:
; LINUX:    .long 47

; DARWIN: .section        __DATA,__data
; DARWIN: .globl _G5
; DARWIN: _G5:
; DARWIN:    .long 47


; PR4584
@"foo bar" = linkonce global i32 42

; LINUX: .type  "foo bar",@object
; LINUX: .weak  "foo bar"
; LINUX: "foo bar":

; DARWIN: .section              __DATA,__datacoal_nt,coalesced
; DARWIN: .globl        "_foo bar"
; DARWIN:       .weak_definition "_foo bar"
; DARWIN: "_foo bar":

; PR4650
@G6 = weak_odr unnamed_addr constant [1 x i8] c"\01"

; LINUX:   .type        G6,@object
; LINUX:   .weak        G6
; LINUX: G6:
; LINUX:   .byte        1
; LINUX:   .size        G6, 1

; DARWIN:  .section __TEXT,__const_coal,coalesced
; DARWIN:  .globl _G6
; DARWIN:  .weak_definition _G6
; DARWIN:_G6:
; DARWIN:  .byte 1


@G7 = unnamed_addr constant [10 x i8] c"abcdefghi\00"

; DARWIN:       __TEXT,__cstring,cstring_literals
; DARWIN:       .globl _G7
; DARWIN: _G7:
; DARWIN:       .asciz  "abcdefghi"

; LINUX:        .section        .rodata.str1.1,"aMS",@progbits,1
; LINUX:        .globl G7
; LINUX: G7:
; LINUX:        .asciz  "abcdefghi"

; LINUX-SECTIONS: .section        .rodata.str1.1,"aMS",@progbits,1
; LINUX-SECTIONS:       .globl G7

; WIN32-SECTIONS: .section        .rdata,"dr",one_only,_G7
; WIN32-SECTIONS:       .globl _G7


@G8 = unnamed_addr constant [4 x i16] [ i16 1, i16 2, i16 3, i16 0 ]

; DARWIN:       .section        __TEXT,__const
; DARWIN:       .globl _G8
; DARWIN: _G8:

; LINUX:        .section        .rodata.str2.2,"aMS",@progbits,2
; LINUX:        .globl G8
; LINUX:G8:

@G9 = unnamed_addr constant [4 x i32] [ i32 1, i32 2, i32 3, i32 0 ]

; DARWIN:       .globl _G9
; DARWIN: _G9:

; LINUX:        .section        .rodata.str4.4,"aMS",@progbits,4
; LINUX:        .globl G9
; LINUX:G9


@G10 = weak global [100 x i32] zeroinitializer, align 32 ; <[100 x i32]*> [#uses=0]


; DARWIN:       .section        __DATA,__datacoal_nt,coalesced
; DARWIN: .globl _G10
; DARWIN:       .weak_definition _G10
; DARWIN:       .align  5
; DARWIN: _G10:
; DARWIN:       .space  400

; LINUX:        .bss
; LINUX:        .weak   G10
; LINUX:        .align  32
; LINUX: G10:
; LINUX:        .zero   400



;; Zero sized objects should round up to 1 byte in zerofill directives.
; rdar://7886017
@G11 = global [0 x i32] zeroinitializer
@G12 = global {} zeroinitializer
@G13 = global { [0 x {}] } zeroinitializer

; DARWIN: .globl _G11
; DARWIN: .zerofill __DATA,__common,_G11,1,2
; DARWIN: .globl _G12
; DARWIN: .zerofill __DATA,__common,_G12,1,3
; DARWIN: .globl _G13
; DARWIN: .zerofill __DATA,__common,_G13,1,3

@G14 = private unnamed_addr constant [4 x i8] c"foo\00", align 1

; LINUX-SECTIONS:        .type   .LG14,@object           # @G14
; LINUX-SECTIONS:        .section        .rodata.str1.1,"aMS",@progbits,1
; LINUX-SECTIONS: .LG14:
; LINUX-SECTIONS:        .asciz  "foo"
; LINUX-SECTIONS:        .size   .LG14, 4

; WIN32-SECTIONS:        .section        .rdata,"dr",one_only,_G14
; WIN32-SECTIONS: _G14:
; WIN32-SECTIONS:        .asciz  "foo"

; cannot be merged on MachO, but can on other formats.
@G15 = unnamed_addr constant i64 0

; LINUX: .section        .rodata.cst8,"aM",@progbits,8
; LINUX: G15:

; DARWIN: .section      __TEXT,__const
; DARWIN: _G15:

; DARWIN-STATIC: .section       __TEXT,__const
; DARWIN-STATIC: _G15:

; DARWIN64: .section       __TEXT,__const
; DARWIN64: _G15:

; LINUX-SECTIONS: .section      .rodata.cst8,"aM",@progbits,8
; LINUX-SECTIONS: G15:

; WIN32-SECTIONS: .section      .rdata,"dr",one_only,_G15
; WIN32-SECTIONS: _G15:
