Home | History | Annotate | Download | only in X86
      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 
      5 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"
      6 target triple = "x86_64-apple-darwin12.2.0"
      7 
      8 %0 = type { [10 x { float, float }], [10 x { float, float }], [10 x { float, float }], [10 x { float, float }], [10 x { float, float }] }
      9 %1 = type { [10 x [8 x i8]] }
     10 %2 = type { i64, i64 }
     11 %3 = type { [10 x i64], i64, i64, i64, i64, i64 }
     12 %4 = type { i64, i64, i64, i64, i64, i64 }
     13 %5 = type { [10 x i64] }
     14 %6 = type { [10 x float], [10 x float], [10 x float], [10 x float] }
     15 %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] }
     16 %struct.__st_parameter_common.0.2.4.6 = type { i32, i32, i8*, i32, i32, i8*, i32* }
     17 
     18 @cctenso_ = external unnamed_addr global %0, align 32
     19 @ctenso_ = external unnamed_addr global %1, align 32
     20 @i_dim_ = external unnamed_addr global %2, align 16
     21 @itenso1_ = external unnamed_addr global %3, align 32
     22 @itenso2_ = external unnamed_addr global %4, align 32
     23 @ltenso_ = external unnamed_addr global %5, align 32
     24 @rtenso_ = external unnamed_addr global %6, align 32
     25 @.cst = external unnamed_addr constant [8 x i8], align 8
     26 @.cst1 = external unnamed_addr constant [3 x i8], align 8
     27 @.cst2 = external unnamed_addr constant [29 x i8], align 8
     28 @.cst3 = external unnamed_addr constant [32 x i8], align 64
     29 
     30 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 {
     31 entry:
     32   %0 = fmul double undef, undef
     33   %1 = fmul double undef, undef
     34   %2 = fadd double undef, undef
     35   %3 = fmul double undef, 0x3FE8B8B76E3E9919
     36   %4 = fsub double %0, %1
     37   %5 = fsub double -0.000000e+00, undef
     38   %6 = fmul double undef, undef
     39   %7 = fmul double %4, %6
     40   %8 = fmul double undef, 2.000000e+00
     41   %9 = fmul double %8, undef
     42   %10 = fmul double undef, %9
     43   %11 = fmul double %10, undef
     44   %12 = fsub double undef, %7
     45   %13 = fmul double %3, %12
     46   %14 = fmul double %3, undef
     47   %15 = getelementptr inbounds [5 x { double, double }], [5 x { double, double }]* %c2ten, i64 0, i64 0, i32 0
     48   store double %13, double* %15, align 8
     49   %16 = getelementptr inbounds [5 x { double, double }], [5 x { double, double }]* %c2ten, i64 0, i64 0, i32 1
     50   %17 = fmul double undef, %8
     51   %18 = fmul double %17, undef
     52   %19 = fmul double undef, %18
     53   %20 = fadd double undef, undef
     54   %21 = fmul double %3, %19
     55   %22 = fsub double -0.000000e+00, %21
     56   %23 = getelementptr inbounds [5 x { double, double }], [5 x { double, double }]* %c2ten, i64 0, i64 1, i32 0
     57   store double %22, double* %23, align 8
     58   %24 = getelementptr inbounds [5 x { double, double }], [5 x { double, double }]* %c2ten, i64 0, i64 1, i32 1
     59   %25 = fmul double undef, 0x3FE42F601A8C6794
     60   %26 = fmul double undef, 2.000000e+00
     61   %27 = fsub double %26, %0
     62   %28 = fmul double %6, undef
     63   %29 = fsub double undef, %28
     64   %30 = getelementptr inbounds [5 x { double, double }], [5 x { double, double }]* %c2ten, i64 0, i64 2, i32 0
     65   store double undef, double* %30, align 8
     66   %31 = getelementptr inbounds [5 x { double, double }], [5 x { double, double }]* %c2ten, i64 0, i64 2, i32 1
     67   %32 = fmul double undef, %17
     68   %33 = fmul double undef, %17
     69   %34 = fmul double undef, %32
     70   %35 = fmul double undef, %33
     71   %36 = fsub double undef, %35
     72   %37 = fmul double %3, %34
     73   %38 = getelementptr inbounds [5 x { double, double }], [5 x { double, double }]* %c2ten, i64 0, i64 3, i32 0
     74   store double %37, double* %38, align 8
     75   %39 = getelementptr inbounds [5 x { double, double }], [5 x { double, double }]* %c2ten, i64 0, i64 3, i32 1
     76   %40 = fmul double undef, %8
     77   %41 = fmul double undef, %40
     78   %42 = fmul double undef, %41
     79   %43 = fsub double undef, %42
     80   %44 = fmul double %3, %43
     81   %45 = getelementptr inbounds [5 x { double, double }], [5 x { double, double }]* %c2ten, i64 0, i64 4, i32 0
     82   store double %13, double* %45, align 8
     83   %46 = getelementptr inbounds [5 x { double, double }], [5 x { double, double }]* %c2ten, i64 0, i64 4, i32 1
     84   %47 = fsub double -0.000000e+00, %14
     85   store double %47, double* %16, align 8
     86   store double undef, double* %24, align 8
     87   store double -0.000000e+00, double* %31, align 8
     88   store double undef, double* %39, align 8
     89   store double undef, double* %46, align 8
     90   ret void
     91 }
     92 
     93 attributes #0 = { nounwind uwtable }
     94 attributes #1 = { nounwind readnone }
     95 attributes #2 = { nounwind }
     96