; RUN: opt -S -dse < %s | FileCheck %s

declare void @f()
declare noalias i8* @malloc(i32) nounwind

define void @test_0() {
; CHECK-LABEL: @test_0(
  %m = call i8* @malloc(i32 24)
  tail call void @f() [ "unknown"(i8* %m) ]
; CHECK: store i8 -19, i8* %m
  store i8 -19, i8* %m
  ret void
}

define i8* @test_1() {
; CHECK-LABEL: @test_1(
  %m = call i8* @malloc(i32 24)
  tail call void @f() [ "unknown"(i8* %m) ]
  store i8 -19, i8* %m
  tail call void @f()
  store i8 101, i8* %m

; CHECK: tail call void @f() [ "unknown"(i8* %m) ]
; CHECK: store i8 -19, i8* %m
; CHECK: tail call void @f()
; CHECK: store i8 101, i8* %m

  ret i8* %m
}

define void @test_2() {
; Since the deopt operand bundle does not escape %m (see caveat below), it is
; legal to elide the final store that location.

; CHECK-LABEL: @test_2(
  %m = call i8* @malloc(i32 24)
  tail call void @f() [ "deopt"(i8* %m) ]
  store i8 -19, i8* %m
  ret void

; CHECK:  tail call void @f() [ "deopt"(i8* %m) ]
; CHECK-NEXT:  ret void
}

define i8* @test_3() {
; Since the deopt operand bundle does not escape %m (see caveat below), @f
; cannot observe the stores to %m

; CHECK-LABEL: @test_3(
  %m = call i8* @malloc(i32 24)
  tail call void @f() [ "deopt"(i8* %m) ]
  store i8 -19, i8* %m
  tail call void @f()
  store i8 101, i8* %m
  ret i8* %m
}


; Caveat: technically, %m can only escape if the calling function is deoptimized
; at the call site (i.e. the call returns to the "deopt" continuation).  Since
; the calling function body will be invalidated in that case, the calling
; function can be optimized under the assumption that %m does not escape.
