Using csmith (a random valid c program generator) we can stress the compiler with random programs. When we find an interesting case (ICE, execution mismatch) we can use creduce or cvise to reduce the testcase.
I (Patrick) have been doing this with success for a bit now and it has helped find issues with the riscv vector targets (and a generic issue too!)
I recommend focusing on ISA strings with "clean" testsuites (no ICEs or execution fails) since that means every new failure will be novel.
There is a docker image if you just want to start fuzzing riscv-gcc.
Example command:
export RUNNER_NAME="local"
sudo docker pull ghcr.io/patrick-rivos/compiler-fuzz-ci:latest && sudo docker run -v ~/csmith-discoveries:/compiler-fuzz-ci/csmith-discoveries ghcr.io/patrick-rivos/compiler-fuzz-ci:latest sh -c "date > /compiler-fuzz-ci/csmith-discoveries/$RUNNER_NAME && nice -n 15 parallel --link \"./scripts/fuzz-qemu.sh $RUNNER_NAME-{1} {2}\" ::: $(seq 1 $(nproc) | tr '\n' ' ') ::: '-march=rv64gcv -ftree-vectorize -O3' '-march=rv64gcv_zvl256b -ftree-vectorize -O3' '-march=rv64gcv -O3' '-march=rv64gcv_zvl256b -O3' '-march=rv64gcv -ftree-vectorize -O3 -mtune=generic-ooo' '-march=rv64gcv_zvl256b -ftree-vectorize -O3 -mtune=generic-ooo' '-march=rv64gcv -O3 -mtune=generic-ooo' '-march=rv64gcv_zvl256b -O3 -mtune=generic-ooo'"
Command structure:
sudo docker pull ghcr.io/patrick-rivos/compiler-fuzz-ci:latest \ # Clone most recent container
&& sudo docker run \
-v ~/csmith-discoveries:/compiler-fuzz-ci/csmith-discoveries \ # Map the container's output directory with the user's desired output. Follows the format -v <SELECTED DIR>:<CONTAINER OUTPUT DIR>
ghcr.io/patrick-rivos/compiler-fuzz-ci:latest \ # Run this container
sh -c "date > /compiler-fuzz-ci/csmith-discoveries/$RUNNER_NAME \ # Record the start time
&& nice -n 15 \ # Run at a low priority so other tasks preempt the fuzzer
parallel --link \ # Gnu parallel. Link the args so they get mapped to the core enumeration
\"./scripts/fuzz-qemu.sh $RUNNER_NAME-{1} {2}\" \ # For each core provide a set of args
::: $(seq 1 $(nproc) | tr '\n' ' ') \ # Enumerate cores
::: '-march=rv64gcv -ftree-vectorize -O3' '-march=rv64gcv_zvl256b -ftree-vectorize -O3' '-march=rv64gcv -O3' '-march=rv64gcv_zvl256b -O3' '-march=rv64gcv -ftree-vectorize -O3 -mtune=generic-ooo' '-march=rv64gcv_zvl256b -ftree-vectorize -O3 -mtune=generic-ooo' '-march=rv64gcv -O3 -mtune=generic-ooo' '-march=rv64gcv_zvl256b -O3 -mtune=generic-ooo'"
# ^ All the compiler flags we're interested in
git submodule update --init csmith
sudo apt install -y g++ cmake m4
mkdir csmith-build
cd csmith
cmake -DCMAKE_INSTALL_PREFIX=../csmith-build .
make && make install
Bump GCC to use tip-of-tree & build:
git submodule update --init riscv-gnu-toolchain
cd riscv-gnu-toolchain
git submodule update --init gcc
cd gcc
git checkout master
cd ..
cd ..
mkdir build-riscv-gnu-toolchain
cd build-riscv-gnu-toolchain
../riscv-gnu-toolchain/configure --prefix=$(pwd) --with-arch=rv64gcv --with-abi=lp64d
make linux -j32
make build-qemu -j32
Update scripts compiler.path qemu.path scripts.path with the absolute paths to each of those components.
./scripts/fuzz-ice.sh csmith-tmp-1 "-march=rv64gcv -mabi=lp64d -ftree-vectorize -O3"
Running a single script is good, but if you have multiple cores (you probably do!) you can use them all!
parallel --lb "nice -n 15 ./fuzz-qemu.sh csmith-tmp-{} '-march=rv64gcv -mabi=lp64d -ftree-vectorize -O3'" ::: {0..$(nproc)}
gnu parallel makes running multiple copies of a script easy.
nice -n 15 basically tells linux "this process is low priority".
By setting this, we can leave the fuzzer going in the background and linux will automatically de-prioritize the fuzzer when more important tasks happen (like when building GCC/running a testsuite/terminal sessions/anything)
Once you've found a bug you could submit it directly to bugzilla, but it's pretty big and can probably be reduced in size!
Here's what your bug could look like after reducing it pr112561:
int printf(char *, ...);
int a, b, c, e;
short d[7][7] = {};
void main() {
short f;
c = 0;
for (; c <= 6; c++) {
e |= d[c][c] & 1;
b &= f & 3;
}
printf("%X\n", a);
}
- Set up scripts directory
Fill out compiler.path, csmith.path, qemu.path, and scripts.path More info.
- Create triage directory & copy over the testcase
This will hold the initial testcase (rename it to raw.c) and the reduced testcase (red.c)
cdinto the triage folder- Preprocess the initial testcase (raw.c)
../scripts/preprocess.sh '<gcc-opts>'
- Edit
cred-ice.shorcred-qemu.shto use the correct compilation options
Ensure the behavior is present by running the script:
../scripts/cred-ice.sh or ../scripts/cred-ice.sh
This is a great time to try to reduce the command line args/ISA string. Edit compiler-opts.txt and see if removing some extensions still causes the issue to show up.
- Reduce!
You can use creduce or cvise for this. I prefer creduce so that's what I'll use for the examples, but I use them interchangebly. I think the cli/options are the same for both.
creduce ../scripts/cred-ice.sh red.c compiler-opts.txt
and let it reduce!
Some helpful options:
creduce ../scripts/cred-ice.sh red.c compiler-opts.txt --n 12 - Use 12 cores instead of the default 4
creduce ../scripts/cred-ice.sh red.c compiler-opts.txt --sllooww - Try harder to reduce the testcase. Typically takes longer to reduce so I'll reduce it without --sllooww and then use --sllooww after the initial reduction is done.
cvise can be run with a subset of passes. This is helpful for testcases that tend to reduce to undefined behavior. More info can be found in /cvise-passes
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112801
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112855
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112929
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112932
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112988
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113087
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113206
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113209
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113281
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113431
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113607
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113796
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114027
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114028
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114200
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114247
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114396
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114485
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114665
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114666
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114668
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114733
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114734
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114916
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115336
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115669
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115703
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116033
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116035
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116039
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116059
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116085
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116149
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116202
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116278
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116544
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116715
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117594
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117682
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117990
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118075
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118140
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118154
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118931
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118950
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119114
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119115
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120242
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120297
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120356
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120522
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120550
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120688
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120930
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121126
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121281
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121592
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121985
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122844
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123022
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123097
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123501
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123626
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112469
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112481
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112535
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112552
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112554
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112561
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112733
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112773
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112813
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112851
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112852
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112854
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112872
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112971
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113001
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113210
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113228
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113603
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114195
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114196
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114197
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114198
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114314
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114608
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114749
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115142
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115143
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115495
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115959
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116036
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116131
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116134
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116240
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116280
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116282
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116283
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116296
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116351
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116655
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116720
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117506
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117567
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118084
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120137
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120143
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120357
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120652
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120922
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121072
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121073
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121075
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121659
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121695
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122474
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122475
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114261
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114671
- 78783: RISCV64 miscompile at -O1
- 80744: RISCV64 backend "Invalid size request on a scalable vector"
- 83354: [InstCombine] Infinite loop/hang
- 83469: [Pass Manager] Excessive scheduled passes
- 84350: [RISC-V] Miscompile at -O2
- 86620: [RISC-V] Vector -flto -O2 miscompile
- 86763: [RISC-V][SLP] Sign extension miscompile
- 88079: [RISC-V] Unresolvable relocation with
-fdirect-access-external-data -fstack-protector-all - 88834: [RISC-V][SLPVectorizer] rv64gcv miscompile
- 89833: [RISC-V] rv64gcv miscompile with pass
--riscv-gather-scatter-lowering - 89988: [SLPVectorizer][RISC-V] rv64gcv miscompile with
slp-vectorizerpass - 91025: [SLPVectorizer] Miscompile with rv64gcv -O3
- 92193: [DAGCombine][RISC-V] VSelect miscompile at -O1
- 99729: [RISC-V] Miscompile with -march=rv64gcv_zvl1024b -O2
- 107891: [RISC-V] Miscompile with RISC-V Vector Peephole Optimization
- 111458: [RISC-V] Miscompile with
-flto - 111555: [RISC-V] Miscompile at -O3
- 126974: [RISC-V] Miscompile using rv64gcv
- 132071: [RISC-V] Miscompile on rv64gcv with -O[23]
- 133943: [RISC-V] Miscompile on rv64gcv with -O[23]
- 134126: [RISC-V] Miscompile on rv64gcv with -O3
- 134705: [RISC-V] Miscompile in rv64gcv with -O3 -flto
- 138923: [RISC-V] Miscompile on rv64gcv with -O[23]
- 141098: [RISC-V] Miscompile on -O3 with -flto
- 142004: [RISC-V] Miscompile on -O[1-3]
- 149335: [RISC-V] Miscompile at -O[23]
- 154103: [riscv64] [LoopVectorize] Assertion Failure in computeBestVF with VPlan Cost Model
- 159152: [RISC-V] Miscompile at -O3 with -flto
- 162512: [RISC-V][LV] Miscompile at -O3
- 171994: [LLVM] [RISC-V] [ICE] Assertion Failure at llvm/lib/CodeGen/LiveInterval.cpp:391: bool llvm::LiveRange::overlapsFrom(...)
- 83920: [DAGCombiner][RISC-V] DAGCombiner.cpp:8692: Assertion `Index < ByteWidth && "invalid index requested"' failed.
- 83929: [RISC-V] Segfault during pass 'RISC-V DAG->DAG Pattern Instruction Selection'
- 83931: [InstCombine][RISC-V] UNREACHABLE executed at InstCombineCompares.cpp:2788
- 87378: [LoopVectorize] Assertion `OpType == OperationType::DisjointOp && "recipe cannot have a disjoing flag"' failed.
- 87384: [SLP] Attempted invalid cast from
VectorTypetoFixedVectorType - 87394: [LoopVectorize][VPlan] Unreachable executed "Unhandled opcode!"
- 87407: [LoopVectorize][VPlan] Assertion `MinBWs.size() == NumProcessedRecipes && "some entries in MinBWs haven't been processed"' failed.
- 87410: [LoopVectorize][VPlan] Assertion "Trying to access a single scalar per part but has multiple scalars per part." failed.
- 87441: [Inline] Assert getOperand() out of range! failed.
- 87852: [Clang] Assertion isCurrentFileAST() && "dumping non-AST?" failed. with
-module-file-info - 88018: [Clang][Interp] Assertion 'Offset + sizeof(T) <= Pointee->getDescriptor()->getAllocSize()' failed. with
-fexperimental-new-constant-interpreter - 88038: [Clang] Segfault with
-fcoverage-mapping -fcs-profile-generate -fprofile-instr-generate - 88041: [X86][RISC-V][AARCH64] fatal error: error in backend: Can only embed the module once with
-fembed-bitcode -ffat-lto-objects -flto - 88046: [RISC-V] Unhandled encodeInstruction length! at RISCVMCCodeEmitter.cpp:338 with
-fglobal-isel -fstack-protector-all - 88057: [RISC-V] LLVM ERROR: unable to legalize instruction with
-fglobal-isel -finstrument-functions -flto -fuse-ld=lld - 88058: [X86] LLVM ERROR: cannot select with
-fglobal-isel -finstrument-functions -flto - 88061: [LLD] Unreachable executed with
-fsplit-stack - 88153: [Clang] Assertion 'Symbol' failed. with
-fdebug-macro -gline-directives-only - 88208: [CodeGen] Assertion 'Offset >= Size' failed. with
-mms-bitfields - 88576: [RISC-V] Error in backend: Invalid size request on a scalable vector.
- 88796: [VectorCombine] Assertion 'isa(Val) && "cast() argument of incompatible type!"' failed.
- 88799: [CodeGen][RISC-V] Assertion `(!MMO->getSize().hasValue() || !getSize().hasValue() || MMO->getSize() == getSize()) && "Size mismatch!"' failed.
- 88804: [LoopVectorize][VPlan] Found non-header PHI recipe in header - Assertion `verifyVPlanIsValid(*Plan) && "VPlan is invalid"' failed.
- 89285: [CodeGen][RISC-V] Assertion '(FrameSDOps.empty() || MF.getFrameInfo().adjustsStack()) && "AdjustsStack not set in presence of a frame pseudo instruction."' failed.
- 95865: [RISC-V] Assertion '!mi2iMap.contains(&MI) && "Instr already indexed."' failed
- 95870: [RISC-V] Assertion: 'AdjustsStack not set in presence of a frame pseudo instruction.' at -O1 with -fwrapv
- 96328: [LoopVectorize][VPlan] Assertion `VF.Width == Width && "VPlan cost model and legacy cost model disagreed"' failed.
- 97452: [LoopVectorize] Assertion `Offset <= State.VF.getKnownMinValue() && "invalid offset to extract from"' failed.
- 99701: [VPlan] Assertion `VF.Width == Width && "VPlan cost model and legacy cost model disagreed"' failed.
- 100591: [VPlan] Assertion `VF.Width == Width && "VPlan cost model and legacy cost model disagreed"' failed.
- 100822: [RISC-V] Assertion "FP not reserved" failed with -mabi=lp64e and -mabi=ilp32e
- 100855: [RISC-V]
Cannot select: t32: i32 = RISCVISD::CZERO_EQZ t25, t4with xventanacondops - 101067: [RISC-V] Cannot select
t21: i64,ch = store<(store (s32) into %ir.a), trunc to i32, <post-inc>> t0, Constant:i64<0>, t2, t10with xcvmem and zimop - 102352: [RISC-V] zve32*: Assertion `RISCVTargetLowering::getRegClassIDForVecVT(SubVecContainerVT) == InRegClassID && "Unexpected subvector extraction"' failed.
- 102566: [RISC-V] Assertion `MemVT.getScalarType().bitsLT(VT.getScalarType()) && "Should only be an extending load, not truncating!"' failed.
- 102568: [RISC-V] Assertion `NVT.bitsGE(VT)' failed.
- 102934: [LoopVectorize] Assertion `WideningDecision != CM_Unknown && "Widening decision should be ready at this moment"' failed.
- 104048: [SLP Vectorizer] Assertion `VecTy.SimpleTy != MVT::INVALID_SIMPLE_VALUE_TYPE && "Simple vector VT not representable by simple integer vector VT!"' failed.
- 104480: [RISC-V] PromoteIntegerResult mulhs Do not know how to promote this operator!
- 104714: [VPlan] Assertion `VF.Width == BestVF && "VPlan cost model and legacy cost model disagreed"' failed.
- 105894: [RISC-V] Assertion `isa(Val) && "cast() argument of incompatible type!"' failed.
- 105904: [SLP Vectorizer] Assertion `!empty()' failed.
- 106126: [SLP Vectorizer] Assertion `I >= 0 && I < (NumOpElts * 2) && "Out-of-bounds shuffle mask element"' failed.
- 106257: [LoopVectorize] Assertion `(GeneratedValue->getType()->isVectorTy() == !GeneratesPerFirstLaneOnly || State.VF.isScalar()) && "scalar value but not only first lane defined"' failed.
- 106417: [VPlan] Assertion " VPlan cost model and legacy cost model disagreed"' failed.
- 106641: [VPlan] Assertion " VPlan cost model and legacy cost model disagreed"' failed.
- 106780: [VPlan] Assertion " VPlan cost model and legacy cost model disagreed"' failed.
- 107171: [VPlan] Assertion " VPlan cost model and legacy cost model disagreed"' failed.
- 107473: [VPlan] Assertion " VPlan cost model and legacy cost model disagreed"' failed.
- 107950: [RISC-V] Assertion `TrueV0Def && TrueV0Def->isCopy() && MIV0Def && MIV0Def->isCopy()' failed.
- 108098: [VPlan] Assertion " VPlan cost model and legacy cost model disagreed"' failed.
- 108708: [RISC-V][LoopUnroll] Segfault in
llvm::TargetLoweringBase::getTypeConversion - 110931: [RISC-V] Assertion `MO.getParent()->getParent() == Src.getParent()' failed.
- 111881: [RISCV] Assertion `A.valno == B.valno && "Cannot overlap different values"' failed.
- 111887: [SLP-Vectorizer] Segfault in
HorizontalReduction::matchAssociativeReduction - 114860: [VPlan] Assertion " VPlan cost model and legacy cost model disagreed"' failed.
- 115744: [VPlan] Assertion "VPlan cost model and legacy cost model disagreed"' failed.
- 125269: [RISC-V] Assertion `Idx2 != UINT_MAX && Values.contains(Idx2) && "Expected both indices to be extracted already."' failed
- 125274: [LoopVectorize] Assertion `all_of(I->users(), [&InsertedSet](Value *U) { return InsertedSet.contains(cast(U)); }) && "removed instruction should only be used by instructions inserted " "during expansion"' failed.
- 125278: [LoopVectorize] Assertion `MinBWs.size() == NumProcessedRecipes && "some entries in MinBWs haven't been processed"' failed.
- 125306: [RISC-V] LLVM ERROR: Invalid size request on a scalable vector
- 126581: [SLPVectorizer] Segmentation Fault using opt "-passes=lto"
- 134424: [RISC-V] RegisterCoalescer: Assertion `A.valno == B.valno && "Cannot overlap different values"' failed.
- 134696: [LoopVectorize] Assertion `isPowerOf2_32(End.getKnownMinValue()) && "Expected End to be a power of 2"' failed.
- 137024: [LoopVectorizer] Assertion `hasKnownScalarFactor(RHS) && "Expected RHS to be a known factor!"' failed.
- 141262: [RISC-V] Assertion `L.isLCSSAForm(DT)' failed.
- 141265: [SLPVectorizer] Instruction does not dominate all uses!
- 142447: [InstCombine] ICmp i1 X, C not simplified as expected. with opt "-passes=lto"
- 147986: [RISC-V] Assertion `From.getParent() == To.getParent() && !From.hasImplicitDef()' failed.
- 151392: [LoopVectorize] Assertion `State.TypeAnalysis.inferScalarType(RepRecipe) == Cloned->getType() && "inferred type and type from generated instructions do not match"' failed.
- 155512: [SLPVectorizer] Assertion `(I->use_empty() || all_of(I->uses(), [&](Use &U) { return isDeleted( cast(U.getUser())); })) && "trying to erase instruction with users."' failed.
- 157177: [RISC-V] Assertion `isSimple() && "Expected a SimpleValueType!"' failed.
- 157184: Assertion `OldMaskParam && "no mask param to fold the vl param into"' failed
- 158121: [LLVM][RISCV][ICE] Compiler crash at Assertion Failure at (!From->hasAnyUseOfValue(i) ||, file SelectionDAG.cpp:12171 since a652979b483da6e5a45ebf6428be408de66ac857
- 160393: [RISC-V] Assertion `VT.getVectorElementType() == N1VT.getVectorElementType() && "Extract subvector VTs must have the same element type!"' failed.
- 160396: [LoopVectorize] Assertion `OpType == Other.OpType && "OpType must match"' failed.
- 162374: [LoopVectorize] Assertion `OpType == Other.OpType && "OpType must match"' failed.
- 162688: [LoopVectorize] Assertion `(BestFactor.Width == LegacyVF.Width || BestPlan.hasEarlyExit() || ... && " VPlan cost model and legacy cost model disagreed"' failed.
- 162922: [RISC-V][LoopVectorize] Assertion `hasUseList()' failed.
- 162925: [RISC-V][SLPVectorizer] Assertion `all_of(Bundles, [](const ScheduleBundle *Bundle) { return Bundle->isScheduled(); }) && "must be scheduled at this point"' failed.
- 169948: [LLVM][RISCV][ICE] LoopVectorize Assertion Failure in computeBestVF()
Have an improvement? PRs are welcome!

