; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc < %s -mtriple=x86_64-unknown-unknown | FileCheck %s declare void @free_v() define void @f(ptr %x, i32 %c32, ptr %y) nounwind { ; CHECK-LABEL: f: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: pushq %rbp ; CHECK-NEXT: pushq %r14 ; CHECK-NEXT: pushq %rbx ; CHECK-NEXT: movq %rdx, %r14 ; CHECK-NEXT: movl %esi, %ebp ; CHECK-NEXT: movl (%rdi), %ebx ; CHECK-NEXT: callq free_v@PLT ; CHECK-NEXT: testl %ebp, %ebp ; CHECK-NEXT: je .LBB0_2 ; CHECK-NEXT: # %bb.1: # %left ; CHECK-NEXT: movl %ebx, (%r14) ; CHECK-NEXT: .LBB0_2: # %merge ; CHECK-NEXT: popq %rbx ; CHECK-NEXT: popq %r14 ; CHECK-NEXT: popq %rbp ; CHECK-NEXT: retq entry: %v = load i32, ptr %x, !invariant.load !0 call void @free_v() %c = icmp ne i32 %c32, 0 br i1 %c, label %left, label %merge left: store i32 %v, ptr %y br label %merge merge: ret void } !0 = !{}