SuccessChanges

Summary

  1. [libFuzzer] Evenly select inputs to cross over with from the corpus regardless of the input's coverage. (details)
  2. [NewPM][Lint] Port -lint to NewPM (details)
  3. [MIRVRegNamer] Experimental MachineInstr stable hashing (Fowler-Noll-Vo) (details)
  4. [gn build] Port 7fff1fbd3ce (details)
Commit b53243e19496ae59ae1ce457a40e3ea610011fd1 by dokyungs
[libFuzzer] Evenly select inputs to cross over with from the corpus regardless of the input's coverage.

This patch adds an option "cross_over_uniform_dist", which, if 1, considers all
inputs in the corpus for the crossover input selection. More specifically, this
patch uses a uniform distribution of all inputs in the corpus for the CrossOver
input selection. Note that input selection for mutation is still fully
determined by the scheduling policy (i.e., vanilla or Entropic); the uniform
distribution only applies to the secondary input selection, only for the
crossover mutation of the base input chosen by the scheduling policy. This way
the corpus inputs that have useful fragments in them, even though they are
deprioritized by the scheduling policy, have chances of getting mixed with other
inputs that are prioritized and selected as base input for mutation.

Differential Revision: https://reviews.llvm.org/D86954
The file was modifiedcompiler-rt/lib/fuzzer/FuzzerLoop.cpp (diff)
The file was modifiedcompiler-rt/lib/fuzzer/FuzzerCorpus.h (diff)
The file was addedcompiler-rt/test/fuzzer/cross_over_uniform_dist.test
The file was modifiedcompiler-rt/lib/fuzzer/FuzzerFlags.def (diff)
The file was modifiedcompiler-rt/lib/fuzzer/FuzzerOptions.h (diff)
The file was modifiedcompiler-rt/lib/fuzzer/FuzzerDriver.cpp (diff)
Commit c9771391ce05e5cba00e29017fd6c39157df3f3c by aeubanks
[NewPM][Lint] Port -lint to NewPM

This also changes -lint from an analysis to a pass. It's similar to
-verify, and that is a normal pass, and lives in llvm/IR.

Reviewed By: ychen

Differential Revision: https://reviews.llvm.org/D87057
The file was modifiedllvm/lib/Analysis/Lint.cpp (diff)
The file was modifiedllvm/lib/Passes/PassBuilder.cpp (diff)
The file was modifiedllvm/include/llvm/InitializePasses.h (diff)
The file was modifiedllvm/include/llvm/Analysis/Lint.h (diff)
The file was modifiedllvm/test/Other/lint.ll (diff)
The file was modifiedllvm/include/llvm/LinkAllPasses.h (diff)
The file was modifiedllvm/lib/Analysis/Analysis.cpp (diff)
The file was modifiedllvm/lib/Passes/PassRegistry.def (diff)
Commit 7fff1fbd3ce1c069aff0f475e896d50a39deb1ac by plotfi
[MIRVRegNamer] Experimental MachineInstr stable hashing (Fowler-Noll-Vo)

This hashing scheme has been useful out of tree, and I want to start
experimenting with it. Specifically I want to experiment on the
MIRVRegNamer, MIRCanononicalizer, and eventually the MachineOutliner.

This diff is a first step, that optionally brings stable hashing to the
MIRVRegNamer (and as a result, the MIRCanonicalizer).  We've tested this
hashing scheme on a lot of MachineOperand types that llvm::hash_value
can not handle in a stable manner.

This stable hashing was also the basis for

"Global Machine Outliner for ThinLTO" in EuroLLVM 2020

http://llvm.org/devmtg/2020-04/talks.html#TechTalk_58

Credits: Kyungwoo Lee, Nikolai Tillmann

Differential Revision: https://reviews.llvm.org/D86952
The file was modifiedllvm/include/llvm/CodeGen/MachineOperand.h (diff)
The file was modifiedllvm/lib/CodeGen/MachineOperand.cpp (diff)
The file was modifiedllvm/test/CodeGen/MIR/AArch64/addrspace-memoperands.mir (diff)
The file was modifiedllvm/test/CodeGen/MIR/X86/mircanon-flags.mir (diff)
The file was modifiedllvm/test/CodeGen/MIR/AArch64/mirnamer.mir (diff)
The file was modifiedllvm/test/CodeGen/MIR/AMDGPU/mir-canon-multi.mir (diff)
The file was modifiedllvm/lib/CodeGen/MIRVRegNamerUtils.cpp (diff)
The file was addedllvm/lib/CodeGen/MachineStableHash.cpp
The file was modifiedllvm/test/CodeGen/MIR/AArch64/mir-canon-constant-pool-hash.mir (diff)
The file was modifiedllvm/test/CodeGen/MIR/X86/mir-canon-hash-bb.mir (diff)
The file was modifiedllvm/lib/CodeGen/CMakeLists.txt (diff)
The file was modifiedllvm/test/CodeGen/MIR/X86/mir-namer-hash-frameindex.mir (diff)
The file was modifiedllvm/test/CodeGen/MIR/AArch64/mir-canon-jump-table.mir (diff)
The file was modifiedllvm/test/CodeGen/MIR/AArch64/mirCanonIdempotent.mir (diff)
The file was addedllvm/include/llvm/CodeGen/MachineStableHash.h
The file was modifiedllvm/test/CodeGen/MIR/Generic/CFPImmMIRCanonHash.mir (diff)
The file was addedllvm/include/llvm/CodeGen/StableHashing.h
The file was modifiedllvm/test/CodeGen/MIR/AArch64/mirCanonCopyCopyProp.mir (diff)
The file was modifiedllvm/test/CodeGen/MIR/AMDGPU/mircanon-memoperands.mir (diff)
The file was modifiedllvm/test/CodeGen/MIR/AMDGPU/parse-order-reserved-regs.mir (diff)
Commit 952dc7f288a271e53bae6fa082ad045ade39ffb3 by llvmgnsyncbot
[gn build] Port 7fff1fbd3ce
The file was modifiedllvm/utils/gn/secondary/llvm/lib/CodeGen/BUILD.gn (diff)