103 lines · plain
1; RUN: llc < %s -mtriple=x86_64-w64-mingw32 | FileCheck %s -check-prefix=CHECK-X642; RUN: llc < %s -mtriple=x86_64-pc-cygwin | FileCheck %s -check-prefix=CHECK-X643; RUN: llc < %s -mtriple=i686-w64-mingw32 | FileCheck %s -check-prefix=CHECK-X864; RUN: llc < %s -mtriple=i686-w64-mingw32-none-elf | FileCheck %s -check-prefix=CHECK-X86-ELF5 6@var = external local_unnamed_addr global i32, align 47@dsolocalvar = external dso_local local_unnamed_addr global i32, align 48@localvar = dso_local local_unnamed_addr global i32 0, align 49@localcommon = common dso_local local_unnamed_addr global i32 0, align 410@extvar = external dllimport local_unnamed_addr global i32, align 411 12define dso_local i32 @getVar() {13; CHECK-X64-LABEL: getVar:14; CHECK-X64: movq .refptr.var(%rip), %rax15; CHECK-X64: movl (%rax), %eax16; CHECK-X64: retq17; CHECK-X86-LABEL: _getVar:18; CHECK-X86: movl .refptr._var, %eax19; CHECK-X86: movl (%eax), %eax20; CHECK-X86: retl21; CHECK-X86-ELF-LABEL: getVar:22; CHECK-X86-ELF: movl var, %eax23; CHECK-X86-ELF: retl24entry:25 %0 = load i32, ptr @var, align 426 ret i32 %027}28 29define dso_local i32 @getDsoLocalVar() {30; CHECK-X64-LABEL: getDsoLocalVar:31; CHECK-X64: movl dsolocalvar(%rip), %eax32; CHECK-X64: retq33; CHECK-X86-LABEL: _getDsoLocalVar:34; CHECK-X86: movl _dsolocalvar, %eax35; CHECK-X86: retl36entry:37 %0 = load i32, ptr @dsolocalvar, align 438 ret i32 %039}40 41define dso_local i32 @getLocalVar() {42; CHECK-X64-LABEL: getLocalVar:43; CHECK-X64: movl localvar(%rip), %eax44; CHECK-X64: retq45; CHECK-X86-LABEL: _getLocalVar:46; CHECK-X86: movl _localvar, %eax47; CHECK-X86: retl48entry:49 %0 = load i32, ptr @localvar, align 450 ret i32 %051}52 53define dso_local i32 @getLocalCommon() {54; CHECK-X64-LABEL: getLocalCommon:55; CHECK-X64: movl localcommon(%rip), %eax56; CHECK-X64: retq57; CHECK-X86-LABEL: _getLocalCommon:58; CHECK-X86: movl _localcommon, %eax59; CHECK-X86: retl60entry:61 %0 = load i32, ptr @localcommon, align 462 ret i32 %063}64 65define dso_local i32 @getExtVar() {66; CHECK-X64-LABEL: getExtVar:67; CHECK-X64: movq __imp_extvar(%rip), %rax68; CHECK-X64: movl (%rax), %eax69; CHECK-X64: retq70; CHECK-X86-LABEL: _getExtVar:71; CHECK-X86: movl __imp__extvar, %eax72; CHECK-X86: movl (%eax), %eax73; CHECK-X86: retl74; CHECK-X86-ELF-LABEL: getExtVar:75; CHECK-X86-ELF: movl extvar, %eax76; CHECK-X86-ELF: retl77entry:78 %0 = load i32, ptr @extvar, align 479 ret i32 %080}81 82define dso_local void @callFunc() {83; CHECK-X64-LABEL: callFunc:84; CHECK-X64: jmp otherFunc85; CHECK-X86-LABEL: _callFunc:86; CHECK-X86: jmp _otherFunc87entry:88 tail call void @otherFunc()89 ret void90}91 92declare dso_local void @otherFunc()93 94; CHECK-X64: .section .rdata$.refptr.var,"dr",discard,.refptr.var95; CHECK-X64: .globl .refptr.var96; CHECK-X64: .refptr.var:97; CHECK-X64: .quad var98 99; CHECK-X86: .section .rdata$.refptr._var,"dr",discard,.refptr._var100; CHECK-X86: .globl .refptr._var101; CHECK-X86: .refptr._var:102; CHECK-X86: .long _var103