Skip to content

LoopVectorizer crashes in SCEVExpanderCleanup #158259

@Theodor

Description

@Theodor

Assert in vectorizer during SCEVExpanderCleanup: https://godbolt.org/z/Ezcf68T85

Assert message:

opt: .../llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp:2466: void llvm::SCEVExpanderCleaner::cleanup(): Assertion `all_of(I->users(), [&InsertedSet](Value *U) { return InsertedSet.contains(cast<Instruction>(U)); }) && "removed instruction should only be used by instructions inserted " "during expansion"' failed.

IR reproducer:

target triple = "x86_64-unknown-linux-gnu"

define void @widget(i32 %arg, i64 %arg1) #0 {
bb:
  br label %bb2
bb2:                                              ; preds = %bb4, %bb
  br label %bb5
bb3:                                              ; preds = %bb5
  %load = load ptr addrspace(1), ptr null, align 8%getelementptr = getelementptr i32, ptr addrspace(1) null, i64 %arg1
  br i1 false, label %bb7, label %bb4
bb4:                                              ; preds = %bb3
  br label %bb2
bb5:                                              ; preds = %bb5, %bb2
  br i1 false, label %bb3, label %bb5
bb6:                                              ; preds = %bb7
  ret void
bb7:                                              ; preds = %bb7, %bb3
  %phi = phi i32 [ %add, %bb7 ], [ %arg, %bb3 ]
  %phi8 = phi i32 [ %or, %bb7 ], [ 0, %bb3 ]
  %load9 = load i32, ptr addrspace(1) %getelementptr, align 4
  %or = or i32 %phi8, 0
  store i32 %or, ptr addrspace(1) %load, align 4
  %add = add i32 %phi, 1
  %icmp = icmp eq i32 %phi, 0
  br i1 %icmp, label %bb6, label %bb7, !prof !0
}
attributes #0 = { "target-features"="+avx2" }
!0 = !{!"branch_weights", i32 89478484, i32 1879048192}

Run as: opt -passes=loop-vectorize

Metadata

Metadata

Assignees

No one assigned

    Labels

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

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions