28 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -O0 -fast-isel -verify-machineinstrs -mtriple=x86_64 < %s | FileCheck %s3 4declare { ptr, i64 } @get()5 6declare void @use(ptr, i64)7 8define void @test(ptr %p) nounwind {9; CHECK-LABEL: test:10; CHECK: # %bb.0:11; CHECK-NEXT: pushq %rax12; CHECK-NEXT: movq %rdi, (%rsp) # 8-byte Spill13; CHECK-NEXT: callq get@PLT14; CHECK-NEXT: movq (%rsp), %rdi # 8-byte Reload15; CHECK-NEXT: movq %rdx, %rsi16; CHECK-NEXT: movq %rsi, (%rdi)17; CHECK-NEXT: # implicit-def: $rdi18; CHECK-NEXT: callq use@PLT19; CHECK-NEXT: popq %rax20; CHECK-NEXT: retq21 %struct = call { ptr, i64 } @get()22 %struct.1 = extractvalue { ptr, i64 } %struct, 123 store i64 %struct.1, ptr %p, align 824 %struct.2 = extractvalue { ptr, i64 } %struct, 125 call void @use(ptr undef, i64 %struct.2)26 ret void27}28