- Jul 30, 2021
-
-
Ivan Murashko authored
There is a SIGSEGV at `DeduceTemplateArgumentsByTypeMatch`. The bug [#51171](https://bugs.llvm.org/show_bug.cgi?id=51171) was filled. The reproducer can be found at the bug description. LIT test for the issue was added: ``` ./bin/llvm-lit -v ../clang/test/SemaCXX/pr51171-crash.cpp ``` The debug stack trace is below: ``` #0 0x00000000055afcb9 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/ivanmurashko/local/llvm-project/llvm/lib/Support/Unix/Signals.inc:565:22 #1 0x00000000055afd70 PrintStackTraceSignalHandler(void*) /home/ivanmurashko/local/llvm-project/llvm/lib/Support/Unix/Signals.inc:632:1 #2 0x00000000055add2d llvm::sys::RunSignalHandlers() /home/ivanmurashko/local/llvm-project/llvm/lib/Support/Signals.cpp:97:20 #3 0x00000000055af701 SignalHandler(int) /home/ivanmurashko/local/llvm-project/llvm/lib/Support/Unix/Signals.inc:407:1 #4 0x00007ffff7bc2b20 __restore_rt sigaction.c:0:0 #5 0x00007ffff66a337f raise (/lib64/libc.so.6+0x373...
-
Dmitry Vyukov authored
The updated lots_of_threads.c test with 300 threads started running for too long on machines with low hardware parallelism (e.g. taskset -c 0-1). On lots of CPUs it finishes in ~2 secs. But with taskset -c 0-1 it runs for hundreds of seconds effectively spinning in the barrier in the sleep loop. We now have the handy futex API in sanitizer_common. Use it instead of the passive spin loop. It makes the test run only faster with taskset -c 0-1, it runs for ~1.5 secs, while with full parallelism it still runs for ~2 secs (but consumes less CPU time). Depends on D107131. Reviewed By: vitalybuka Differential Revision: https://reviews.llvm.org/D107132
-
Dmitry Vyukov authored
The test contains a race in read/write syscalls. The size of reported race depends on how the accessed memory range split into granules inside of tsan runtime. The test used to report access of size 8, because presumably the buffer ended up being aligned to 8 bytes. But after some unrelated changes this test started to report accesses of size 1 (presumably .data layout changed), which makes the test fail. Guarantee alignment of the buf object explicitly. Reviewed By: vitalybuka, melver Differential Revision: https://reviews.llvm.org/D107131
-
David Green authored
Under MVE we can use VADDV/VADDVA's to perform integer add reductions, so it can be beneficial to use more reductions than summing subvectors and reducing once. Especially for VMLAV/VMLAVA the mul can be incorporated into the reduction, producing less instructions. Some of the test cases currently get larger due to extra integer adds, but will be improved in a followup patch. Differential Revision: https://reviews.llvm.org/D106531
-
David Green authored
These are generated from SLP vectorization, for example https://godbolt.org/z/ebxdPh1Kz. These backend tests show cases that we can produce better code for.
-
Muhammad Omair Javaid authored
This reverts commit fed25ddc. There has been sporadic failures in LLDB AArch64/Arm 32 buildbots since this commit. I am temporarily reverting it see if it fixes the issue. Differential Revision: https://reviews.llvm.org/D100243
-
Anastasia Stulova authored
Renamed language standard from openclcpp to openclcpp10. Added new std values i.e. '-cl-std=clc++1.0' and '-cl-std=CLC++1.0'. Patch by Topotuna (Justas Janickas)! Differential Revision: https://reviews.llvm.org/D106266
-
Andrzej Warzynski authored
Remove erroneous `||` at the end of an `if` condition. This was introduced in https://reviews.llvm.org/D106871.
-
Cullen Rhodes authored
The Scalable Matrix Extension (SME) introduces a new execution mode called Streaming SVE mode. In streaming mode a substantial subset of the SVE and SVE2 instruction set is available, along with new outer product, load, store, extract and insert instructions that operate on the new architectural register state for the matrix. To support streaming mode this patch introduces a new subtarget feature +streaming-sve. If enabled, the subset of SVE(2) instructions are available. The existing behaviour for SVE(2) remains unchanged, the subset of instructions that are legal in streaming mode are enabled if either +sve[2] or +streaming-sve is specified. Instructions that are illegal in streaming mode remain predicated on +sve[2]. The SME target feature has been updated to imply +streaming-sve rather than +sve. The following changes are made to the SVE(2) tests: * For instructions that are legal in streaming mode: - added RUN line to verify +streaming-sve enables the instruction. - updated diagnostic to 'instruction requires: streaming-sve or sve'. * For instructions that are illegal in streaming-mode: - added RUN line to verify +streaming-sve does not enable the instruction. SVE(2) instructions that are legal in streaming mode have: if !HaveSVE[2]() && !HaveSME() then UNDEFINED; at the top of the pseudocode in the XML. The reference can be found here: https://developer.arm.com/documentation/ddi0602/2021-06/SVE-Instructions Reviewed By: sdesmalen, david-arm Differential Revision: https://reviews.llvm.org/D106272 -
Lang Hames authored
This saves a level of manual table lookup for those of us who don't remember ELF relocation numbers off the top of our heads.
-
Tarindu Jayatilaka authored
Pulled out the OptimizationLevel class from PassBuilder in order to be able to access it from within the PassManager and avoid include conflicts. Reviewed By: mtrofin Differential Revision: https://reviews.llvm.org/D107025
-
Dave Airlie authored
CL 2.0 introduced atomics and generic address space so there were only one set of APIs for doing atomics, however since CL 3.0 makes generic address space optional, there has to be new sets of atomic interfaces to handle that cases. Reviewed By: Anastasia Differential Revision: https://reviews.llvm.org/D106778
-
Mark Leair authored
to fail due to warnings as errors. Note that I could not reproduce the problem locally, but based on the messages, I think this change will fix the errors. Differential Revision: https://reviews.llvm.org/D107120
-
Anton Zabaznov authored
This reverts commit d1e4b257.
-
Anton Zabaznov authored
'pipe' keyword is introduced in OpenCL C 2.0: so do checks for OpenCL C version while parsing and then later on check for language options to construct actual pipe. This feature requires support of __opencl_c_generic_address_space, so diagnostics for that is provided as well. Reviewed By: Anastasia Differential Revision: https://reviews.llvm.org/D106748
-
Stefan Pintilie authored
Regsier hints when copying to a UACC register do not always produce VSRp registers. This patch makes sure that we do not produce hints in cases where the subregsiter of the UACC is not a VSRp. Reviewed By: nemanjai, #powerpc Differential Revision: https://reviews.llvm.org/D107101
-
Esme-Yi authored
Summary: Add support for yaml2obj to parse 64-bit XCOFF. Reviewed By: shchenz Differential Revision: https://reviews.llvm.org/D100375
-
Walter Erquinigo authored
It was suggested in https://reviews.llvm.org/D105741 and it makes sense.
-
Anton Zabaznov authored
This feature requires support of __opencl_c_images, so diagnostics for that is provided as well. Also, ensure that cl_khr_3d_image_writes feature macro is set to the same value. Reviewed By: Anastasia Differential Revision: https://reviews.llvm.org/D106260
-
Victor Huang authored
- clang-ppc64le-rhel bot LIT failure: https://lab.llvm.org/buildbot/#/builders/57/builds/8932 - culprit change: https://reviews.llvm.org/D107050
-
Jinsong Ji authored
nm does not show size for aliased symbols, we should still extract them if they are external. Reviewed By: hubert.reinterpretcast Differential Revision: https://reviews.llvm.org/D107112
-
Walter Erquinigo authored
https://reviews.llvm.org/D45592 added a nice feature to be able to specify a breakpoint by a relative path. E.g. passing foo.cpp or bar/foo.cpp or zaz/bar/foo.cpp is fine. However, https://reviews.llvm.org/D68671 by mistake disabled the test that ensured this functionality works. With time, someone made a small mistake and fully broke the functionality. So, I'm making a very simple fix and the test passes. Differential Revision: https://reviews.llvm.org/D107126
-
Geoffrey Martin-Noble authored
This patch makes it possible to list a td_library as a rule's data attribute and get its source files and all its transitive dependencies at runtime. This is useful for, e.g. shell tests running tblgen. Note that this is a bit different from how a "normal" (e.g. C++) library rule would work because those have actual library outputs and the td_library rule just bundles some source files and includes. If someone wanted to make use of the includes, they would have to access the TdInfo provider, but this keeps simple things simple. Reviewed By: jpienaar Differential Revision: https://reviews.llvm.org/D106922
-
Geoffrey Martin-Noble authored
These are unconditionally included in the CMake build as well and necessary for some odd platforms (even though the C++11 standard says they shouldn't be). Reviewed By: chandlerc Differential Revision: https://reviews.llvm.org/D107123
-
Geoffrey Martin-Noble authored
This makes the logic used to determine if targets have the given features the same as is used in CMake. Incidentally, it enables these features for the targets added in https://reviews.llvm.org/D106921 which were missing because this was previously a hardcoded list. Reviewed By: chandlerc Differential Revision: https://reviews.llvm.org/D107019
-
Mark Schimmel authored
Add disassembler support for the NORM and NORMH instructions. These instructions only exist when the ARC processor is configured with the "norm" extension. fferential Revision: https://reviews.llvm.org/D107118
-
Stella Laurenzo authored
* Broken out of https://reviews.llvm.org/D106419 * Otherwise, same named modules will conflict with each other. Differential Revision: https://reviews.llvm.org/D107113
-
Ben Shi authored
This patch does the following optimization of mul with a constant. (mul x, 11) -> (SH1ADD (SH2ADD x, x), x) (mul x, 19) -> (SH1ADD (SH3ADD x, x), x) (mul x, 13) -> (SH2ADD (SH1ADD x, x), x) (mul x, 21) -> (SH2ADD (SH2ADD x, x), x) (mul x, 37) -> (SH2ADD (SH3ADD x, x), x) (mul x, 25) -> (SH3ADD (SH1ADD x, x), x) (mul x, 41) -> (SH3ADD (SH2ADD x, x), x) (mul x, 73) -> (SH3ADD (SH3ADD x, x), x) (mul x, 27) -> (SH1ADD (SH3ADD x, x), (SH3ADD x, x)) (mul x, 45) -> (SH2ADD (SH3ADD x, x), (SH3ADD x, x)) (mul x, 81) -> (SH3ADD (SH3ADD x, x), (SH3ADD x, x)) Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D107065
-
Ben Shi authored
Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D107064
-
Matt Jacobson authored
Reviewed By: Ben Shi Differential Revision: https://reviews.llvm.org/D106854
-
Amara Emerson authored
I moved the code that tries to combine away each unmerge def into a method in ArtifactValueFinder class itself. This removes a logically messy lambda and makes it easier to use the value-finder in more places in future.
-
Shoaib Meenai authored
Android has its own CMAKE_SYSTEM_NAME, but the OS is Linux (Android target triples look like aarch64-none-linux-android21). The driver will therefore search for compiler-rt libraries in the "linux" directory and not the "android" directory, so the default placement of Android compiler-rt libraries was incorrect. You could fix it by specifying COMPILER_RT_OS_DIR manually, but it also makes sense to fix the default, to save others from having to discover and fix the issue for themselves.
-
Thomas Johnson authored
Differential Revision: https://reviews.llvm.org/D107088
-
Joseph Huber authored
[OpenMP] Adding flags for disabling the following optimizations: Deglobalization SPMDization State machine rewrites Folding This work provides four flags to disable four different sets of OpenMP optimizations. These flags take effect in llvm/lib/Transforms/IPO/OpenMPOpt.cpp and include the following: - openmp-opt-disable-deglobalization: Defaults to false, adding this flag sets the variable DisableOpenMPOptDeglobalization to true. This prevents AA registration for HeapToStack and HeapToShared. - openmp-opt-disable-spmdization: Defaults to false, adding this flag sets the variable DisableOpenMPOptSPMDization to true. This indicates a pessimistic fixpoint in changeToSPMDMode. - openmp-opt-disable-folding: Defaults to false, adding this flag sets the variable DisableOpenMPOptFolding to true. This indicates a pessimistic fixpoint in the attributor init for AAFoldRuntimeCall. - openmp-opt-disable-state-machine-rewrite: Defaults to false, adding this flag sets the variable DisableOpenMPOptStateMachineRewrite to true. This first prevents changes to the state machine in rewriteDeviceCodeStateMachine by returning before changes are made, and if a custom state machine is built in buildCustomStateMachine, stops by returning a pessimistic fixpoint. Reviewed By: jhuber6 Differential Revision: https://reviews.llvm.org/D106802
-
Adrian Prantl authored
-
Adrian Prantl authored
-
Sanjay Patel authored
-
Adrian Prantl authored
This patch prevents GlobalISel from optimizing out redundant branch instructions when compiling without optimizations. The motivating example is code like the following common pattern in Swift, where users expect to be able to set a breakpoint on the early exit: public func f(b: Bool) { guard b else { return // I would like to set a breakpoint here. } ... } The patch modifies two places in GlobalISEL: The first one is in IRTranslator.cpp where the removal of redundant branches is made conditional on the optimization level. The second one is in AArch64InstructionSelector.cpp where an -O0 *only* optimization is being removed. Disabling these optimizations increases code size at -O0 by ~8%. However, doing so improves debuggability, and debug builds are the primary reason why developers compile without optimizations. We thus concluded that this is the right trade-off. rdar://79515454 This tenatively reapplies the patch without modifications, the LLDB test that has blocked this from landing previously has since been modified to hopefully no longer be sensitive to this change. Differential Revision: https://reviews.llvm.org/D105238 -
Amy Zhuang authored
When we vectorize a scalar constant, the vector constant is inserted before its first user if the scalar constant is defined outside the loops to be vectorized. It is possible that the vector constant does not dominate all its users. To fix the problem, we find the innermost vectorized loop that encloses that first user and insert the vector constant at the top of the loop body. Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D106609
-
George Burgess IV authored
This commit contains two mildly separate concepts. First, sending out reviews for things like this is a bit of a complicated endeavor, since the reviewer list is relatively long, and I generally rely on prior CLs in this area to find an authoritative list. Life's quite a bit easier if phab usernames are readily available on the doc. So part 1 is making those available. Second, it seems to me that, at the moment, Phabricator makes the most sense for membership changes (incl. security group nominations). My reasoning for this is detailed in the diff, and to some extent in comment #1 of this bug <https://bugs.chromium.org/p/llvm/issues/detail?id=12#c1>. This change adds prose to recommend the use of Phabricator for nominations as a result. Differential Revision: https://reviews.llvm.org/D106917
-