- Jul 23, 2020
-
-
aartbik authored
Replaced the linearized address with the proper LLVM way of defining vector of base + indices in SIMD style. This yields much better code. Some prototype results with microbencmarking sparse matrix x vector with 50% sparsity (about 2-3x faster): LINEARIZED IMPROVED GFLOPS sdot saxpy sdot saxpy 16x16 1.6 1.4 4.4 2.1 32x32 1.7 1.6 5.8 5.9 64x64 1.7 1.7 6.4 6.4 128x128 1.7 1.7 5.9 5.9 256x256 1.6 1.6 6.1 6.0 512x512 1.4 1.4 4.9 4.7 Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D84368 -
Serge Pavlov authored
This reapplies commit d4020ef7, reverted in ac0edc55 because it broke build of LLDB. This commit contains appropriate changes for LLDB. The original commit message is below. Documentation on CreateProcessW states that maximal size of command line is 32767 characters including ternimation null character. In the function llvm::sys::commandLineFitsWithinSystemLimits this limit was set to 32768. As a result if command line was exactly 32768 characters long, a response file was not created and CreateProcessW was called with too long command line. Differential Revision: https://reviews.llvm.org/D83772
-
Hiroshi Yamauchi authored
The revert was a misfire. Remove the temporary flag PGSOIRPassOrTestOnly and the guard code which was used for the staged rollout. This is a cleanup (NFC) as it's now false by default. Differential Revision: https://reviews.llvm.org/D84057
-
Sourabh Singh Tomar authored
This reverts commit 6b55a958. Temporal revert due to a failing/assertion in test case in Sparc backend. `test/DebugInfo/Sparc/subreg.ll` Seen in lot of bots, for instance in: `http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-win/builds/24679`
-
Shilei Tian authored
This reverts commit 9b2832c0.
-
Shilei Tian authored
Summary: In the function `target`, memory deallocation and `target_data_end` is called immediately returning from launching kernel. This might cause a race condition that the corresponding memory is still being used by the kernel and a potential issue that when the kernel starts to execute, its required data have already been deallocated, especially when multiple kernels running concurrently. Since nevertheless, we will block the thread issuing the target offloading at the end of the target, we just move the synchronization ahead a little bit to make sure the correctness. Reviewers: jdoerfert Reviewed By: jdoerfert Subscribers: yaxunl, guansong, sstefan1, openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D84381
-
Xing GUO authored
This patch refactors the range list table to hold both the range list table and the location list table. Reviewed By: jhenderson, labath Differential Revision: https://reviews.llvm.org/D84239
-
Sourabh Singh Tomar authored
Summary: llvm is missing support for DW_OP_implicit_value operation. DW_OP_implicit_value op is indispensable for cases such as optimized out long double variables. For intro refer: DWARFv5 Spec Pg: 40 2.6.1.1.4 Implicit Location Descriptions Consider the following example: ``` int main() { long double ld = 3.14; printf("dummy\n"); ld *= ld; return 0; } ``` when compiled with tunk `clang` as `clang test.c -g -O1` produces following location description of variable `ld`: ``` DW_AT_location (0x00000000: [0x0000000000201691, 0x000000000020169b): DW_OP_constu 0xc8f5c28f5c28f800, DW_OP_stack_value, DW_OP_piece 0x8, DW_OP_constu 0x4000, DW_OP_stack_value, DW_OP_bit_piece 0x10 0x40, DW_OP_stack_value) DW_AT_name ("ld") ``` Here one may notice that this representation is incorrect(DWARF4 stack could only hold integers(and only up to the size of address)). Here the variable size itself is `128` bit. GDB and LLDB confirms this: ``` (gdb) p ld $1 = <invalid float value> (lldb) frame variable ld (long double) ld = <extracting data from value failed> ``` GCC represents/uses DW_OP_implicit_value in these sort of situations. Based on the discussion with Jakub Jelinek regarding GCC's motivation for using this, I concluded that DW_OP_implicit_value is most appropriate in this case. Link: https://gcc.gnu.org/pipermail/gcc/2020-July/233057.html GDB seems happy after this patch:(LLDB doesn't have support for DW_OP_implicit_value) ``` (gdb) p ld p ld $1 = 3.14000000000000012434 ``` Reviewed By: aprantl Differential Revision: https://reviews.llvm.org/D83560 -
Fangrui Song authored
A malloc implementation may return a pointer to some allocated space. It is undefined for libclang_rt.profile- to access the object - which actually happens in instrumentTargetValueImpl, where ValueCounters[CounterIndex] may access a ValueProfNode (from another allocated object) and crashes when the code accesses the object referenced by CurVNode->Next.
-
Sourabh Singh Tomar authored
Summary: This patch lower `!OMP TASKYIELD` construct from PFT to OpenMPDialect operations. Construct is lowered with conformance to OpenMP 5.0 spec. Patch is carved out of following merged PR: https://github.com/flang-compiler/f18-llvm-project/pull/297 Reviewed: kiranchandramohan Differential Revision: https://reviews.llvm.org/D84350
-
Valentin Clement authored
Summary: This patch introduce the basic infrastructure to be able to lower OpenACC constructs to the future OpenACC dialect. Reviewers: schweitz, kiranchandramohan, DavidTruby, sscalpone, jdoerfert, ichoyjx Reviewed By: ichoyjx Subscribers: ichoyjx, SouraVX, mgorny, jfb, sstefan1, llvm-commits Tags: #llvm, #flang Differential Revision: https://reviews.llvm.org/D84195
-
Valentin Clement authored
Summary: This patch fix a problem where clause needed to be in the allowed set even they were in the required set. A required clause is allowed obvisouly. This allow to remove the duplicate in OMP.td Reviewers: kiranchandramohan, DavidTruby, richard.barton.arm, jdoerfert, sscalpone, kiranktp, ichoyjx Reviewed By: kiranchandramohan Subscribers: yaxunl, guansong, sstefan1, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D84353
-
Hamilton Tobon Mosquera authored
-
peter klausler authored
It turns out that COMPLEX formatted input needs its own runtime APIs so that null values in list-directed input skip the entire COMPLEX datum rather than just a real or imaginary part thereof. Reviewed By: sscalpone Differential Revision: https://reviews.llvm.org/D84370
-
Logan Smith authored
Reapply "Try enabling -Wsuggest-override again, using add_compile_options instead of add_compile_definitions for disabling it in unittests/ directories." add_compile_options is more sensitive to its location in the file than add_definitions--it only takes effect for sources that are added after it. This updated patch ensures that the add_compile_options is done before adding any source files that depend on it. Using add_definitions caused the flag to be passed to rc.exe on Windows and thus broke Windows builds.
-
Craig Topper authored
We deprecated mpx feature in 10.0. I left this feature flag in case someone still had IR files containing the feature in a target-feature attribute. At the time I think I thought it would fail the test if the feature couldn't be found. Further review suggests that at worst it prints a message to stderr about ignoring the feature.
-
Amy Huang authored
Since native PDB reading has been implemented for symbolizing, switch to using the native PDB reader by default, unless LLVM_ENABLE_DIA_SDK is on. Bug: https://bugs.llvm.org/show_bug.cgi?id=41795 Differential Revision: https://reviews.llvm.org/D84286
-
Jonas Devlieghere authored
LLVM_TARGET_ARCH is not exported by LLVM so we can't use it from standalone builds. Default to the architecture in LLVM_HOST_TRIPLE when no LLDB_DEFAULT_TEST_ARCH was specified.
-
Craig Topper authored
SAHF/LAHF instructions are always available in 32-bit mode. Early 64-bit capable CPUs made the undefined opcodes in 64-bit mode. This was changed on later CPUs. We have a feature flag to control our usage of these instructions. This feature flag is hooked up to a clang command line option -msahf/-mno-sahf specifically to give control of the 64-bit mode behavior. In the backend X86Subtarget constructor we were explicitly forcing +sahf into the feature flag string if we were not compiling for 64-bit mode. This was intended to make the predicates always allow the instructions outside of 64-bit mode. Unfortunately, the way it was placed into the string allowed -mno-sahf from clang to disable SAHF instructions in 32-bit mode. This causes an assertion to fire if you compile a floating point comparison with something like "-march=pentium -mno-sahf" as our floating point comparison handling on CPUs that don't support FCOMI/FUCOMI instructions requires SAHF. To fix this, this commit restricts the feature flag to only apply to 64-bit mode by ignoring the flag outside 64-bit mode in X86Subtarget::hasLAHFSAHF(). This way we don't need to mess with the feature string at all.
-
Matt Morehouse authored
Summary: Support fast16labels in `dfsan_has_label`, and print an error for all other API functions. Reviewers: kcc, vitalybuka, pcc Reviewed By: kcc Subscribers: jfb, llvm-commits, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D84215
-
LLVM GN Syncbot authored
-
Lang Hames authored
TPCDynamicLibrarySearchGenerator uses a TargetProcessControl instance to load libraries and search for symbol addresses in a target process. It can be used in place of a DynamicLibrarySearchGenerator to enable target-process agnostic lookup.
-
LLVM GN Syncbot authored
-
Fangrui Song authored
This reverts commit 4a539faf. There is a __llvm_profile_instrument_range related crash in PGO-instrumented clang: ``` (gdb) bt llvm::ConstantRange const&, llvm::APInt const&, unsigned int, bool) () llvm::ScalarEvolution::getRangeForAffineAR(llvm::SCEV const*, llvm::SCEV const*, llvm::SCEV const*, unsigned int) () ``` (The body of __llvm_profile_instrument_range is inlined, so we can only find__llvm_profile_instrument_target in the trace) ``` 23│ 0x000055555dba0961 <+65>: nopw %cs:0x0(%rax,%rax,1) 24│ 0x000055555dba096b <+75>: nopl 0x0(%rax,%rax,1) 25│ 0x000055555dba0970 <+80>: mov %rsi,%rbx 26│ 0x000055555dba0973 <+83>: mov 0x8(%rsi),%rsi # %rsi=-1 -> SIGSEGV 27│ 0x000055555dba0977 <+87>: cmp %r15,(%rbx) 28│ 0x000055555dba097a <+90>: je 0x55555dba0a76 <__llvm_profile_instrument_target+342> ```
-
Amy Kwan authored
Previously, the vins*vlx instructions were incorrectly defined with i64 as the second argument. This patches fixes this issue by correcting the second argument of the vins*vlx instructions/intrinsics to be i32. Differential Revision: https://reviews.llvm.org/D84277
-
Craig Topper authored
The input to these functions is a StringRef. We then convert it to a std::string. Then maybe replace with "generic". I think we can just overwrite the incoming StringRef with "generic" if needed and then pass it along without creating any std::string.
-
Rahul Joshi authored
- Eliminate `From` which is 0 most of the times. - Replace 'find_first_of('{') != 0' with 'front() != '{' - Simplify the loop body given the it executes only when front() == '}' Differential Revision: https://reviews.llvm.org/D84178 -
Rahul Joshi authored
- Update documentation to clarify that `}` does not need to be doubled up. - Update `EscapedBrace` test case to test this behavior Differential Revision: https://reviews.llvm.org/D83888
-
cgyurgyik authored
Reviewed By: sivachandra Differential Revision: https://reviews.llvm.org/D84247
-
Christopher Tetreault authored
Reviewers: efriedma, fpetrogalli, c-rhodes, asbirlea, RKSimon Reviewed By: RKSimon Subscribers: tschuett, hiraditya, rkruppe, psnobl, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D81504
-
Logan Smith authored
Revert "Try enabling -Wsuggest-override again, using add_compile_options instead of add_compile_definitions for disabling it in unittests/ directories." This reverts commit 388c9fb1.
-
Rong Xu authored
This patch includes the supporting code that enables always instrumenting the function entry block by default. This patch will NOT the default behavior. It adds a variant bit in the profile version, adds new directives in text profile format, and changes llvm-profdata tool accordingly. This patch is a split of D83024 (https://reviews.llvm.org/D83024) Many test changes from D83024 are also included. Differential Revision: https://reviews.llvm.org/D84261
-
Douglas Yung authored
This test depends on using the integrated assembler, so make it explicit by specifying -fintegrated-as.
-
Diego Caballero authored
This patch refactors a small part of the Super Vectorizer code to a utility so that it can be used independently from the pass. This aligns vectorization with other utilities that we already have for loop transformations, such as fusion, interchange, tiling, etc. Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D84289
-
Fangrui Song authored
This reverts commit e64afefd. It caused a PGO bootstrapped clang to crash on many source files. `__llvm_profile_instrument_range` seems to trigger a null pointer dereference. Call stack: __llvm_profile_instrument_range llvm::APInt::udiv(llvm::APInt const&) const getRangeForAffineARHelper
-
Christopher Tetreault authored
Summary: These should have half float as the element type Reviewers: cameron.mcinally, efriedma, sdesmalen, paulwalker-arm Reviewed By: paulwalker-arm Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D84211
-
Logan Smith authored
Try enabling -Wsuggest-override again, using add_compile_options instead of add_compile_definitions for disabling it in unittests/ directories. Using add_compile_definitions caused the flag to be passed to rc.exe on Windows and thus broke Windows builds.
-
David Blaikie authored
This is an alternative proposal to D81476 (and D82084) - the details were sufficiently confusing to me it seemed easier to write some code and see how it looks. Reviewers: SouraVX Differential Revision: https://reviews.llvm.org/D84278
-
Jonas Devlieghere authored
Eliminates value parameter for types that are not trivially copyable.
-
Michael Kruse authored
-