Issue 179229
Summary [MemorySSA] Assert "Incorrect incoming access into phi"
Labels new issue
Assignees
Reporter sjoerdmeijer
    This reproducer:

```
short a, c;
int b;
void d(bool e[], char f[][8][8]) {
  a = 0;
  for (;;)
    for (int g; g; g = c || e[1])
      for (; 1 < (1 >> c + 6) + 1;)
        b = f[g][1][g];
}
```

Compiled with clang -O3, this triggers the following assert for a build with expensive checks enabled:

```
clang++: /path/to/llvm-project/llvm/lib/Analysis/MemorySSA.cpp:1956: void llvm::MemorySSA::verifyPrevDefInPhis(IterT) const [IterT =
llvm::iterator_range<llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::BasicBlock, true, false, void, false, void>, false, false>>]: 
Assertion `LastAcc == IncAcc && "Incorrect incoming access into phi."' failed.
```

Stack trace:

```
#0 0x0000aaaab00ac17c llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/local/home/smeijer/llvm-project/build_expensive_checks/bin/clang+++0x560c17c)
 #1 0x0000aaaab00a9c2c llvm::sys::RunSignalHandlers() (/local/home/smeijer/llvm-project/build_expensive_checks/bin/clang+++0x5609c2c)
 #2 0x0000aaaaafff73dc CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x0000fffff7fb09d0 (linux-vdso.so.1+0x9d0)
 #4 0x0000fffff7a1f200 __pthread_kill_implementation ./nptl/./nptl/pthread_kill.c:44:76
 #5 0x0000fffff79da67c gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #6 0x0000fffff79c7130 abort ./stdlib/./stdlib/abort.c:81:7
 #7 0x0000fffff79d3fd0 __assert_fail_base ./assert/./assert/assert.c:89:7
 #8 0x0000fffff79d4040 __assert_perror_fail ./assert/./assert/assert-perr.c:31:1
 #9 0x0000aaaaaf12e978 void llvm::MemorySSA::verifyPrevDefInPhis<llvm::iterator_range<llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::BasicBlock, true, false, void, false, void>, false, false> > >(llvm::iterator_range<llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::BasicBlock, true, false, void, false, void>, fals
e, false> >) const (/local/home/smeijer/llvm-project/build_expensive_checks/bin/clang+++0x468e978)
#10 0x0000aaaab14c8fb8 unswitchNontrivialInvariants(llvm::Loop&, llvm::Instruction&, llvm::ArrayRef<llvm::Value*>, llvm::IVConditionInfo&, llvm::DominatorTree&, llvm::LoopInfo&, llvm::AssumptionCache&, llvm::ScalarEvolution*, llvm::MemorySSAUpdater*, llvm::LPMUpdater&, bool, bool) SimpleLoopUnswitch.cpp:0:0
#11 0x0000aaaab14c19d8 unswitchBestCondition(llvm::Loop&, llvm::DominatorTree&, llvm::LoopInfo&, llvm::AssumptionCache&, llvm::AAResults&, llvm::TargetTransformInfo&, llvm::ScalarEvolution*, llvm::MemorySSAUpdater*, llvm::LPMUpdater&) SimpleLoopUnswitch.cpp:0:0
#12 0x0000aaaab14b9834 llvm::SimpleLoopUnswitchPass::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (/local/home/smeijer/llvm-project/build_expensive_checks/bin/clang+++0x6a19834)
#13 0x0000aaaaafec8780 std::optional<llvm::PreservedAnalyses> llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::runSinglePass<llvm::Loop, std::unique_ptr<llvm::detail::PassConcept<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::
LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>, std::default_delete<llvm::detail::PassConcept<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&> > > >(llvm::Loop&, std::unique_ptr<llvm::detail::PassConcept<llvm::L
oop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>, std::default_delete<llvm::detail::PassConcept<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&> > >&, llvm::AnalysisMan
ager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&, llvm::PassInstrumentation&) (/local/home/smeijer/llvm-project/build_expensive_checks/bin/clang+++0x5428780)
```

I have been trying to get an IR and `opt` reproducer, but haven't managed to do so. I don't know yet why my IR reproducer isn't triggering this. I will try again, but need to switch tasks now, so am leaving this here. 
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to