1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 03:33:20 +01:00
llvm-mirror/tools
Fangrui Song 8bf934f954 [llvm-exegesis] Clustering: don't enqueue a point multiple times
Summary:
SetVector uses both DenseSet and vector, which is time/memory inefficient. The points are represented as natural numbers so we can replace the DenseSet part by indexing into a vector<char> instead.

Don't cargo cult the pseudocode on the wikipedia DBSCAN page. This is a standard BFS style algorithm (the similar loops have been used several times in other LLVM components): every point is processed at most once, thus the queue has at most NumPoints elements. We represent it with a vector and allocate it outside of the loop to avoid allocation in the loop body.

We check `Processed[P]` to avoid enqueueing a point more than once, which also nicely saves us a `ClusterIdForPoint_[Q].isUndef()` check.

Many people hate the oneshot abstraction but some favor it, therefore we make a compromise, use a lambda to abstract away the neighbor adding process.

Delete the comment `assert(Neighbors.capacity() == (Points_.size() - 1));` as it is wrong.

llvm-svn: 350035
2018-12-23 20:48:52 +00:00
..
bugpoint [bugpoint][PR29027] Reduce function attributes 2018-12-19 03:42:19 +00:00
bugpoint-passes cmake: Remove add_llvm_loadable_module() 2018-12-20 22:04:08 +00:00
dsymutil [dsymutil] Ensure we're comparing time stamps with the same precision. 2018-12-04 17:15:23 +00:00
gold cmake: Remove add_llvm_loadable_module() 2018-12-20 22:04:08 +00:00
llc
lli [Support] Make error banner optional in logAllUnhandledErrors 2018-11-11 01:46:03 +00:00
llvm-ar [binutils] NFC: fix clang-tidy warning: use empty() instead of size() == 0 2018-12-20 00:57:06 +00:00
llvm-as
llvm-as-fuzzer
llvm-bcanalyzer Revert 349677, it contained a whole bunch of stuff I did not mean to commit 2018-12-19 20:19:58 +00:00
llvm-c-test [LLVM-C] Improve Intrinsics Bindings 2018-11-06 01:38:14 +00:00
llvm-cat
llvm-cfi-verify Revert r342148 (and follow-on fix attempts r342154, r342180, r342182, r342193) 2018-09-15 19:04:27 +00:00
llvm-config Don't add unnecessary compiler flags to llvm-config output 2018-12-13 18:21:23 +00:00
llvm-cov [binutils] NFC: fix clang-tidy warning: use empty() instead of size() == 0 2018-12-20 00:57:06 +00:00
llvm-cvtres [opt] Change the parameter of OptTable::PrintHelp from Name to Usage and don't append "[options] <inputs>" 2018-10-10 00:15:31 +00:00
llvm-cxxdump [Support] Make error banner optional in logAllUnhandledErrors 2018-11-11 01:46:03 +00:00
llvm-cxxfilt
llvm-cxxmap Add flag to llvm-profdata to allow symbols in profile data to be remapped, and 2018-09-13 20:22:02 +00:00
llvm-demangle-fuzzer Revert 349677, it contained a whole bunch of stuff I did not mean to commit 2018-12-19 20:19:58 +00:00
llvm-diff [TI removal] Make getTerminator() return a generic Instruction. 2018-10-15 10:42:50 +00:00
llvm-dis
llvm-dwarfdump Revert r347490 as it breaks address sanitizer builds 2018-11-23 17:13:06 +00:00
llvm-dwp Reland rL341509: "[llvm-dwp] Use buffer_stream if output file is not seekable (e.g. "-")" 2018-09-06 20:26:54 +00:00
llvm-exegesis [llvm-exegesis] Clustering: don't enqueue a point multiple times 2018-12-23 20:48:52 +00:00
llvm-extract
llvm-go [bindings/go] Add coroutine passes 2018-08-19 23:40:05 +00:00
llvm-isel-fuzzer
llvm-jitlistener
llvm-link Restore "[ThinLTO] Ensure we always select the same function copy to import" 2018-07-16 15:30:27 +00:00
llvm-lto [ThinLTO] Import local variables from the same module as caller 2018-11-29 17:02:42 +00:00
llvm-lto2 [LTO] Call InitLLVM from llvm-lto2 2018-10-16 17:37:45 +00:00
llvm-mc [MC] Separate masm integer literal lexer support from inline asm 2018-10-24 20:23:57 +00:00
llvm-mc-assemble-fuzzer [llvm-mc-assemble-fuzzer] Update API - Pass MCObjectWriter instead of a stream 2018-08-17 04:38:41 +00:00
llvm-mc-disassemble-fuzzer
llvm-mca [llvm-mca] Rename an error variable. 2018-12-19 18:57:43 +00:00
llvm-modextract
llvm-mt [llvm-mt] Accept and ignore notify_update flag 2018-11-07 18:36:50 +00:00
llvm-nm [binutils] NFC: fix clang-tidy warning: use empty() instead of size() == 0 2018-12-20 00:57:06 +00:00
llvm-objcopy [llvm-objcopy] [COFF] Avoid memcpy() with null parameters in more places. NFC. 2018-12-20 21:35:59 +00:00
llvm-objdump [binutils] NFC: fix clang-tidy warning: use empty() instead of size() == 0 2018-12-20 00:57:06 +00:00
llvm-opt-fuzzer [NewPM] teach -passes= to emit meaningful error messages 2018-10-17 10:36:23 +00:00
llvm-opt-report Reland: [OptRemarks] Add library for parsing optimization remarks 2018-10-10 18:43:42 +00:00
llvm-pdbutil [llvm-pdbutil] Remove the analyze subcommand. 2018-12-04 21:49:04 +00:00
llvm-profdata Add flag to llvm-profdata to allow symbols in profile data to be remapped, and 2018-09-13 20:22:02 +00:00
llvm-rc [llvm-rc] Support not expressions. 2018-12-05 13:22:56 +00:00
llvm-readobj [binutils] NFC: fix clang-tidy warning: use empty() instead of size() == 0 2018-12-20 00:57:06 +00:00
llvm-rtdyld [Support] Make error banner optional in logAllUnhandledErrors 2018-11-11 01:46:03 +00:00
llvm-shlib Support of hurd in llvm-shlib 2018-10-18 20:07:44 +00:00
llvm-size [binutils] NFC: fix clang-tidy warning: use empty() instead of size() == 0 2018-12-20 00:57:06 +00:00
llvm-special-case-list-fuzzer
llvm-split
llvm-stress
llvm-strings [llvm-strings] Fix whitespaces to match strings output. 2018-11-09 18:03:21 +00:00
llvm-symbolizer
llvm-undname [llvm-undname] Use WithColor for error reporting 2018-11-11 22:11:47 +00:00
llvm-xray [XRay] Add a helper function sortByKey to simplify code 2018-12-11 17:34:15 +00:00
llvm-yaml-numeric-parser-fuzzer Use LLVM_BUILTIN_TRAP not __builtin_trap to appease windows builds. NFCI. 2018-08-20 09:49:20 +00:00
lto [libLTO] Expose LLVMCreateDisasmCPUFeatures from libLTO 2018-09-26 16:47:35 +00:00
msbuild Update Visual Studio Integration version number. 2018-08-29 16:57:37 +00:00
obj2yaml [yaml2obj/obj2yaml] - Support dumping/parsing ABI version. 2018-12-20 10:43:49 +00:00
opt [DebugInfo] DISubprogram flags get their own flags word. NFC. 2018-11-19 18:29:28 +00:00
opt-remarks [CMake] Expose opt-remark tooling through libOptRemarks.dylib 2018-11-05 11:57:44 +00:00
opt-viewer
sancov [sancov] Generalize the code to get the previous instruction to multiple architectures 2018-10-10 00:57:24 +00:00
sanstats [cfi] Help sanstats to find binary if they are not at the original location 2018-11-26 21:48:55 +00:00
verify-uselistorder
xcode-toolchain [CMake] Use LLVM_ENABLE_IDE instead of CMAKE_CONFIGURATION_TYPES 2018-10-15 21:20:02 +00:00
yaml2obj [yaml2obj/obj2yaml] - Support dumping/parsing ABI version. 2018-12-20 10:43:49 +00:00
CMakeLists.txt [RFC] Build LLVM-C.dll on MSVC that exports only the C API 2018-08-07 15:54:50 +00:00
LLVMBuild.txt Add a Microsoft Demangler. 2018-07-20 17:27:48 +00:00