brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · dae72ed Raw
42 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=m68k-linux -verify-machineinstrs | FileCheck %s3 4%struct.va_list = type { ptr }5 6define i32 @test(i32 %X, ...) {7  ; Initialize variable argument processing8; CHECK-LABEL: test:9; CHECK:         .cfi_startproc10; CHECK-NEXT:  ; %bb.0:11; CHECK-NEXT:    suba.l #8, %sp12; CHECK-NEXT:    .cfi_def_cfa_offset -1213; CHECK-NEXT:    lea (16,%sp), %a014; CHECK-NEXT:    move.l %a0, %d015; CHECK-NEXT:    add.l #4, %d016; CHECK-NEXT:    move.l %d0, (4,%sp)17; CHECK-NEXT:    move.l %d0, (0,%sp)18; CHECK-NEXT:    move.l (16,%sp), %d019; CHECK-NEXT:    adda.l #8, %sp20; CHECK-NEXT:    rts21  %ap = alloca %struct.va_list22  %ap2 = bitcast ptr %ap to ptr23  call void @llvm.va_start(ptr %ap2)24 25  ; Read a single integer argument26  %tmp = va_arg ptr %ap2, i3227 28  ; Demonstrate usage of llvm.va_copy and llvm.va_end29  %aq = alloca ptr30  %aq2 = bitcast ptr %aq to ptr31  call void @llvm.va_copy(ptr %aq2, ptr %ap2)32  call void @llvm.va_end(ptr %aq2)33 34  ; Stop processing of arguments.35  call void @llvm.va_end(ptr %ap2)36  ret i32 %tmp37}38 39declare void @llvm.va_start(ptr)40declare void @llvm.va_copy(ptr, ptr)41declare void @llvm.va_end(ptr)42