Skip to content

patrick-rivos/compiler-fuzz-ci

Repository files navigation

Compiler Fuzz

Fuzzing "stable" configs

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.

Getting started

Quickstart

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

Build csmith:

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

Build riscv-gnu-toolchain:

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

Start fuzzing:

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"

Fuzz faster (& nicely!):

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)

Triaging a bug

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);
}

Reduction steps:

  1. Set up scripts directory

Fill out compiler.path, csmith.path, qemu.path, and scripts.path More info.

  1. Create triage directory & copy over the testcase

This will hold the initial testcase (rename it to raw.c) and the reduced testcase (red.c)

  1. cd into the triage folder
  2. Preprocess the initial testcase (raw.c)

../scripts/preprocess.sh '<gcc-opts>'

  1. Edit cred-ice.sh or cred-qemu.sh to 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.

  1. 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

Bug trophy case:

GCC

Runtime fails:

  1. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112801
  2. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112855
  3. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112929
  4. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112932
  5. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112988
  6. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113087
  7. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113206
  8. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113209
  9. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113281
  10. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113431
  11. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113607
  12. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113796
  13. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114027
  14. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114028
  15. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114200
  16. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114247
  17. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114396
  18. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114485
  19. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114665
  20. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114666
  21. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114668
  22. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114733
  23. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114734
  24. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114916
  25. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115336
  26. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115669
  27. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115703
  28. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116033
  29. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116035
  30. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116039
  31. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116059
  32. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116085
  33. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116149
  34. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116202
  35. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116278
  36. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116544
  37. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116715
  38. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117594
  39. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117682
  40. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117990
  41. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118075
  42. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118140
  43. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118154
  44. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118931
  45. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118950
  46. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119114
  47. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119115
  48. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120242
  49. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120297
  50. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120356
  51. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120522
  52. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120550
  53. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120688
  54. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120930
  55. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121126
  56. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121281
  57. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121592
  58. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121985
  59. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122844
  60. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123022
  61. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123097
  62. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123501
  63. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123626

ICEs:

  1. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112469
  2. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112481
  3. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112535
  4. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112552
  5. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112554
  6. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112561
  7. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112733
  8. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112773
  9. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112813
  10. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112851
  11. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112852
  12. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112854
  13. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112872
  14. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112971
  15. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113001
  16. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113210
  17. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113228
  18. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113603
  19. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114195
  20. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114196
  21. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114197
  22. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114198
  23. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114314
  24. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114608
  25. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114749
  26. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115142
  27. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115143
  28. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115495
  29. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115959
  30. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116036
  31. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116131
  32. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116134
  33. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116240
  34. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116280
  35. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116282
  36. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116283
  37. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116296
  38. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116351
  39. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116655
  40. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116720
  41. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117506
  42. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117567
  43. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118084
  44. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120137
  45. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120143
  46. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120357
  47. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120652
  48. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120922
  49. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121072
  50. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121073
  51. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121075
  52. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121659
  53. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121695
  54. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122474
  55. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122475

Other:

  1. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114261
  2. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114671

Bugs filed over time:

Bugs filed over time

LLVM

Runtime fails:

  1. 78783: RISCV64 miscompile at -O1
  2. 80744: RISCV64 backend "Invalid size request on a scalable vector"
  3. 83354: [InstCombine] Infinite loop/hang
  4. 83469: [Pass Manager] Excessive scheduled passes
  5. 84350: [RISC-V] Miscompile at -O2
  6. 86620: [RISC-V] Vector -flto -O2 miscompile
  7. 86763: [RISC-V][SLP] Sign extension miscompile
  8. 88079: [RISC-V] Unresolvable relocation with -fdirect-access-external-data -fstack-protector-all
  9. 88834: [RISC-V][SLPVectorizer] rv64gcv miscompile
  10. 89833: [RISC-V] rv64gcv miscompile with pass --riscv-gather-scatter-lowering
  11. 89988: [SLPVectorizer][RISC-V] rv64gcv miscompile with slp-vectorizer pass
  12. 91025: [SLPVectorizer] Miscompile with rv64gcv -O3
  13. 92193: [DAGCombine][RISC-V] VSelect miscompile at -O1
  14. 99729: [RISC-V] Miscompile with -march=rv64gcv_zvl1024b -O2
  15. 107891: [RISC-V] Miscompile with RISC-V Vector Peephole Optimization
  16. 111458: [RISC-V] Miscompile with -flto
  17. 111555: [RISC-V] Miscompile at -O3
  18. 126974: [RISC-V] Miscompile using rv64gcv
  19. 132071: [RISC-V] Miscompile on rv64gcv with -O[23]
  20. 133943: [RISC-V] Miscompile on rv64gcv with -O[23]
  21. 134126: [RISC-V] Miscompile on rv64gcv with -O3
  22. 134705: [RISC-V] Miscompile in rv64gcv with -O3 -flto
  23. 138923: [RISC-V] Miscompile on rv64gcv with -O[23]
  24. 141098: [RISC-V] Miscompile on -O3 with -flto
  25. 142004: [RISC-V] Miscompile on -O[1-3]
  26. 149335: [RISC-V] Miscompile at -O[23]
  27. 154103: [riscv64] [LoopVectorize] Assertion Failure in computeBestVF with VPlan Cost Model
  28. 159152: [RISC-V] Miscompile at -O3 with -flto
  29. 162512: [RISC-V][LV] Miscompile at -O3
  30. 171994: [LLVM] [RISC-V] [ICE] Assertion Failure at llvm/lib/CodeGen/LiveInterval.cpp:391: bool llvm::LiveRange::overlapsFrom(...)

ICEs:

  1. 83920: [DAGCombiner][RISC-V] DAGCombiner.cpp:8692: Assertion `Index < ByteWidth && "invalid index requested"' failed.
  2. 83929: [RISC-V] Segfault during pass 'RISC-V DAG->DAG Pattern Instruction Selection'
  3. 83931: [InstCombine][RISC-V] UNREACHABLE executed at InstCombineCompares.cpp:2788
  4. 87378: [LoopVectorize] Assertion `OpType == OperationType::DisjointOp && "recipe cannot have a disjoing flag"' failed.
  5. 87384: [SLP] Attempted invalid cast from VectorType to FixedVectorType
  6. 87394: [LoopVectorize][VPlan] Unreachable executed "Unhandled opcode!"
  7. 87407: [LoopVectorize][VPlan] Assertion `MinBWs.size() == NumProcessedRecipes && "some entries in MinBWs haven't been processed"' failed.
  8. 87410: [LoopVectorize][VPlan] Assertion "Trying to access a single scalar per part but has multiple scalars per part." failed.
  9. 87441: [Inline] Assert getOperand() out of range! failed.
  10. 87852: [Clang] Assertion isCurrentFileAST() && "dumping non-AST?" failed. with -module-file-info
  11. 88018: [Clang][Interp] Assertion 'Offset + sizeof(T) <= Pointee->getDescriptor()->getAllocSize()' failed. with -fexperimental-new-constant-interpreter
  12. 88038: [Clang] Segfault with -fcoverage-mapping -fcs-profile-generate -fprofile-instr-generate
  13. 88041: [X86][RISC-V][AARCH64] fatal error: error in backend: Can only embed the module once with -fembed-bitcode -ffat-lto-objects -flto
  14. 88046: [RISC-V] Unhandled encodeInstruction length! at RISCVMCCodeEmitter.cpp:338 with -fglobal-isel -fstack-protector-all
  15. 88057: [RISC-V] LLVM ERROR: unable to legalize instruction with -fglobal-isel -finstrument-functions -flto -fuse-ld=lld
  16. 88058: [X86] LLVM ERROR: cannot select with -fglobal-isel -finstrument-functions -flto
  17. 88061: [LLD] Unreachable executed with -fsplit-stack
  18. 88153: [Clang] Assertion 'Symbol' failed. with -fdebug-macro -gline-directives-only
  19. 88208: [CodeGen] Assertion 'Offset >= Size' failed. with -mms-bitfields
  20. 88576: [RISC-V] Error in backend: Invalid size request on a scalable vector.
  21. 88796: [VectorCombine] Assertion 'isa(Val) && "cast() argument of incompatible type!"' failed.
  22. 88799: [CodeGen][RISC-V] Assertion `(!MMO->getSize().hasValue() || !getSize().hasValue() || MMO->getSize() == getSize()) && "Size mismatch!"' failed.
  23. 88804: [LoopVectorize][VPlan] Found non-header PHI recipe in header - Assertion `verifyVPlanIsValid(*Plan) && "VPlan is invalid"' failed.
  24. 89285: [CodeGen][RISC-V] Assertion '(FrameSDOps.empty() || MF.getFrameInfo().adjustsStack()) && "AdjustsStack not set in presence of a frame pseudo instruction."' failed.
  25. 95865: [RISC-V] Assertion '!mi2iMap.contains(&MI) && "Instr already indexed."' failed
  26. 95870: [RISC-V] Assertion: 'AdjustsStack not set in presence of a frame pseudo instruction.' at -O1 with -fwrapv
  27. 96328: [LoopVectorize][VPlan] Assertion `VF.Width == Width && "VPlan cost model and legacy cost model disagreed"' failed.
  28. 97452: [LoopVectorize] Assertion `Offset <= State.VF.getKnownMinValue() && "invalid offset to extract from"' failed.
  29. 99701: [VPlan] Assertion `VF.Width == Width && "VPlan cost model and legacy cost model disagreed"' failed.
  30. 100591: [VPlan] Assertion `VF.Width == Width && "VPlan cost model and legacy cost model disagreed"' failed.
  31. 100822: [RISC-V] Assertion "FP not reserved" failed with -mabi=lp64e and -mabi=ilp32e
  32. 100855: [RISC-V] Cannot select: t32: i32 = RISCVISD::CZERO_EQZ t25, t4 with xventanacondops
  33. 101067: [RISC-V] Cannot select t21: i64,ch = store<(store (s32) into %ir.a), trunc to i32, <post-inc>> t0, Constant:i64<0>, t2, t10 with xcvmem and zimop
  34. 102352: [RISC-V] zve32*: Assertion `RISCVTargetLowering::getRegClassIDForVecVT(SubVecContainerVT) == InRegClassID && "Unexpected subvector extraction"' failed.
  35. 102566: [RISC-V] Assertion `MemVT.getScalarType().bitsLT(VT.getScalarType()) && "Should only be an extending load, not truncating!"' failed.
  36. 102568: [RISC-V] Assertion `NVT.bitsGE(VT)' failed.
  37. 102934: [LoopVectorize] Assertion `WideningDecision != CM_Unknown && "Widening decision should be ready at this moment"' failed.
  38. 104048: [SLP Vectorizer] Assertion `VecTy.SimpleTy != MVT::INVALID_SIMPLE_VALUE_TYPE && "Simple vector VT not representable by simple integer vector VT!"' failed.
  39. 104480: [RISC-V] PromoteIntegerResult mulhs Do not know how to promote this operator!
  40. 104714: [VPlan] Assertion `VF.Width == BestVF && "VPlan cost model and legacy cost model disagreed"' failed.
  41. 105894: [RISC-V] Assertion `isa(Val) && "cast() argument of incompatible type!"' failed.
  42. 105904: [SLP Vectorizer] Assertion `!empty()' failed.
  43. 106126: [SLP Vectorizer] Assertion `I >= 0 && I < (NumOpElts * 2) && "Out-of-bounds shuffle mask element"' failed.
  44. 106257: [LoopVectorize] Assertion `(GeneratedValue->getType()->isVectorTy() == !GeneratesPerFirstLaneOnly || State.VF.isScalar()) && "scalar value but not only first lane defined"' failed.
  45. 106417: [VPlan] Assertion " VPlan cost model and legacy cost model disagreed"' failed.
  46. 106641: [VPlan] Assertion " VPlan cost model and legacy cost model disagreed"' failed.
  47. 106780: [VPlan] Assertion " VPlan cost model and legacy cost model disagreed"' failed.
  48. 107171: [VPlan] Assertion " VPlan cost model and legacy cost model disagreed"' failed.
  49. 107473: [VPlan] Assertion " VPlan cost model and legacy cost model disagreed"' failed.
  50. 107950: [RISC-V] Assertion `TrueV0Def && TrueV0Def->isCopy() && MIV0Def && MIV0Def->isCopy()' failed.
  51. 108098: [VPlan] Assertion " VPlan cost model and legacy cost model disagreed"' failed.
  52. 108708: [RISC-V][LoopUnroll] Segfault in llvm::TargetLoweringBase::getTypeConversion
  53. 110931: [RISC-V] Assertion `MO.getParent()->getParent() == Src.getParent()' failed.
  54. 111881: [RISCV] Assertion `A.valno == B.valno && "Cannot overlap different values"' failed.
  55. 111887: [SLP-Vectorizer] Segfault in HorizontalReduction::matchAssociativeReduction
  56. 114860: [VPlan] Assertion " VPlan cost model and legacy cost model disagreed"' failed.
  57. 115744: [VPlan] Assertion "VPlan cost model and legacy cost model disagreed"' failed.
  58. 125269: [RISC-V] Assertion `Idx2 != UINT_MAX && Values.contains(Idx2) && "Expected both indices to be extracted already."' failed
  59. 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.
  60. 125278: [LoopVectorize] Assertion `MinBWs.size() == NumProcessedRecipes && "some entries in MinBWs haven't been processed"' failed.
  61. 125306: [RISC-V] LLVM ERROR: Invalid size request on a scalable vector
  62. 126581: [SLPVectorizer] Segmentation Fault using opt "-passes=lto"
  63. 134424: [RISC-V] RegisterCoalescer: Assertion `A.valno == B.valno && "Cannot overlap different values"' failed.
  64. 134696: [LoopVectorize] Assertion `isPowerOf2_32(End.getKnownMinValue()) && "Expected End to be a power of 2"' failed.
  65. 137024: [LoopVectorizer] Assertion `hasKnownScalarFactor(RHS) && "Expected RHS to be a known factor!"' failed.
  66. 141262: [RISC-V] Assertion `L.isLCSSAForm(DT)' failed.
  67. 141265: [SLPVectorizer] Instruction does not dominate all uses!
  68. 142447: [InstCombine] ICmp i1 X, C not simplified as expected. with opt "-passes=lto"
  69. 147986: [RISC-V] Assertion `From.getParent() == To.getParent() && !From.hasImplicitDef()' failed.
  70. 151392: [LoopVectorize] Assertion `State.TypeAnalysis.inferScalarType(RepRecipe) == Cloned->getType() && "inferred type and type from generated instructions do not match"' failed.
  71. 155512: [SLPVectorizer] Assertion `(I->use_empty() || all_of(I->uses(), [&](Use &U) { return isDeleted( cast(U.getUser())); })) && "trying to erase instruction with users."' failed.
  72. 157177: [RISC-V] Assertion `isSimple() && "Expected a SimpleValueType!"' failed.
  73. 157184: Assertion `OldMaskParam && "no mask param to fold the vl param into"' failed
  74. 158121: [LLVM][RISCV][ICE] Compiler crash at Assertion Failure at (!From->hasAnyUseOfValue(i) ||, file SelectionDAG.cpp:12171 since a652979b483da6e5a45ebf6428be408de66ac857
  75. 160393: [RISC-V] Assertion `VT.getVectorElementType() == N1VT.getVectorElementType() && "Extract subvector VTs must have the same element type!"' failed.
  76. 160396: [LoopVectorize] Assertion `OpType == Other.OpType && "OpType must match"' failed.
  77. 162374: [LoopVectorize] Assertion `OpType == Other.OpType && "OpType must match"' failed.
  78. 162688: [LoopVectorize] Assertion `(BestFactor.Width == LegacyVF.Width || BestPlan.hasEarlyExit() || ... && " VPlan cost model and legacy cost model disagreed"' failed.
  79. 162922: [RISC-V][LoopVectorize] Assertion `hasUseList()' failed.
  80. 162925: [RISC-V][SLPVectorizer] Assertion `all_of(Bundles, [](const ScheduleBundle *Bundle) { return Bundle->isScheduled(); }) && "must be scheduled at this point"' failed.
  81. 169948: [LLVM][RISCV][ICE] LoopVectorize Assertion Failure in computeBestVF()

Bugs filed over time:

Bugs filed over time

Contribute

Have an improvement? PRs are welcome!

About

Fuzzing related tools for GCC/LLVM (or any compiler) with a focus on RISC-V

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors