pr15289.ll 4.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. ; RUN: opt < %s -basicaa -bb-vectorize -disable-output
  2. ; This is a bugpoint-reduced test case. It did not always assert, but does reproduce the bug
  3. ; and running under valgrind (or some similar tool) will catch the error.
  4. target datalayout = "e-p:64:64:64-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f16:16:16-f32:32:32-f64:64:64-f128:128:128-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
  5. target triple = "x86_64-apple-darwin12.2.0"
  6. %0 = type { [10 x { float, float }], [10 x { float, float }], [10 x { float, float }], [10 x { float, float }], [10 x { float, float }] }
  7. %1 = type { [10 x [8 x i8]] }
  8. %2 = type { i64, i64 }
  9. %3 = type { [10 x i64], i64, i64, i64, i64, i64 }
  10. %4 = type { i64, i64, i64, i64, i64, i64 }
  11. %5 = type { [10 x i64] }
  12. %6 = type { [10 x float], [10 x float], [10 x float], [10 x float] }
  13. %struct.__st_parameter_dt.1.3.5.7 = type { %struct.__st_parameter_common.0.2.4.6, i64, i64*, i64*, i8*, i8*, i32, i32, i8*, i8*, i32, i32, i8*, [256 x i8], i32*, i64, i8*, i32, i32, i8*, i8*, i32, i32, i8*, i8*, i32, i32, i8*, i8*, i32, [4 x i8] }
  14. %struct.__st_parameter_common.0.2.4.6 = type { i32, i32, i8*, i32, i32, i8*, i32* }
  15. @cctenso_ = external unnamed_addr global %0, align 32
  16. @ctenso_ = external unnamed_addr global %1, align 32
  17. @i_dim_ = external unnamed_addr global %2, align 16
  18. @itenso1_ = external unnamed_addr global %3, align 32
  19. @itenso2_ = external unnamed_addr global %4, align 32
  20. @ltenso_ = external unnamed_addr global %5, align 32
  21. @rtenso_ = external unnamed_addr global %6, align 32
  22. @.cst = external unnamed_addr constant [8 x i8], align 8
  23. @.cst1 = external unnamed_addr constant [3 x i8], align 8
  24. @.cst2 = external unnamed_addr constant [29 x i8], align 8
  25. @.cst3 = external unnamed_addr constant [32 x i8], align 64
  26. define void @cart_to_dc2y_(double* noalias nocapture %xx, double* noalias nocapture %yy, double* noalias nocapture %zz, [5 x { double, double }]* noalias nocapture %c2ten) nounwind uwtable {
  27. entry:
  28. %0 = fmul double undef, undef
  29. %1 = fmul double undef, undef
  30. %2 = fadd double undef, undef
  31. %3 = fmul double undef, 0x3FE8B8B76E3E9919
  32. %4 = fsub double %0, %1
  33. %5 = fsub double -0.000000e+00, undef
  34. %6 = fmul double undef, undef
  35. %7 = fmul double %4, %6
  36. %8 = fmul double undef, 2.000000e+00
  37. %9 = fmul double %8, undef
  38. %10 = fmul double undef, %9
  39. %11 = fmul double %10, undef
  40. %12 = fsub double undef, %7
  41. %13 = fmul double %3, %12
  42. %14 = fmul double %3, undef
  43. %15 = getelementptr inbounds [5 x { double, double }], [5 x { double, double }]* %c2ten, i64 0, i64 0, i32 0
  44. store double %13, double* %15, align 8
  45. %16 = getelementptr inbounds [5 x { double, double }], [5 x { double, double }]* %c2ten, i64 0, i64 0, i32 1
  46. %17 = fmul double undef, %8
  47. %18 = fmul double %17, undef
  48. %19 = fmul double undef, %18
  49. %20 = fadd double undef, undef
  50. %21 = fmul double %3, %19
  51. %22 = fsub double -0.000000e+00, %21
  52. %23 = getelementptr inbounds [5 x { double, double }], [5 x { double, double }]* %c2ten, i64 0, i64 1, i32 0
  53. store double %22, double* %23, align 8
  54. %24 = getelementptr inbounds [5 x { double, double }], [5 x { double, double }]* %c2ten, i64 0, i64 1, i32 1
  55. %25 = fmul double undef, 0x3FE42F601A8C6794
  56. %26 = fmul double undef, 2.000000e+00
  57. %27 = fsub double %26, %0
  58. %28 = fmul double %6, undef
  59. %29 = fsub double undef, %28
  60. %30 = getelementptr inbounds [5 x { double, double }], [5 x { double, double }]* %c2ten, i64 0, i64 2, i32 0
  61. store double undef, double* %30, align 8
  62. %31 = getelementptr inbounds [5 x { double, double }], [5 x { double, double }]* %c2ten, i64 0, i64 2, i32 1
  63. %32 = fmul double undef, %17
  64. %33 = fmul double undef, %17
  65. %34 = fmul double undef, %32
  66. %35 = fmul double undef, %33
  67. %36 = fsub double undef, %35
  68. %37 = fmul double %3, %34
  69. %38 = getelementptr inbounds [5 x { double, double }], [5 x { double, double }]* %c2ten, i64 0, i64 3, i32 0
  70. store double %37, double* %38, align 8
  71. %39 = getelementptr inbounds [5 x { double, double }], [5 x { double, double }]* %c2ten, i64 0, i64 3, i32 1
  72. %40 = fmul double undef, %8
  73. %41 = fmul double undef, %40
  74. %42 = fmul double undef, %41
  75. %43 = fsub double undef, %42
  76. %44 = fmul double %3, %43
  77. %45 = getelementptr inbounds [5 x { double, double }], [5 x { double, double }]* %c2ten, i64 0, i64 4, i32 0
  78. store double %13, double* %45, align 8
  79. %46 = getelementptr inbounds [5 x { double, double }], [5 x { double, double }]* %c2ten, i64 0, i64 4, i32 1
  80. %47 = fsub double -0.000000e+00, %14
  81. store double %47, double* %16, align 8
  82. store double undef, double* %24, align 8
  83. store double -0.000000e+00, double* %31, align 8
  84. store double undef, double* %39, align 8
  85. store double undef, double* %46, align 8
  86. ret void
  87. }
  88. attributes #0 = { nounwind uwtable }
  89. attributes #1 = { nounwind readnone }
  90. attributes #2 = { nounwind }