brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · 82a90ab Raw
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