brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.3 KiB · 02c8144 Raw
139 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc < %s -mtriple=aarch64-w64-mingw32 | FileCheck %s --check-prefixes=CHECK,CHECK-SD3; RUN: llc < %s -mtriple=aarch64-w64-mingw32 -global-isel | FileCheck %s --check-prefixes=CHECK,CHECK-GI4 5@var = external local_unnamed_addr global i32, align 46@dsolocalvar = external dso_local local_unnamed_addr global i32, align 47@localvar = dso_local local_unnamed_addr global i32 0, align 48@localcommon = common dso_local local_unnamed_addr global i32 0, align 49@extvar = external dllimport local_unnamed_addr global i32, align 410 11define dso_local i32 @getVar() {12; CHECK-LABEL: getVar:13; CHECK:       // %bb.0: // %entry14; CHECK-NEXT:    adrp x8, .refptr.var15; CHECK-NEXT:    ldr x8, [x8, :lo12:.refptr.var]16; CHECK-NEXT:    ldr w0, [x8]17; CHECK-NEXT:    ret18entry:19  %0 = load i32, ptr @var, align 420  ret i32 %021}22 23define dso_local i32 @getDsoLocalVar() {24; CHECK-LABEL: getDsoLocalVar:25; CHECK:       // %bb.0: // %entry26; CHECK-NEXT:    adrp x8, dsolocalvar27; CHECK-NEXT:    ldr w0, [x8, :lo12:dsolocalvar]28; CHECK-NEXT:    ret29entry:30  %0 = load i32, ptr @dsolocalvar, align 431  ret i32 %032}33 34define dso_local i32 @getLocalVar() {35; CHECK-LABEL: getLocalVar:36; CHECK:       // %bb.0: // %entry37; CHECK-NEXT:    adrp x8, localvar38; CHECK-NEXT:    ldr w0, [x8, :lo12:localvar]39; CHECK-NEXT:    ret40entry:41  %0 = load i32, ptr @localvar, align 442  ret i32 %043}44 45define dso_local i32 @getLocalCommon() {46; CHECK-LABEL: getLocalCommon:47; CHECK:       // %bb.0: // %entry48; CHECK-NEXT:    adrp x8, localcommon49; CHECK-NEXT:    ldr w0, [x8, :lo12:localcommon]50; CHECK-NEXT:    ret51entry:52  %0 = load i32, ptr @localcommon, align 453  ret i32 %054}55 56define dso_local i32 @getExtVar() {57; CHECK-LABEL: getExtVar:58; CHECK:       // %bb.0: // %entry59; CHECK-NEXT:    adrp x8, __imp_extvar60; CHECK-NEXT:    ldr x8, [x8, :lo12:__imp_extvar]61; CHECK-NEXT:    ldr w0, [x8]62; CHECK-NEXT:    ret63entry:64  %0 = load i32, ptr @extvar, align 465  ret i32 %066}67 68define dso_local void @callFunc() {69; CHECK-LABEL: callFunc:70; CHECK:       // %bb.0: // %entry71; CHECK-NEXT:    b otherFunc72entry:73  tail call void @otherFunc()74  ret void75}76 77declare dso_local void @otherFunc()78 79define dso_local void @sspFunc() #0 {80; CHECK-LABEL: sspFunc:81; CHECK:       .seh_proc sspFunc82; CHECK-NEXT:  // %bb.0: // %entry83; CHECK-NEXT:    sub sp, sp, #3284; CHECK-NEXT:    .seh_stackalloc 3285; CHECK-NEXT:    str x30, [sp, #16] // 8-byte Spill86; CHECK-NEXT:    .seh_save_reg x30, 1687; CHECK-NEXT:    .seh_endprologue88; CHECK-NEXT:    adrp x8, .refptr.__stack_chk_guard89; CHECK-NEXT:    add x0, sp, #790; CHECK-NEXT:    ldr x8, [x8, :lo12:.refptr.__stack_chk_guard]91; CHECK-NEXT:    ldr x8, [x8]92; CHECK-NEXT:    str x8, [sp, #8]93; CHECK-NEXT:    bl ptrUser94; CHECK-NEXT:    adrp x8, .refptr.__stack_chk_guard95; CHECK-NEXT:    ldr x8, [x8, :lo12:.refptr.__stack_chk_guard]96; CHECK-NEXT:    ldr x9, [sp, #8]97; CHECK-NEXT:    ldr x8, [x8]98; CHECK-NEXT:    cmp x8, x999; CHECK-NEXT:    b.ne .LBB6_2100; CHECK-NEXT:  // %bb.1: // %entry101; CHECK-NEXT:    .seh_startepilogue102; CHECK-NEXT:    ldr x30, [sp, #16] // 8-byte Reload103; CHECK-NEXT:    .seh_save_reg x30, 16104; CHECK-NEXT:    add sp, sp, #32105; CHECK-NEXT:    .seh_stackalloc 32106; CHECK-NEXT:    .seh_endepilogue107; CHECK-NEXT:    ret108; CHECK-NEXT:  .LBB6_2: // %entry109; CHECK-NEXT:    bl __stack_chk_fail110; CHECK-NEXT:    brk #0x1111; CHECK-NEXT:    .seh_endfunclet112; CHECK-NEXT:    .seh_endproc113entry:114  %c = alloca i8, align 1115  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %c)116  call void @ptrUser(ptr nonnull %c)117  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %c)118  ret void119}120 121declare void @llvm.lifetime.start.p0(i64, ptr nocapture)122declare dso_local void @ptrUser(ptr) local_unnamed_addr #2123declare void @llvm.lifetime.end.p0(i64, ptr nocapture)124 125attributes #0 = { sspstrong }126 127; CHECK:        .section        .rdata$.refptr.__stack_chk_guard,"dr",discard,.refptr.__stack_chk_guard128; CHECK:        .globl  .refptr.__stack_chk_guard129; CHECK: .refptr.__stack_chk_guard:130; CHECK:        .xword  __stack_chk_guard131; CHECK:        .section        .rdata$.refptr.var,"dr",discard,.refptr.var132; CHECK:        .globl  .refptr.var133; CHECK: .refptr.var:134; CHECK:        .xword  var135 136;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:137; CHECK-GI: {{.*}}138; CHECK-SD: {{.*}}139