- Feb 29, 2020
-
-
Vedant Kumar authored
Try again with an up-to-date version of D69471 (99317124 was a stale revision). --- Revise the coverage mapping format to reduce binary size by: 1. Naming function records and marking them `linkonce_odr`, and 2. Compressing filenames. This shrinks the size of llc's coverage segment by 82% (334MB -> 62MB) and speeds up end-to-end single-threaded report generation by 10%. For reference the compressed name data in llc is 81MB (__llvm_prf_names). Rationale for changes to the format: - With the current format, most coverage function records are discarded. E.g., more than 97% of the records in llc are *duplicate* placeholders for functions visible-but-not-used in TUs. Placeholders *are* used to show under-covered functions, but duplicate placeholders waste space. - We reached general consensus about giving (1) a try at the 2017 code coverage BoF [1]. The thinking was that using `linkonce_odr` to merge duplicates is simpler than alternatives like teaching build systems about a coverage-aware database/module/etc on the side. - Revising the format is expensive due to the backwards compatibility requirement, so we might as well compress filenames while we're at it. This shrinks the encoded filenames in llc by 86% (12MB -> 1.6MB). See CoverageMappingFormat.rst for the details on what exactly has changed. Fixes PR34533 [2], hopefully. [1] http://lists.llvm.org/pipermail/llvm-dev/2017-October/118428.html [2] https://bugs.llvm.org/show_bug.cgi?id=34533 Differential Revision: https://reviews.llvm.org/D69471
-
Vedant Kumar authored
This reverts commit 99317124. This is still busted on Windows: http://lab.llvm.org:8011/builders/lld-x86_64-win7/builds/40873 The llvm-cov tests report 'error: Could not load coverage information'.
-
Vedant Kumar authored
This test is failing with a core dump on /just/ this bot, and I'd like to find out why. http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-android/builds/27979/
-
Vedant Kumar authored
Revise the coverage mapping format to reduce binary size by: 1. Naming function records and marking them `linkonce_odr`, and 2. Compressing filenames. This shrinks the size of llc's coverage segment by 82% (334MB -> 62MB) and speeds up end-to-end single-threaded report generation by 10%. For reference the compressed name data in llc is 81MB (__llvm_prf_names). Rationale for changes to the format: - With the current format, most coverage function records are discarded. E.g., more than 97% of the records in llc are *duplicate* placeholders for functions visible-but-not-used in TUs. Placeholders *are* used to show under-covered functions, but duplicate placeholders waste space. - We reached general consensus about giving (1) a try at the 2017 code coverage BoF [1]. The thinking was that using `linkonce_odr` to merge duplicates is simpler than alternatives like teaching build systems about a coverage-aware database/module/etc on the side. - Revising the format is expensive due to the backwards compatibility requirement, so we might as well compress filenames while we're at it. This shrinks the encoded filenames in llc by 86% (12MB -> 1.6MB). See CoverageMappingFormat.rst for the details on what exactly has changed. Fixes PR34533 [2], hopefully. [1] http://lists.llvm.org/pipermail/llvm-dev/2017-October/118428.html [2] https://bugs.llvm.org/show_bug.cgi?id=34533 Differential Revision: https://reviews.llvm.org/D69471
-
Reid Kleckner authored
CMake is complaining about the "^" regex if the prefixes are empty strings.
-
Greg Clayton authored
Summary: YAML files were not being run during lit testing as there was no lit.local.cfg file. Once this was fixed, some buildbots would fail due to a StringRef that pointed to a std::string inside of a temporary llvm::Triple object. These issues are fixed here by making a local triple object that stays around long enough so the StringRef points to valid data. Reviewers: aprantl, thakis, MaskRay, aadsm, wallace Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D75390
-
Craig Topper authored
We already combine non extending loads with broadcasts in DAG combine. All these patterns are picking up is the aligned extload special case. But the only lit test we have that exercsises it is using v8i1 load that datalayout is reporting align 8 for. That seems generous. So without a realistic test case I don't think there is much value in these patterns.
-
Vedant Kumar authored
Hope this fixes: http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-android/builds/27977/steps/run%20lit%20tests%20%5Bi686%2Ffugu-userdebug%2FN2G48C%5D/logs/stdio ``` : 'RUN: at line 8'; UBSAN_OPTIONS=suppressions=/var/lib/buildbot/sanitizer-buildbot6/sanitizer-x86_64-linux-android/build/compiler_rt_build_android_i686/test/ubsan/Standalone-i386/TestCases/Misc/Output/nullability.c.tmp.supp /var/lib/buildbot/sanitizer-buildbot6/sanitizer-x86_64-linux-android/build/compiler_rt_build_android_i686/test/ubsan/Standalone-i386/TestCases/Misc/Output/nullability.c.tmp 2>&1 | count 0 -- Exit Code: 1 Command Output (stderr): -- Expected 0 lines, got 2. ``` Not sure what this would be printing though, a sanitizer initialization message?
-
Francis Visoiu Mistrih authored
This fixes some windows bots.
-
Matt Morehouse authored
Summary: When -dfsan-event-callbacks is specified, insert a call to __dfsan_cmp_callback on every CMP instruction. Reviewers: vitalybuka, pcc, kcc Reviewed By: kcc Subscribers: hiraditya, #sanitizers, eugenis, llvm-commits Tags: #sanitizers, #llvm Differential Revision: https://reviews.llvm.org/D75389
-
Erik Pilkington authored
rdar://58893199
-
Matt Morehouse authored
Summary: When -dfsan-event-callbacks is specified, insert a call to __dfsan_mem_transfer_callback on every memcpy and memmove. Reviewers: vitalybuka, kcc, pcc Reviewed By: kcc Subscribers: eugenis, hiraditya, #sanitizers, llvm-commits Tags: #sanitizers, #llvm Differential Revision: https://reviews.llvm.org/D75386
-
Volodymyr Sapsai authored
Support only preferred spelling 'Modules/module.private.modulemap' and not the deprecated 'module_private.map'. rdar://problem/57715533 Reviewed By: bruno Differential Revision: https://reviews.llvm.org/D75311
-
Jay Foad authored
This was incorrectly marked as a half rate 64-bit instruction by D45073.
-
Craig Topper authored
[X86] Canonicalize (bitcast (vbroadcast_load)) so that the cast and vbroadcast_load are both integer or fp. Helps a little with some isel pattern matching. Especially on 32-bit targets where we sometimes use f64 loads.
-
Craig Topper authored
-
Craig Topper authored
[X86] Cleanup a comment around bitcasting X86ISD::VBROADCAST_LOAD and add an assert to make sure memory VT size doesn't change.
-
- Feb 28, 2020
-
-
Michael Spencer authored
rG01f9abbb50b1 moved WindowsSupport.h to include/llvm/Support/Windows/ This is a problem because the modulemap include all of the Support and ADT directories, thus any use of any header in Support or ADT would cause the compiler to try to build WindowsSupport.h, which only works on Windows. Fix this by explicitly excluding WindowsSupport.h from the LLVM_Util module.
-
Vedant Kumar authored
rdar://59402904
-
Vedant Kumar authored
As a narrow stopgap for the assertion failure described in PR45025, add a describeLoadedValue override to ARMBaseInstrInfo and use it to detect copies in which the forwarding reg is a super/sub reg of the copy destination. For the moment this is unsupported. Several follow ups are possible: 1) Handle VORRq. At the moment, we do not, because isCopyInstrImpl returns early when !MI.isMoveReg(). 2) In the case where forwarding reg is a super-reg of the copy destination, we should be able to describe the forwarding reg as a subreg within the copy destination. I'm not 100% sure about this, but it looks like that's what's done in AArch64InstrInfo. 3) In the case where the forwarding reg is a sub-reg of the copy destination, maybe we could describe the forwarding reg using the copy destinaion and a DW_OP_LLVM_fragment (I guess this should be possible after D75036). https://bugs.llvm.org/show_bug.cgi?id=45025 rdar://59772698 Differential Revision: https://reviews.llvm.org/D75273
-
Matt Morehouse authored
Summary: When -dfsan-event-callbacks is specified, insert a call to __dfsan_load_callback() on every load. Reviewers: vitalybuka, pcc, kcc Reviewed By: vitalybuka, kcc Subscribers: hiraditya, #sanitizers, llvm-commits, eugenis, kcc Tags: #sanitizers, #llvm Differential Revision: https://reviews.llvm.org/D75363
-
Reid Kleckner authored
DenseMap requires two sentinel values for keys: empty and tombstone values. To avoid undefined behavior, LLVM aligns the two sentinel pointers to alignof(T). This requires T to be complete, which is needlessly restrictive. Instead, assume that DenseMap pointer keys have a maximum alignment of 4096, and use the same sentinel values for all pointer keys. The new sentinels are: empty: static_cast<uintptr_t>(-1) << 12 tombstone: static_cast<uintptr_t>(-2) << 12 These correspond to the addresses of -4096 and -8192. Hopefully, such a key is never inserted into a DenseMap. I encountered this while looking at making clang's SourceManager not require FileManager.h, but it has several maps keyed on classes defined in FileManager.h. FileManager depends on various LLVM FS headers, which cumulatively take ~200ms to parse, and are generally not needed. Reviewed By: hans Differential Revision: https://reviews.llvm.org/D75301
-
Jordan Rupprecht authored
* llvm-gisel-cov.py: extra `)` after print * chunk-print-before-all.py: py2-only print method
-
Stephen Neuendorffer authored
This reverts commit 2f265e35.
-
Stephen Neuendorffer authored
This reverts commit e1cb15c8.
-
Jay Foad authored
Summary: pickNodeBidirectional tried to compare the best top candidate and the best bottom candidate by examining TopCand.Reason and BotCand.Reason. This is unsound because, after calling pickNodeFromQueue, Cand.Reason does not reflect the most important reason why Cand was chosen. Rather it reflects the most recent reason why it beat some other potential candidate, which could have been for some low priority tie breaker reason. I have seen this cause problems where TopCand is a good candidate, but because TopCand.Reason is ORDER (which is very low priority) it is repeatedly ignored in favour of a mediocre BotCand. This is not how bidirectional scheduling is supposed to work. To fix this I changed the code to always compare TopCand and BotCand directly, like the generic implementation of pickNodeBidirectional does. This removes some uncommented AMDGPU-specific logic; if this logic turns out to be important then perhaps it could be moved into an override of tryCandidate instead. Graphics shader benchmarking on gfx10 shows a lot more positive than negative effects from this change. Reviewers: arsenm, tstellar, rampitec, kzhuravl, vpykhtin, dstuttard, tpr, atrick, MatzeB Subscribers: jvesely, wdng, nhaehnle, yaxunl, t-tye, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D68338
-
Alexey Lapshin authored
Summary: Extracted from D74773. Currently, errors happened while parsing debug info are reported as errors. DebugInfoDWARF library treats such errors as "Recoverable errors". This patch makes debug info errors to be reported as warnings, to support DebugInfoDWARF approach. Reviewers: ruiu, grimar, MaskRay, jhenderson, espindola Reviewed By: MaskRay, jhenderson Subscribers: emaste, aprantl, arichardson, arphaman, llvm-commits Tags: #llvm, #debug-info, #lld Differential Revision: https://reviews.llvm.org/D75234
-
Francis Visoiu Mistrih authored
Tools working with object files on Darwin (e.g. lipo) may need to know properties like the CPU type and subtype of a bitcode file. The logic of converting a triple to a Mach-O CPU_(SUB_)TYPE should be provided by LLVM instead of relying on tools to re-implement it. Differential Revision: https://reviews.llvm.org/D75067
-
Tim Shen authored
Differential Revision: https://reviews.llvm.org/D75150
-
Tim Shen authored
Summary: See discussion here: https://llvm.discourse.group/t/rfc-dialect-type-cast-op/538/11 Reviewers: ftynse Subscribers: bixia, sanjoy.google, mehdi_amini, rriddle, jpienaar, burmako, shauheen, antiagainst, nicolasvasilache, arpith-jacob, mgester, lucyrfox, aartbik, liufengdb, Joonsoo, llvm-commits Differential Revision: https://reviews.llvm.org/D75141
-
Tim Shen authored
This is in preparation for the next patch D75141. The purpose is to provide a single place where LLVM dialect registers its ops as legal/illegal. Reviewers: ftynse, mravishankar, herhut Subscribers: jholewinski, bixia, sanjoy.google, mehdi_amini, rriddle, jpienaar, burmako, shauheen, antiagainst, nicolasvasilache, csigg, arpith-jacob, mgester, lucyrfox, aartbik, liufengdb, Joonsoo, llvm-commits Differential Revision: https://reviews.llvm.org/D75140
-
Krzysztof Parzyszek authored
-
Stephen Neuendorffer authored
This reverts commit 8a2b86b2.
-
Stephen Neuendorffer authored
This reverts commit 1246e867.
-
Stephen Neuendorffer authored
This reverts commit c767dc93.
-
cchen authored
Chen Summary: Base declaration in pointer arithmetic expression is determined by binary search with type information. Take "int *a, *b; *(a+*b)" as an example, we determine the base by checking the type of LHS and RHS. In this case the type of LHS is "int *", the type of RHS is "int", therefore, we know that we need to visit LHS in order to find base declaration. Reviewers: ABataev, jdoerfert Reviewed By: ABataev Subscribers: guansong, cfe-commits, sandoval, dreachem Tags: #clang Differential Revision: https://reviews.llvm.org/D75077
-
Stephen Neuendorffer authored
Differential Revision: https://reviews.llvm.org/D75308
-
Valentin Churavy authored
Putting this up mainly for discussion on how this should be done. I am interested in MLIR from the Julia side and we currently have a strong preference to dynamically linking against the LLVM shared library, and would like to have a MLIR shared library. This patch adds a new cmake function add_mlir_library() which accumulates a list of targets to be compiled into libMLIR.so. Note that not all libraries make sense to be compiled into libMLIR.so. In particular, we want to avoid libraries which primarily exist to support certain tools (such as mlir-opt and mlir-cpu-runner). Note that the resulting libMLIR.so depends on LLVM, but does not contain any LLVM components. As a result, it is necessary to link with libLLVM.so to avoid linkage errors. So, libMLIR.so requires LLVM_BUILD_LLVM_DYLIB=on FYI, Currently it appears that LLVM_LINK_LLVM_DYLIB is broken because mlir-tblgen is linked against libLLVM.so and and independent LLVM components (updated by Stephen Neuendorffer) Differential Revision: https://reviews.llvm.org/D73130
-
Stephen Neuendorffer authored
add_llvm_library and add_llvm_executable may need to create new targets with appropriate dependencies. As a result, it is not sufficient in some configurations (namely LLVM_BUILD_LLVM_DYLIB=on) to only call add_dependencies(). Instead, the explicit TableGen dependencies must be passed to add_llvm_library() or add_llvm_executable() using the DEPENDS keyword. Differential Revision: https://reviews.llvm.org/D74930
-
Stephen Neuendorffer authored
In cmake, it is redundant to have a target list under target_link_libraries() and add_dependency(). This patch removes the redundant dependency from add_dependency(). Differential Revision: https://reviews.llvm.org/D74929
-