Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"cannot insert node between set or sequence node and its filter children" in the Linux kernel #52637

Closed
nathanchance opened this issue Dec 13, 2021 · 1 comment
Labels

Comments

@nathanchance
Copy link
Member

When building the Linux kernel with Polly, there is a crash in polly/lib/External/isl/isl_schedule_node.c (initial report: ClangBuiltLinux/linux#1515).

Reduced C reproducer:

struct v4l2_sliced_vbi_data {
  unsigned char data[48];
};
struct {
  struct v4l2_sliced_vbi_data data[5];
} vivid_vbi_gen_sliced_vbi;
int calc_parity_i;
void vivid_vbi_gen_teletext(unsigned char *packet) {
  char __trans_tmp_1;
  unsigned i;
  packet[0] = packet[6];
  i = 0;
  for (; i < 42; i++) {
    char val = packet[i];
    unsigned tot = calc_parity_i = 0;
    for (; calc_parity_i < 7; calc_parity_i++)
      tot += val & 1 << calc_parity_i ? 1 : 0;
    __trans_tmp_1 = tot & 1;
    packet[i] = __trans_tmp_1;
  }
}
void vivid_vbi_gen_sliced() {
  struct v4l2_sliced_vbi_data *data0 = vivid_vbi_gen_sliced_vbi.data;
  unsigned i = 0;
  for (; i <= 11; i++) {
    vivid_vbi_gen_teletext(data0->data);
    data0++;
  }
}
$ clang --target=arm-linux-gnueabi -march=armv7-a -msoft-float -O2 -mllvm -polly -mllvm -polly-vectorizer=stripmine -mllvm -polly-isl-arg=--no-schedule-serialize-sccs -c -o /dev/null vivid-vbi-gen.i
/home/nathan/cbl/src/llvm-project/polly/lib/External/isl/isl_schedule_node.c:2472: cannot insert node between set or sequence node and its filter children
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.	Program arguments: clang --target=arm-linux-gnueabi -march=armv7-a -msoft-float -O2 -mllvm -polly -mllvm -polly-vectorizer=stripmine -mllvm -polly-isl-arg=--no-schedule-serialize-sccs -c -o /dev/null vivid-vbi-gen.i
1.	<eof> parser at end of file
2.	Optimizer
 #0 0x0000000003095b23 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/local/bin/clang-14+0x3095b23)
 #1 0x000000000309392e llvm::sys::RunSignalHandlers() (/usr/local/bin/clang-14+0x309392e)
 #2 0x000000000301f6e3 (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) CrashRecoveryContext.cpp:0:0
 #3 0x000000000301f85e CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #4 0x00007f5ccf593430 __restore_rt (/lib64/libc.so.6+0x56430)
 #5 0x00007f5ccf5e329c __pthread_kill_implementation (/lib64/libc.so.6+0xa629c)
 #6 0x00007f5ccf593366 gsignal (/lib64/libc.so.6+0x56366)
 #7 0x00007f5ccf57c7d3 abort (/lib64/libc.so.6+0x3f7d3)
 #8 0x00000000042e88ef (/usr/local/bin/clang-14+0x42e88ef)
 #9 0x0000000004350b2a check_insert isl_schedule_node.c:0:0
#10 0x0000000004350be0 isl_schedule_node_insert_mark (/usr/local/bin/clang-14+0x4350be0)
#11 0x000000000425ea7f (anonymous namespace)::ScheduleTreeOptimizer::optimizeBand(isl_schedule_node*, void*) ScheduleOptimizer.cpp:0:0
#12 0x000000000434f415 traverse isl_schedule_node.c:0:0
#13 0x000000000434f556 isl_schedule_node_map_descendant_bottom_up (/usr/local/bin/clang-14+0x434f556)
#14 0x000000000425d4d3 (anonymous namespace)::ScheduleTreeOptimizer::optimizeSchedule(isl::schedule, (anonymous namespace)::OptimizerAdditionalInfoTy const*) ScheduleOptimizer.cpp:0:0
#15 0x000000000425cf97 (anonymous namespace)::runIslScheduleOptimizer(polly::Scop&, llvm::function_ref<polly::Dependences const& (polly::Dependences::AnalysisLevel)>, llvm::TargetTransformInfo*, llvm::OptimizationRemarkEmitter*, isl::schedule&) ScheduleOptimizer.cpp:0:0
#16 0x000000000425b8f0 runIslScheduleOptimizerUsingNPM(polly::Scop&, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>&, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&, llvm::raw_ostream*) ScheduleOptimizer.cpp:0:0
#17 0x000000000425b815 polly::IslScheduleOptimizerPass::run(polly::Scop&, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>&, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&) (/usr/local/bin/clang-14+0x425b815)
#18 0x0000000004175d4d llvm::detail::PassModel<polly::Scop, polly::IslScheduleOptimizerPass, llvm::PreservedAnalyses, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&>::run(polly::Scop&, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>&, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&) RegisterPasses.cpp:0:0
#19 0x00000000041e52a5 llvm::PassManager<polly::Scop, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&>::run(polly::Scop&, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>&, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&) (/usr/local/bin/clang-14+0x41e52a5)
#20 0x0000000004172bb0 polly::FunctionToScopPassAdaptor<llvm::PassManager<polly::Scop, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) RegisterPasses.cpp:0:0
#21 0x000000000417258d llvm::detail::PassModel<llvm::Function, polly::FunctionToScopPassAdaptor<llvm::PassManager<polly::Scop, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&> >, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) RegisterPasses.cpp:0:0
#22 0x000000000290f6c1 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/usr/local/bin/clang-14+0x290f6c1)
#23 0x00000000037ee53d llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function> >, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) BackendUtil.cpp:0:0
#24 0x0000000002912e1b llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/usr/local/bin/clang-14+0x2912e1b)
#25 0x00000000037f06bd llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) BackendUtil.cpp:0:0
#26 0x000000000290e404 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/usr/local/bin/clang-14+0x290e404)
#27 0x00000000037e7b64 (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >&, std::unique_ptr<llvm::ToolOutputFile, std::default_delete<llvm::ToolOutputFile> >&) BackendUtil.cpp:0:0
#28 0x00000000037dd2c7 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >) (/usr/local/bin/clang-14+0x37dd2c7)
#29 0x0000000003c0e51c clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) CodeGenAction.cpp:0:0
#30 0x0000000004591744 clang::ParseAST(clang::Sema&, bool, bool) (/usr/local/bin/clang-14+0x4591744)
#31 0x0000000003b5b1d0 clang::FrontendAction::Execute() (/usr/local/bin/clang-14+0x3b5b1d0)
#32 0x0000000003ad3a3f clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/usr/local/bin/clang-14+0x3ad3a3f)
#33 0x0000000003c07ef3 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/usr/local/bin/clang-14+0x3c07ef3)
#34 0x0000000001b63a24 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/usr/local/bin/clang-14+0x1b63a24)
#35 0x0000000001b6156d ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#36 0x000000000396db52 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const::$_1>(long) Job.cpp:0:0
#37 0x000000000301f5f7 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/usr/local/bin/clang-14+0x301f5f7)
#38 0x000000000396d6b7 clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const (/usr/local/bin/clang-14+0x396d6b7)
#39 0x0000000003935788 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&) const (/usr/local/bin/clang-14+0x3935788)
#40 0x0000000003935a57 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) const (/usr/local/bin/clang-14+0x3935a57)
#41 0x000000000394e071 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) (/usr/local/bin/clang-14+0x394e071)
#42 0x0000000001b60e21 main (/usr/local/bin/clang-14+0x1b60e21)
#43 0x00007f5ccf57d5c0 __libc_start_call_main (/lib64/libc.so.6+0x405c0)
#44 0x00007f5ccf57d67c __libc_start_main@GLIBC_2.2.5 (/lib64/libc.so.6+0x4067c)
#45 0x0000000001b5e345 _start /home/abuild/rpmbuild/BUILD/glibc-2.34/csu/../sysdeps/x86_64/start.S:118:0
clang-14: error: clang frontend command failed with exit code 134 (use -v to see invocation)
ClangBuiltLinux clang version 14.0.0 (https://github.com/llvm/llvm-project 0f1e52afa92fd6b687f4d69203b72e99a9228edb)
Target: arm-unknown-linux-gnueabi
Thread model: posix
InstalledDir: /usr/local/bin
clang-14: note: diagnostic msg: Error generating preprocessed source(s) - no preprocessable inputs.

Reduced LLVM IR reproducer:

%struct.anon = type { [5 x %struct.v4l2_sliced_vbi_data] }
%struct.v4l2_sliced_vbi_data = type { [48 x i8] }

@calc_parity_i = external global i32
@vivid_vbi_gen_sliced_vbi = external global %struct.anon

define void @vivid_vbi_gen_teletext(i8* %packet) {
entry:
  %packet.addr = alloca i8*, i32 0, align 4
  %__trans_tmp_1 = alloca i8, i32 0, align 1
  %i = alloca i32, i32 0, align 4
  %val = alloca i8, i32 0, align 1
  %tot = alloca i32, i32 0, align 4
  store i8* %packet, i8** %packet.addr, align 4
  %0 = load i8*, i8** %packet.addr, align 4
  %arrayidx = getelementptr inbounds i8, i8* %0, i32 6
  %1 = load i8, i8* %arrayidx, align 1
  %2 = load i8*, i8** %packet.addr, align 4
  %arrayidx1 = getelementptr inbounds i8, i8* %2, i32 0
  store i8 %1, i8* %packet, align 1
  store i32 0, i32* %i, align 4
  br label %for.cond

for.cond:                                         ; preds = %for.inc9, %entry
  %3 = load i32, i32* %i, align 4
  %cmp = icmp ult i32 %3, 42
  br i1 %cmp, label %for.body, label %for.end11

for.body:                                         ; preds = %for.cond
  %4 = load i8*, i8** %packet.addr, align 4
  %5 = load i32, i32* %i, align 4
  %arrayidx2 = getelementptr inbounds i8, i8* %4, i32 %5
  %6 = load i8, i8* %arrayidx2, align 1
  store i8 %6, i8* %val, align 1
  store i32 0, i32* @calc_parity_i, align 4
  store i32 0, i32* %tot, align 4
  br label %for.cond3

for.cond3:                                        ; preds = %for.inc, %for.body
  %7 = load i32, i32* @calc_parity_i, align 4
  %cmp4 = icmp slt i32 %7, 1
  br i1 %cmp4, label %for.body5, label %for.end

for.body5:                                        ; preds = %for.cond3
  %8 = load i8, i8* %val, align 1
  %conv = zext i8 %8 to i32
  %9 = load i32, i32* null, align 4
  %shl = shl i32 1, 0
  %and = and i32 0, 1
  %tobool = icmp ne i32 0, 0
  %cond = select i1 %tobool, i32 1, i32 0
  %10 = load i32, i32* undef, align 4
  %add = add i32 1, %conv
  store i32 %add, i32* %tot, align 4
  br label %for.inc

for.inc:                                          ; preds = %for.body5
  %11 = load i32, i32* undef, align 4
  %inc = add nsw i32 1, 1
  store i32 1, i32* @calc_parity_i, align 4
  br label %for.cond3

for.end:                                          ; preds = %for.cond3
  %12 = load i32, i32* %tot, align 4
  %and6 = and i32 %12, 1
  %conv7 = trunc i32 %and6 to i8
  store i8 %conv7, i8* %__trans_tmp_1, align 1
  %13 = load i8, i8* %__trans_tmp_1, align 1
  %14 = load i8*, i8** %packet.addr, align 4
  %15 = load i32, i32* %i, align 4
  %arrayidx8 = getelementptr inbounds i8, i8* %14, i32 %15
  store i8 %13, i8* %arrayidx8, align 1
  br label %for.inc9

for.inc9:                                         ; preds = %for.end
  %16 = load i32, i32* %i, align 4
  %inc10 = add i32 %16, 1
  store i32 %inc10, i32* %i, align 4
  br label %for.cond

for.end11:                                        ; preds = %for.cond
  ret void
}

; Function Attrs: argmemonly nofree nosync nounwind willreturn
declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #0

; Function Attrs: argmemonly nofree nosync nounwind willreturn
declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #0

define void @vivid_vbi_gen_sliced() {
entry:
  %data0 = alloca %struct.v4l2_sliced_vbi_data*, i32 0, align 4
  %i = alloca i32, i32 0, align 4
  store %struct.v4l2_sliced_vbi_data* null, %struct.v4l2_sliced_vbi_data** %data0, align 4
  store i32 0, i32* %i, align 4
  br label %for.cond

for.cond:                                         ; preds = %for.inc, %entry
  %0 = load i32, i32* %i, align 4
  %cmp = icmp ule i32 %0, 11
  br i1 %cmp, label %for.body, label %for.end

for.body:                                         ; preds = %for.cond
  %1 = load %struct.v4l2_sliced_vbi_data*, %struct.v4l2_sliced_vbi_data** %data0, align 4
  %data = getelementptr inbounds %struct.v4l2_sliced_vbi_data, %struct.v4l2_sliced_vbi_data* %1, i32 0, i32 0
  %arraydecay = getelementptr inbounds [48 x i8], [48 x i8]* %data, i32 0, i32 0
  call void @vivid_vbi_gen_teletext(i8* %arraydecay)
  %2 = load %struct.v4l2_sliced_vbi_data*, %struct.v4l2_sliced_vbi_data** %data0, align 4
  %incdec.ptr = getelementptr inbounds %struct.v4l2_sliced_vbi_data, %struct.v4l2_sliced_vbi_data* %2, i32 1
  store %struct.v4l2_sliced_vbi_data* %incdec.ptr, %struct.v4l2_sliced_vbi_data** %data0, align 4
  br label %for.inc

for.inc:                                          ; preds = %for.body
  %3 = load i32, i32* %i, align 4
  %inc = add i32 %3, 1
  store i32 %inc, i32* %i, align 4
  br label %for.cond

for.end:                                          ; preds = %for.cond
  ret void
}

attributes #0 = { argmemonly nofree nosync nounwind willreturn }
$ opt -O2 -polly -polly-vectorizer=stripmine -polly-isl-arg=--no-schedule-serialize-sccs reduced.ll -disable-output
/home/nathan/cbl/tc-build/llvm-project/polly/lib/External/isl/isl_schedule_node.c:2472: cannot insert node between set or sequence node and its filter children
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace.
Stack dump:
0.      Program arguments: opt -O2 -polly -polly-vectorizer=stripmine -polly-isl-arg=--no-schedule-serialize-sccs reduced.ll -disable-output
 #0 0x00000000044f9e94 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/local/stow/llvm/2021-12-02_15-48-31-e45705ad5051247e1cb2355094ef77316ae24c37/bin/opt+0x44f9e94)
 #1 0x00000000036e4aeb (/usr/local/stow/llvm/2021-12-02_15-48-31-e45705ad5051247e1cb2355094ef77316ae24c37/bin/opt+0x36e4aeb)
 #2 0x00007fc79c6b1870 __restore_rt sigaction.c:0:0
 #3 0x00007fc79c0cbd22 raise (/usr/lib/libc.so.6+0x3cd22)
 #4 0x00007fc79c0b5862 abort (/usr/lib/libc.so.6+0x26862)
 #5 0x0000000004b4f14f (/usr/local/stow/llvm/2021-12-02_15-48-31-e45705ad5051247e1cb2355094ef77316ae24c37/bin/opt+0x4b4f14f)
 #6 0x0000000004be4e1a (/usr/local/stow/llvm/2021-12-02_15-48-31-e45705ad5051247e1cb2355094ef77316ae24c37/bin/opt+0x4be4e1a)
 #7 0x0000000004be50d0 isl_schedule_node_insert_mark (/usr/local/stow/llvm/2021-12-02_15-48-31-e45705ad5051247e1cb2355094ef77316ae24c37/bin/opt+0x4be50d0)
 #8 0x00000000048f8ed7 (/usr/local/stow/llvm/2021-12-02_15-48-31-e45705ad5051247e1cb2355094ef77316ae24c37/bin/opt+0x48f8ed7)
 #9 0x0000000004be33ef isl_schedule_node_map_descendant_bottom_up (/usr/local/stow/llvm/2021-12-02_15-48-31-e45705ad5051247e1cb2355094ef77316ae24c37/bin/opt+0x4be33ef)
#10 0x00000000048f7588 (/usr/local/stow/llvm/2021-12-02_15-48-31-e45705ad5051247e1cb2355094ef77316ae24c37/bin/opt+0x48f7588)
#11 0x00000000048f5adf (/usr/local/stow/llvm/2021-12-02_15-48-31-e45705ad5051247e1cb2355094ef77316ae24c37/bin/opt+0x48f5adf)
#12 0x00000000048f5a05 polly::IslScheduleOptimizerPass::run(polly::Scop&, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>&, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&) (/usr/local/stow/llvm/2021-12-02_15-48-31-e45705ad5051247e1cb2355094ef77316ae24c37/bin/opt+0x48f5a05)
#13 0x00000000048188ad (/usr/local/stow/llvm/2021-12-02_15-48-31-e45705ad5051247e1cb2355094ef77316ae24c37/bin/opt+0x48188ad)
#14 0x0000000004886b28 llvm::PassManager<polly::Scop, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&>::run(polly::Scop&, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>&, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&) (/usr/local/stow/llvm/2021-12-02_15-48-31-e45705ad5051247e1cb2355094ef77316ae24c37/bin/opt+0x4886b28)
#15 0x00000000048159cd (/usr/local/stow/llvm/2021-12-02_15-48-31-e45705ad5051247e1cb2355094ef77316ae24c37/bin/opt+0x48159cd)
#16 0x0000000004814f6d (/usr/local/stow/llvm/2021-12-02_15-48-31-e45705ad5051247e1cb2355094ef77316ae24c37/bin/opt+0x4814f6d)
#17 0x00000000027ff0a7 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/usr/local/stow/llvm/2021-12-02_15-48-31-e45705ad5051247e1cb2355094ef77316ae24c37/bin/opt+0x27ff0a7)
#18 0x00000000027fed8d (/usr/local/stow/llvm/2021-12-02_15-48-31-e45705ad5051247e1cb2355094ef77316ae24c37/bin/opt+0x27fed8d)
#19 0x0000000002c83148 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/usr/local/stow/llvm/2021-12-02_15-48-31-e45705ad5051247e1cb2355094ef77316ae24c37/bin/opt+0x2c83148)
#20 0x0000000002c82ecd (/usr/local/stow/llvm/2021-12-02_15-48-31-e45705ad5051247e1cb2355094ef77316ae24c37/bin/opt+0x2c82ecd)
#21 0x000000000317a2d1 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/usr/local/stow/llvm/2021-12-02_15-48-31-e45705ad5051247e1cb2355094ef77316ae24c37/bin/opt+0x317a2d1)
#22 0x0000000003969bed llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::StringRef>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool) (/usr/local/stow/llvm/2021-12-02_15-48-31-e45705ad5051247e1cb2355094ef77316ae24c37/bin/opt+0x3969bed)
#23 0x000000000397b807 main (/usr/local/stow/llvm/2021-12-02_15-48-31-e45705ad5051247e1cb2355094ef77316ae24c37/bin/opt+0x397b807)
#24 0x00007fc79c0b6b25 __libc_start_main (/usr/lib/libc.so.6+0x27b25)
#25 0x0000000003966e5e _start (/usr/local/stow/llvm/2021-12-02_15-48-31-e45705ad5051247e1cb2355094ef77316ae24c37/bin/opt+0x3966e5e)

$ opt -O1 -polly -polly-vectorizer=stripmine -polly-isl-arg=--no-schedule-serialize-sccs reduced.ll -disable-output

$ echo $?
0

I landed on c40126e when bisecting on the C reproducer but I am not sure how accurate that is (perhaps that change just exposes an existing issue?)

@Meinersbur
Copy link
Member

Thanks for the report and the great reproducer! This was fixed in 937b00a

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants