Open
Description
$ cat /tmp/a.ll
target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-n32:64-S128-Fn32"
target triple = "arm64-apple-macosx12.0.0"
define i32 @f() {
entry:
br label %for.cond1
for.cond1:
%vld4 = call { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld4.v8i8.p0(ptr null)
%vld4.fca.1.extract = extractvalue { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } %vld4, 1
call void @llvm.aarch64.neon.st4.v8i8.p0(<8 x i8> zeroinitializer, <8 x i8> %vld4.fca.1.extract, <8 x i8> zeroinitializer, <8 x i8> zeroinitializer, ptr null)
br label %for.cond1
}
declare { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld4.v8i8.p0(ptr)
declare void @llvm.aarch64.neon.st4.v8i8.p0(<8 x i8>, <8 x i8>, <8 x i8>, <8 x i8>, ptr captures(none))
$ opt -p early-cse /tmp/a.ll -S
...
define i32 @f() {
entry:
br label %for.cond1
for.cond1: ; preds = %for.cond1, %entry
%vld4 = call { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld4.v8i8.p0(ptr null)
%vld4.fca.1.extract = extractvalue { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } %vld4, 1
%0 = insertvalue { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } { <8 x i8> zeroinitializer, <8 x i8> poison, <8 x i8> poison, <8 x i8> poison }, <8 x i8> %vld4.fca.1.extract, 1
%1 = insertvalue { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } %0, <8 x i8> zeroinitializer, 2
%2 = insertvalue { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } %1, <8 x i8> zeroinitializer, 3
call void @llvm.aarch64.neon.st4.v8i8.p0(<8 x i8> zeroinitializer, <8 x i8> %vld4.fca.1.extract, <8 x i8> zeroinitializer, <8 x i8> zeroinitializer, ptr null)
br label %for.cond1
}
...
$ opt -p early-cse /tmp/a.ll -S -verify-analysis-invalidation
LLVM ERROR: Function @f changed by EarlyCSEPass without invalidating analyses
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.