diff options
author | Nick Desaulniers <ndesaulniers@google.com> | 2022-08-19 12:40:24 -0700 |
---|---|---|
committer | Nick Desaulniers <ndesaulniers@google.com> | 2022-08-19 12:52:26 -0700 |
commit | e412bac9125a806d147f4f545dd057fac0b4a8f0 (patch) | |
tree | 78f52989e69003aedb3eaf58a80c8cffb3efa5c5 /clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp | |
parent | 95d94a67755620c0a2871ac6f056ca8e9731d5e9 (diff) | |
download | llvm-e412bac9125a806d147f4f545dd057fac0b4a8f0.zip llvm-e412bac9125a806d147f4f545dd057fac0b4a8f0.tar.gz llvm-e412bac9125a806d147f4f545dd057fac0b4a8f0.tar.bz2 |
[MachineVerifier] add checks for INLINEASM_BR
Test for a case we observed after the initial implementation of D129997
landed, in which case we observed a crash while building the ppc64le
Linux kernel. In that case, we had one block with two exits, both to the
same successor. Removing one of the exits corrupted the
successor/predecessor lists.
So when we have an INLINEASM_BR, check a few things for each indirect
target:
1. that it exists.
2. that it is listed in our successors.
3. that its predecessor list contains the parent MBB of INLINEASM_BR.
This would have caught the regression discovered after D129997 landed,
after the pass that was problematic (early-tailduplication) rather than
getting a stack trace in a later pass (regalloc) that doesn't understand
the anomaly and crashes.
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D130290
Diffstat (limited to 'clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp')
0 files changed, 0 insertions, 0 deletions