ZIV.ll 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. ; RUN: opt < %s -analyze -basicaa -da | FileCheck %s
  2. ; ModuleID = 'ZIV.bc'
  3. target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
  4. target triple = "x86_64-apple-macosx10.6.0"
  5. ;; A[n + 1] = 0;
  6. ;; *B = A[1 + n];
  7. define void @z0(i32* %A, i32* %B, i64 %n) nounwind uwtable ssp {
  8. entry:
  9. %add = add i64 %n, 1
  10. %arrayidx = getelementptr inbounds i32, i32* %A, i64 %add
  11. store i32 0, i32* %arrayidx, align 4
  12. ; CHECK: da analyze - none!
  13. ; CHECK: da analyze - consistent flow [|<]!
  14. ; CHECK: da analyze - confused!
  15. ; CHECK: da analyze - none!
  16. ; CHECK: da analyze - confused!
  17. ; CHECK: da analyze - none!
  18. %add1 = add i64 %n, 1
  19. %arrayidx2 = getelementptr inbounds i32, i32* %A, i64 %add1
  20. %0 = load i32, i32* %arrayidx2, align 4
  21. store i32 %0, i32* %B, align 4
  22. ret void
  23. }
  24. ;; A[n] = 0;
  25. ;; *B = A[n + 1];
  26. define void @z1(i32* %A, i32* %B, i64 %n) nounwind uwtable ssp {
  27. entry:
  28. %arrayidx = getelementptr inbounds i32, i32* %A, i64 %n
  29. store i32 0, i32* %arrayidx, align 4
  30. ; CHECK: da analyze - none!
  31. ; CHECK: da analyze - none!
  32. ; CHECK: da analyze - confused!
  33. ; CHECK: da analyze - none!
  34. ; CHECK: da analyze - confused!
  35. ; CHECK: da analyze - none!
  36. %add = add i64 %n, 1
  37. %arrayidx1 = getelementptr inbounds i32, i32* %A, i64 %add
  38. %0 = load i32, i32* %arrayidx1, align 4
  39. store i32 %0, i32* %B, align 4
  40. ret void
  41. }
  42. ;; A[n] = 0;
  43. ;; *B = A[m];
  44. define void @z2(i32* %A, i32* %B, i64 %n, i64 %m) nounwind uwtable ssp {
  45. entry:
  46. %arrayidx = getelementptr inbounds i32, i32* %A, i64 %n
  47. store i32 0, i32* %arrayidx, align 4
  48. ; CHECK: da analyze - none!
  49. ; CHECK: da analyze - flow [|<]!
  50. ; CHECK: da analyze - confused!
  51. ; CHECK: da analyze - none!
  52. ; CHECK: da analyze - confused!
  53. ; CHECK: da analyze - none!
  54. %arrayidx1 = getelementptr inbounds i32, i32* %A, i64 %m
  55. %0 = load i32, i32* %arrayidx1, align 4
  56. store i32 %0, i32* %B, align 4
  57. ret void
  58. }