- Oct 15, 2021
-
-
Vitaly Buka authored
It was the slowest test: -------------------------------------------------------------------------- 41.77s: AddressSanitizer-x86_64-linux :: TestCases/Linux/uar_signals.cpp 26.64s: AddressSanitizer-i386-linux :: TestCases/Linux/uar_signals.cpp 14.82s: AddressSanitizer-x86_64-linux :: TestCases/Posix/current_allocated_bytes.cpp 14.79s: AddressSanitizer-i386-linux :: TestCases/Posix/current_allocated_bytes.cpp 11.55s: AddressSanitizer-x86_64-linux :: TestCases/scariness_score_test.cpp 10.15s: AddressSanitizer-x86_64-linux :: TestCases/Posix/stack-use-after-return.cpp
-
Vitaly Buka authored
-std=c++14 is a default for a while. Reviewed By: kstoimenov Differential Revision: https://reviews.llvm.org/D111848
-
Vitaly Buka authored
-
Michael Jones authored
Add an implementation for memccpy and mempcpy. These functions are posix extensions for the moment. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D111762
-
peter klausler authored
Semantics is rejecting valid programs with NULL() actual arguments to generic interfaces, including user-defined operators. Subclause 16.9.144(para 6) makes clear that NULL() can be a valid actual argument to a generic interface so long as it does not produce ambiguity. This patch handles those cases, revises existing tests, and adjust an error message about NULL() operands to appear less like a blanket prohibition. Differential Revision: https://reviews.llvm.org/D111850
-
Jacques Pienaar authored
Allow emitting get & set prefix for accessors generated for ops. If enabled, then the argument/return/region name gets converted from snake_case to UpperCamel and prefix added. The attribute also allows generating both the current "raw" method along with the prefix'd one to make it easier to stage changes. The option is added on the dialect and currently defaults to existing raw behavior. The expectation is that the staging where both are generated would be short lived and so optimized to keeping the changes local/less invasive (it just generates two functions for each accessor with the same body - most of these internally again call a helper function). But generation can be optimized if needed. I'm unsure about OpAdaptor classes as there it is all get methods (it is a named view into raw data structures), so prefix doesn't add much. This starts with emitting raw-only form (as current behavior) as default, then one can opt-in to raw & prefixed, then just prefixed. The default in OpBase will switch to prefixed-only to be consistent with MLIR style guide. And the option potentially removed later (considered enabling specifying prefix but current discussion more pro keeping it limited and stuck with that). Also add more explicit checking for pruned functions to avoid emitting where no function was added (and so avoiding dereferencing nullptr) during op def/decl generation. See https://bugs.llvm.org/show_bug.cgi?id=51916 for further discussion. Differential Revision: https://reviews.llvm.org/D111033
-
peter klausler authored
Fold the legacy intrinsic functions LGE, LGT, LLE, & LLT by rewriting them into character relational expressions and then folding those. Also fix folding of comparisons of character values of distinct lengths: the shorter value must be padded with blanks. (This fix exposed some bad test cases, which are also fixed.) Differential Revision: https://reviews.llvm.org/D111843
-
Arthur Eubanks authored
-
Evgenii Stepanov authored
When built with hwasan, assume that the target architecture does not support TBI. HWASan uses that byte for its own purpose, and changing it breaks things. Reviewed By: hctim Differential Revision: https://reviews.llvm.org/D111842
-
Evgenii Stepanov authored
On newer glibc, this test detects an extra match somewhere under pthread_getattr_np. This results in Thread: lines getting spread out in the report and failing to match the CHECKs. Fix the CHECKs to allow this possibility. Reviewed By: fmayer Differential Revision: https://reviews.llvm.org/D111841
-
Evgenii Stepanov authored
Add a default "/" prefix to the symbol search path in the symbolization script. Without this, the binary itself is not considered a valid source of symbol info. Differential Revision: https://reviews.llvm.org/D111840
-
Peyton, Jonathan L authored
Detect, through CPUID.1A, and show user different core types through KMP_AFFINITY=verbose mechanism. Offer future runtime optimizations __kmp_is_hybrid_cpu() to know whether running on a hybrid system or not. Differential Revision: https://reviews.llvm.org/D110435
-
Peyton, Jonathan L authored
-
David Blaikie authored
Looks like lldb has some issues with this - somehow it causes lldb to treat a "char[N]" type as an array of chars (prints them out individually) but a "char [N]" is printed as a string. (even though the DWARF doesn't have this string in it - it's something to do with the string lldb generates for itself using clang) This reverts commit 277623f4.
-
peter klausler authored
Semantics refuses valid ELEMENTAL subprograms without dummy arguments, but there's no such constraint in the standard; indeed, subclause 15.8.2 discusses the meaning of calls to ELEMENTAL functions with arguments. Remove the check and its test. Differential Revision: https://reviews.llvm.org/D111832
-
Stella Laurenzo authored
* Leaves it as a commented out area with a note on how to debug.
-
Peyton, Jonathan L authored
This patch implements teams affinity on the host. The default is spread. A user can specify either spread, close, or primary using KMP_TEAMS_PROC_BIND environment variable. Unlike OMP_PROC_BIND, KMP_TEAMS_PROC_BIND is only a single value and is not a list of values. The values follow the same semantics under the OpenMP specification for parallel regions except T is the number of teams in a league instead of the number of threads in a parallel region. Differential Revision: https://reviews.llvm.org/D109921
-
Alexey Bataev authored
Need to check that either Idx is UndefMaskElem and value is UndefValue or Idx is valid and value is the same as the scalar value in the node. Differential Revision: https://reviews.llvm.org/D111802
-
David Blaikie authored
Based on post-commit review discussion on 2bd84938 with Richard Smith. Other uses of forcing HasEmptyPlaceHolder to false seem OK to me - they're all around pointer/reference types where the pointer/reference token will appear at the rightmost side of the left side of the type name, so they make nested types (eg: the "int" in "int *") behave as though there is a non-empty placeholder (because the "*" is essentially the placeholder as far as the "int" is concerned).
-
Reid Kleckner authored
After the TargetRegistry.h move, nothing in Support includes headers from MC. However, files in tablegen use MC headers, so we must add an entry for them in tblgen srcs. Differential Revision: https://reviews.llvm.org/D111835
-
Collin Baker authored
When LLVM_ENABLE_PER_TARGET_RUNTIME_DIR=on Asan-i386-calls-Dynamic-Test and Asan-i386-inline-Dynamic-Test fail to run on a x86_64 host. This is because asan's unit test lit files are configured once, rather than per target arch as with the non-unit tests. LD_LIBRARY_PATH ends up incorrect, and the tests try linking against the x86_64 runtime which fails. This changes the unit test CMake machinery to configure the default and dynamic unit tests once per target arch, similar to the other asan tests. Then the fix from https://reviews.llvm.org/D108859 is adapted to the unit test Lit files with some modifications. Fixes PR52158. Differential Revision: https://reviews.llvm.org/D111756
-
Arthur Eubanks authored
Previously without -disable-free, -clear-ast-before-backend would crash in ~ASTContext() due to various reasons. This works around that by doing a lot of the cleanup ahead of the destructor so that the destructor doesn't actually do any manual cleanup if we've already cleaned up beforehand. This actually does save a measurable amount of memory with -clear-ast-before-backend, although at an almost unnoticeable runtime cost: https://llvm-compile-time-tracker.com/compare.php?from=5d755b32f2775b9219f6d6e2feda5e1417dc993b&to=58ef1c7ad7e2ad45f9c97597905a8cf05a26258c&stat=max-rss Previously we weren't doing any cleanup with -disable-free, so I tried measuring the impact of always doing the cleanup and didn't measure anything noticeable on llvm-compile-time-tracker. Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D111767
-
Rong Xu authored
We are seeing extremely long time in building AMDGPUInstPrinter.cpp when profile instrumentation is enabled: It takes more than 5 minutes (compared to ~8 seconds in non-instrument build). This caused by the huge statements in printInstruction functions. In profile instrumentation build, we need have extra control flow to differentiate each case statement. This in turn adds significant compile time in block placement and branch folding. Function printInstruction is not likely to benefit from PGO build as it's rarely executed in a typical compilation. So here I disable the profile instrumentation for this function. Differential Revision: https://reviews.llvm.org/D111682
-
Mogball authored
Reviewed By: jpienaar Differential Revision: https://reviews.llvm.org/D111820
-
thomasraoux authored
Emit reduction during op vectorization instead of doing it when creating the transfer write. This allow us to not broadcast output arguments for reduction initial value. Differential Revision: https://reviews.llvm.org/D111825
-
Philip Reames authored
This shows the transform side of D109457, but also lets us try other approaches to the same problem. The common trend to all is that we need to explicit reason about UB to disallow possibility of infinite loops.
-
David Green authored
-
Roman Lebedev authored
While i've modelled most of the relevant tuples for AVX2, that only covered fully-interleaved groups. By definition, interleaving load of stride N means: load N*VF elements, and shuffle them into N VF-sized vectors, with 0'th vector containing elements `[0, VF)*stride + 0`, and 1'th vector containing elements `[0, VF)*stride + 1`. Example: https://godbolt.org/z/df561Me5E (i64 stride 4 vf 2 => cost 6) Now, not fully interleaved load, is when not all of these vectors is demanded. So at worst, we could just pretend that everything is demanded, and discard the non-demanded vectors. What this means is that the cost for not-fully-interleaved group should be not greater than the cost for the same fully-interleaved group, but perhaps somewhat less. Examples: https://godbolt.org/z/a78dK5Geq (i64 stride 4 (indices 012u) vf 2 => cost 4) https://godbolt.org/z/G91ceo8dM (i64 stride 4 (indices 01uu) vf 2 => cost 2) https://godbolt.org/z/5joYob9rx (i64 stride 4 (indices 0uuu) vf 2 => cost 1) As we have established over the course of last ~70 patches, (wow) `BaseT::getInterleavedMemoryOpCos()` is absolutely bogus, it is usually almost an order of magnitude overestimation, so i would claim that we should at least use the hardcoded costs of fully interleaved load groups. We could go further and adjust them e.g. by the number of demanded indices, but then i'm somewhat fearful of underestimating the cost. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D111174
-
Philip Reames authored
-
Craig Topper authored
-
Nikita Popov authored
Rather than checking for loop nest preheaders upfront in IVUsers, move this requirement into isSafeToExpand() from SCEVExpander. Historically, LSR did not check whether SCEVs are safe to expand and fully relied on IVUsers to validate this. Later, support for non-expandable SCEVs was added via rigid formulas. Checking this in isSafeToExpand() makes it more obvious what exactly this check is guarding against, and avoids the awkward loop nest scan. This is a followup to https://reviews.llvm.org/D111493#3055286. Differential Revision: https://reviews.llvm.org/D111681
-
Aaron Ballman authored
Not all constants are emitted within the context of a function, so use the module's ASTContext instead because 1) that's the same as the current function ASTContext, and 2) the module can never be null. Fixes PR50787.
-
Raphael Isemann authored
The called destructors of the members require the includes that are only in the source file.
-
Frederic Cambus authored
Differential Revision: https://reviews.llvm.org/D111793
-
Craig Topper authored
CMOVGE reads SF and OF. CMOVNS only reads SF. This matches with other recent changes to use a single flag where possible. It also matches gcc codegen. I believe this technically changes whether the conditioanl move happens on INT_MIN, but for INT_MIN both registers are the same so it doesn't matter. Differential Revision: https://reviews.llvm.org/D111826
-
Michael Kruse authored
DragonEgg is not maintained anymore, hence there is no need for this functionality. Fixes llvm.org/PR52173
-
Michael Kruse authored
Make the changes top-level items, instead of subitems of the "Changes..." placeholder.
-
Aaron Ballman authored
It seems that Clang 11 regressed functionality that was working in Clang 10 regarding calling a few overloaded operators in an immediate context. Specifically, we were not checking for immediate invocations of array subscripting and the arrow operators, but we properly handle the other overloaded operators. This fixes the two problematic operators and adds some test coverage to show they're equivalent to calling the operator directly. This addresses PR50779.
-
Raphael Isemann authored
Platform instances are stored in a function-local static list. However, the logging code involves locking a function-local static mutex. This only works on some implementations where the Log mutex is by accident destroyed *after* the Platform list is destroyed. This fixes randomly failing tests due to `recursive_mutex lock failed: Invalid argument`. Reviewed By: kastiglione Differential Revision: https://reviews.llvm.org/D111816
-
Rob Suderman authored
Part of the arith update broke UiToFp32. Fixed the lowering and included a new test to detect a regression. Differential Revision: https://reviews.llvm.org/D111772
-