xref: /llvm-project/llvm/test/CodeGen/X86/pr23603.ll (revision 189900eb149bb55ae3787346f57c1ccbdc50fb3c)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc < %s -mtriple=x86_64-unknown-unknown | FileCheck %s
3
4declare void @free_v()
5
6define void @f(ptr %x, i32 %c32, ptr %y) nounwind {
7; CHECK-LABEL: f:
8; CHECK:       # %bb.0: # %entry
9; CHECK-NEXT:    pushq %rbp
10; CHECK-NEXT:    pushq %r14
11; CHECK-NEXT:    pushq %rbx
12; CHECK-NEXT:    movq %rdx, %rbx
13; CHECK-NEXT:    movl %esi, %ebp
14; CHECK-NEXT:    movl (%rdi), %r14d
15; CHECK-NEXT:    callq free_v@PLT
16; CHECK-NEXT:    testl %ebp, %ebp
17; CHECK-NEXT:    je .LBB0_2
18; CHECK-NEXT:  # %bb.1: # %left
19; CHECK-NEXT:    movl %r14d, (%rbx)
20; CHECK-NEXT:  .LBB0_2: # %merge
21; CHECK-NEXT:    popq %rbx
22; CHECK-NEXT:    popq %r14
23; CHECK-NEXT:    popq %rbp
24; CHECK-NEXT:    retq
25 entry:
26  %v = load i32, ptr %x, !invariant.load !0
27  call void @free_v()
28  %c = icmp ne i32 %c32, 0
29  br i1 %c, label %left, label %merge
30
31 left:
32  store i32 %v, ptr %y
33  br label %merge
34
35 merge:
36  ret void
37}
38
39!0 = !{}
40