memintrinsics.ll 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. ; RUN: opt -S -dse < %s | FileCheck %s
  2. declare void @llvm.memcpy.p0i8.p0i8.i8(i8* nocapture, i8* nocapture, i8, i32, i1) nounwind
  3. declare void @llvm.memmove.p0i8.p0i8.i8(i8* nocapture, i8* nocapture, i8, i32, i1) nounwind
  4. declare void @llvm.memset.p0i8.i8(i8* nocapture, i8, i8, i32, i1) nounwind
  5. define void @test1() {
  6. ; CHECK-LABEL: @test1(
  7. %A = alloca i8
  8. %B = alloca i8
  9. store i8 0, i8* %A ;; Written to by memcpy
  10. ; CHECK-NOT: store
  11. call void @llvm.memcpy.p0i8.p0i8.i8(i8* %A, i8* %B, i8 -1, i32 0, i1 false)
  12. ret void
  13. ; CHECK: ret void
  14. }
  15. define void @test2() {
  16. ; CHECK-LABEL: @test2(
  17. %A = alloca i8
  18. %B = alloca i8
  19. store i8 0, i8* %A ;; Written to by memmove
  20. ; CHECK-NOT: store
  21. call void @llvm.memmove.p0i8.p0i8.i8(i8* %A, i8* %B, i8 -1, i32 0, i1 false)
  22. ret void
  23. ; CHECK: ret void
  24. }
  25. define void @test3() {
  26. ; CHECK-LABEL: @test3(
  27. %A = alloca i8
  28. %B = alloca i8
  29. store i8 0, i8* %A ;; Written to by memset
  30. ; CHECK-NOT: store
  31. call void @llvm.memset.p0i8.i8(i8* %A, i8 0, i8 -1, i32 0, i1 false)
  32. ret void
  33. ; CHECK: ret void
  34. }