Skip to content

Crash in LV: "VPlan cost model and legacy cost model disagreed" #111874

Closed
@alexey-bataev

Description

@alexey-bataev

Loop vectorizer crash for the following reproducer:

target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "riscv64-unknown-linux-gnu"

define void @init_dependence_analysis(ptr %iiv_used.i.i.i.sroa.0, i64 %indvars.iv71.i.i.i, i1 %cmp104.not.i.i.i, i1 %tobool108.not.i.i.i) #0 {
entry:
  br label %for.cond101.preheader.i.i.i

for.cond101.preheader.i.i.i:                      ; preds = %for.inc121.i.i.i, %entry
  %separability.0.i.i = phi i32 [ 0, %entry ], [ %separability.2.i.i, %for.inc121.i.i.i ]
  br label %for.body103.i.i.i

for.body103.i.i.i:                                ; preds = %for.inc121.i.i.i, %for.cond101.preheader.i.i.i
  %separability.1.i.i = phi i32 [ %separability.0.i.i, %for.cond101.preheader.i.i.i ], [ %separability.2.i.i, %for.inc121.i.i.i ]
  %indvars.iv71.i.i.i5 = phi i64 [ 0, %for.cond101.preheader.i.i.i ], [ %indvars.iv.next72.i.i.i, %for.inc121.i.i.i ]
  br i1 %cmp104.not.i.i.i, label %for.inc121.i.i.i, label %land.lhs.true105.i.i.i

land.lhs.true105.i.i.i:                           ; preds = %for.body103.i.i.i
  br i1 %tobool108.not.i.i.i, label %for.inc121.i.i.i, label %land.lhs.true109.i.i.i

land.lhs.true109.i.i.i:                           ; preds = %land.lhs.true105.i.i.i
  %0 = load ptr, ptr %iiv_used.i.i.i.sroa.0, align 8
  %cmp118.i.i.i = icmp eq ptr %0, null
  %spec.select209.i.i = select i1 %cmp118.i.i.i, i32 0, i32 %separability.1.i.i
  br label %for.inc121.i.i.i

for.inc121.i.i.i:                                 ; preds = %land.lhs.true109.i.i.i, %land.lhs.true105.i.i.i, %for.body103.i.i.i
  %separability.2.i.i = phi i32 [ %separability.1.i.i, %for.body103.i.i.i ], [ %separability.1.i.i, %land.lhs.true105.i.i.i ], [ %spec.select209.i.i, %land.lhs.true109.i.i.i ]
  %indvars.iv.next72.i.i.i = add i64 %indvars.iv71.i.i.i5, 1
  %exitcond74.not.i.i.i = icmp eq i64 %indvars.iv71.i.i.i5, %indvars.iv71.i.i.i
  br i1 %exitcond74.not.i.i.i, label %for.cond101.preheader.i.i.i, label %for.body103.i.i.i

; uselistorder directives
  uselistorder i32 %separability.2.i.i, { 1, 0 }
}

attributes #0 = { "target-cpu"="sifive-p670" }

opt -S --passes=loop-vectorize ./reduced.ll
LoopVectorize.cpp:7430: VectorizationFactor llvm::LoopVectorizationPlanner::computeBestVF(): Assertion `(BestFactor.Width == LegacyVF.Width || planContainsAdditionalSimplifications(getPlanFor(BestFactor.Width), CostCtx, OrigLoop)) && " VPlan cost model and legacy cost model disagreed"' failed.

Metadata

Metadata

Assignees

Labels

crashPrefer [crash-on-valid] or [crash-on-invalid]vectorizers

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions