blob: 422412246c1f2cfcf7066ea674a75ccb42ecc3d7 [file] [edit]
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
; RUN: llc -mtriple=x86_64 < %s | FileCheck %s
; An inline asm with an "=a" output tied to an input leaves the scheduler with
; overlapping dead and live physreg defs. The register pressure tracker must
; not count the shared units as live, or it hits a "PSet overflow/underflow"
; assertion.
define i32 @pr149144(i8 %how, ptr %set, ptr %oset) {
; CHECK-LABEL: pr149144:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: pushq %rbx
; CHECK-NEXT: .cfi_def_cfa_offset 16
; CHECK-NEXT: .cfi_offset %rbx, -16
; CHECK-NEXT: movq %rsi, %rcx
; CHECK-NEXT: movl $14, %ebx
; CHECK-NEXT: movb %dil, %bl
; CHECK-NEXT: movl $8, %esi
; CHECK-NEXT: #APP
; CHECK-NEXT: #NO_APP
; CHECK-NEXT: popq %rbx
; CHECK-NEXT: .cfi_def_cfa_offset 8
; CHECK-NEXT: retq
entry:
%0 = tail call i32 asm sideeffect "", "={ax},0{bx}0,{bx},{cx},{dx},{si},~{memory},~{cc},~{dirflag},~{fpsr},~{flags}"(i32 14, i8 %how, ptr %set, ptr %oset, i32 8)
ret i32 %0
}