Skip to content

[RISCV] Assertion `OldVNI == VNI && "Wrong value out of predecessor"' failed. #156249

@XChy

Description

@XChy

The reduced testcase below triggers an assertion in the trunk at O1/O2/O3:

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

define <8 x i64> @d() #0 {
entry:
  br label %ac

ac:                                               ; preds = %asm.fallthrough3, %asm.fallthrough, %ac, %entry
  %e.2 = phi <8 x i64> [ zeroinitializer, %entry ], [ %vecins, %ac ], [ %vecins4, %asm.fallthrough3 ], [ %vecins2, %asm.fallthrough ]
  %vecins = insertelement <8 x i64> %e.2, i64 0, i64 0
  callbr void asm sideeffect "", "!i"()
          to label %asm.fallthrough [label %ac]

asm.fallthrough:                                  ; preds = %ac
  %vecins2 = shufflevector <8 x i64> %vecins, <8 x i64> splat (i64 1), <8 x i32> <i32 0, i32 1, i32 2, i32 10, i32 4, i32 5, i32 6, i32 7>
  callbr void asm sideeffect "", "!i"()
          to label %asm.fallthrough3 [label %ac]

asm.fallthrough3:                                 ; preds = %asm.fallthrough
  %vecins4 = insertelement <8 x i64> %vecins2, i64 0, i64 0
  callbr void asm sideeffect "", "!i"()
          to label %asm.fallthrough5 [label %ac]

asm.fallthrough5:                                 ; preds = %asm.fallthrough3
  %or = or <8 x i64> %vecins2, %vecins4
  ret <8 x i64> %or
}

attributes #0 = { "target-features"="+v" }

Compiler dump:

clang-19: /home/shareduser/XChy/Projects/llvm-project/llvm/lib/CodeGen/LiveIntervals.cpp:466: void llvm::LiveIntervals::extendSegmentsToUses(llvm::LiveRange&, ShrinkToUsesWorkList&, llvm::Register, llvm::LaneBitmask): Assertion `OldVNI == VNI && "Wrong value out of predecessor"' failed.
....

https://godbolt.org/z/ExnhKzrMs

May be related to #134424.

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions