2014-11-30 22:33:31 +08:00
|
|
|
; RUN: opt %loadPolly -S -polly-code-generator=isl -polly-codegen-isl < %s | FileCheck %s
|
2014-10-07 22:37:59 +08:00
|
|
|
;
|
|
|
|
; Check that we do not crash as described here: http://llvm.org/PR21167
|
|
|
|
;
|
|
|
|
; In case the pieceweise affine function used to create an isl_ast_expr
|
|
|
|
; had empty cases (e.g., with contradicting constraints on the
|
|
|
|
; parameters), it was possible that the condition of the isl_ast_expr
|
|
|
|
; select was not a comparison but a constant (thus of type i64).
|
|
|
|
; However, we shouldn't crash in such a case :)
|
|
|
|
;
|
|
|
|
; CHECK: polly.split_new_and_old
|
|
|
|
;
|
|
|
|
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
|
|
|
|
|
|
|
; Function Attrs: nounwind uwtable
|
|
|
|
define void @dradb4(i32 %ido, i32 %l1, float* %cc, float* %ch, float* %wa1, float* %wa3) #0 {
|
|
|
|
entry:
|
|
|
|
%mul = mul nsw i32 %l1, %ido
|
|
|
|
br i1 undef, label %for.end256, label %if.end
|
|
|
|
|
|
|
|
if.end: ; preds = %entry
|
|
|
|
br i1 undef, label %L105, label %for.cond45.preheader
|
|
|
|
|
|
|
|
for.cond45.preheader: ; preds = %if.end
|
|
|
|
br i1 undef, label %for.body47, label %for.end198
|
|
|
|
|
|
|
|
for.body47: ; preds = %for.inc196, %for.cond45.preheader
|
|
|
|
br i1 undef, label %for.body53.lr.ph, label %for.inc196
|
|
|
|
|
|
|
|
for.body53.lr.ph: ; preds = %for.body47
|
|
|
|
br label %for.body53
|
|
|
|
|
|
|
|
for.body53: ; preds = %for.body53, %for.body53.lr.ph
|
|
|
|
%t7.014 = phi i32 [ 0, %for.body53.lr.ph ], [ %add58, %for.body53 ]
|
|
|
|
%i.013 = phi i32 [ 2, %for.body53.lr.ph ], [ %add193, %for.body53 ]
|
|
|
|
%add58 = add nsw i32 %t7.014, 2
|
|
|
|
%arrayidx70 = getelementptr inbounds float* %cc, i64 0
|
|
|
|
%arrayidx72 = getelementptr inbounds float* %cc, i64 0
|
|
|
|
%arrayidx77 = getelementptr inbounds float* %cc, i64 0
|
|
|
|
%arrayidx81 = getelementptr inbounds float* %cc, i64 0
|
|
|
|
%arrayidx84 = getelementptr inbounds float* %cc, i64 0
|
|
|
|
%arrayidx95 = getelementptr inbounds float* %cc, i64 0
|
|
|
|
%arrayidx105 = getelementptr inbounds float* %cc, i64 0
|
|
|
|
%arrayidx110 = getelementptr inbounds float* %ch, i64 0
|
|
|
|
store float undef, float* %arrayidx110, align 4
|
|
|
|
%arrayidx122 = getelementptr inbounds float* %wa1, i64 0
|
|
|
|
%add129 = add nsw i32 %add58, %mul
|
|
|
|
%idxprom142 = sext i32 %add129 to i64
|
|
|
|
%arrayidx143 = getelementptr inbounds float* %ch, i64 %idxprom142
|
|
|
|
store float undef, float* %arrayidx143, align 4
|
|
|
|
%add153 = add nsw i32 %add129, %mul
|
|
|
|
%arrayidx170 = getelementptr inbounds float* %wa3, i64 0
|
|
|
|
%arrayidx174 = getelementptr inbounds float* %wa3, i64 0
|
|
|
|
%add177 = add nsw i32 %add153, %mul
|
|
|
|
%sub178 = add nsw i32 %add177, -1
|
|
|
|
%idxprom179 = sext i32 %sub178 to i64
|
|
|
|
%arrayidx180 = getelementptr inbounds float* %ch, i64 %idxprom179
|
|
|
|
store float undef, float* %arrayidx180, align 4
|
|
|
|
%arrayidx183 = getelementptr inbounds float* %wa3, i64 0
|
|
|
|
%0 = load float* %arrayidx183, align 4
|
|
|
|
%mul184 = fmul float undef, %0
|
|
|
|
%add189 = fadd float %mul184, 0.000000e+00
|
|
|
|
%idxprom190 = sext i32 %add177 to i64
|
|
|
|
%arrayidx191 = getelementptr inbounds float* %ch, i64 %idxprom190
|
|
|
|
store float %add189, float* %arrayidx191, align 4
|
|
|
|
%add193 = add nsw i32 %i.013, 2
|
|
|
|
%cmp52 = icmp slt i32 %add193, %ido
|
|
|
|
br i1 %cmp52, label %for.body53, label %for.inc196
|
|
|
|
|
|
|
|
for.inc196: ; preds = %for.body53, %for.body47
|
|
|
|
br i1 undef, label %for.body47, label %for.end198
|
|
|
|
|
|
|
|
for.end198: ; preds = %for.inc196, %for.cond45.preheader
|
|
|
|
br i1 false, label %for.end256, label %L105
|
|
|
|
|
|
|
|
L105: ; preds = %for.end198, %if.end
|
|
|
|
br label %for.end256
|
|
|
|
|
|
|
|
for.end256: ; preds = %L105, %for.end198, %entry
|
|
|
|
ret void
|
|
|
|
}
|