- Jan 07, 2021
-
-
Thomas Raoux authored
Differential Revision: https://reviews.llvm.org/D93904
-
Yaxun (Sam) Liu authored
clang-offload-bundler is not only used by clang driver to bundle/unbundle files for offloading toolchains, but also used by out of tree tools to unbundle fat binaries generated by clang. It is important to be able to list the bundle IDs in a bundled file so that the bundles can be extracted. This patch adds an option -list to list bundle ID's in a bundled file. Each bundle ID is separated by new line. If the file is not a bundled file nothing is output and returns 0. Differential Revision: https://reviews.llvm.org/D92954
-
Nikita Popov authored
Change the way NoAlias assumptions in BasicAA are handled. Instead of handling this inside the phi-phi code, always initially insert a NoAlias result into the map and keep track whether it is used. If it is used, then we require that we also get back NoAlias from the recursive queries. Otherwise, the entry is changed to MayAlias. Additionally, keep track of all location pairs we inserted that may still be based on assumptions higher up. If it turns out one of those assumptions is incorrect, we flush them from the cache. The compile-time impact for the new implementation is significantly higher than the previous iteration of this patch: https://llvm-compile-time-tracker.com/compare.php?from=c0bb9859de6991cc233e2dedb978dd118da8c382&to=c07112373279143e37568b5bcd293daf81a35973&stat=instructions However, it should avoid the exponential runtime cases we run into if we don't cache assumption-based results entirely. This also produces better results in some cases, because NoAlias assumptions can now start at any root, rather than just phi-phi pairs. This is not just relevant for analysis quality, but also for BatchAA consistency: Otherwise, results would once again depend on query order, though at least they wouldn't be wrong. This ended up both more complicated and more expensive than I hoped, but I wasn't able to come up with another solution that satisfies all the constraints. Differential Revision: https://reviews.llvm.org/D91936
-
Anastasia Stulova authored
With the internal clang extension '__cl_clang_variadic_functions' variadic functions are accepted by the frontend. This is not a fully supported vendor/Khronos extension as it can only be used on targets with variadic prototype support or in metaprogramming to represent functions with generic prototype without calling such functions in the kernel code. Tags: #clang Differential Revision: https://reviews.llvm.org/D94027
-
Anastasia Stulova authored
The new clang internal extension '__cl_clang_function_pointers' allows use of function pointers and other features that have the same functionality: - Use of member function pointers; - Unrestricted use of references to functions; - Virtual member functions. This not a vendor extension and therefore it doesn't require any special target support. Exposing this functionality fully will require vendor or Khronos extension. Tags: #clang Differential Revision: https://reviews.llvm.org/D94021
-
Christian Sigg authored
[mlir] Remove a number of methods from mlir::OpState that just forward to mlir::Operation. All call sites have been converted in previous changes.
-
Nikita Popov authored
I don't believe this has an observable effect, because the only thing we care about here is replacing the operand with a constant so following folds can apply. This change is just to make the representation follow canonical unary shuffle form.
-
Nikita Popov authored
Calling null or undef results in immediate undefined behavior. Return poison instead of undef in this case, similar to what we do for immediate UB due to division by zero.
-
Nikita Popov authored
Replace call to undef with a dummy function, to avoid affecting this change by changes to call undef folding.
-
Nathan James authored
-
Arthur Eubanks authored
The new PM does not have loop-unswitch, it only has simple-loop-unswitch.
-
Craig Topper authored
nvxXi1 types are legal with V extension and that's the result vmseq/vmsne/vmslt/etc instructions return. No test cases yet because the setcc isel patterns aren't in and we'll need more than basic tests to observe this. I locally tested that this plus D947078, D94168, D94142, and D94149 was enough to be able to handle the overflow result from llvm.sadd.overflow.
-
Arthur Eubanks authored
The pipeline being tested is specifically the legacy PM pipeline.
-
Arthur Eubanks authored
-
Nikita Popov authored
Make InstSimplify return poison rather than undef for out-of-bounds shifts, as specified by LandRef: > If op2 is (statically or dynamically) equal to or larger than the > number of bits in op1, this instruction returns a poison value. Differential Revision: https://reviews.llvm.org/D93998
-
Nikita Popov authored
-
Sanjay Patel authored
Similar to 5a1d31a2 - This should be no-functional-change because the reduction kind opcodes are 1-for-1 mappings to the instructions we are matching as reductions. But we want to remove the need for the `OperationData` opcode field because that does not work when we start matching intrinsics (eg, maxnum) as reduction candidates.
-
Sanjay Patel authored
If we add/change to match intrinsics, this might get more wordy, but there's no need to list each kind currently.
-
Arthur Eubanks authored
Previously when trying to support CoroSplit's function splitting, we added in a hack that simply added the new function's node into the original function's SCC (https://reviews.llvm.org/D87798). This is incorrect since it might be in its own SCC. Now, more similar to the previous design, we have callers explicitly notify the LazyCallGraph that a function has been split out from another one. In order to properly support CoroSplit, there are two ways functions can be split out. One is the normal expected "outlining" of one function into a new one. The new function may only contain references to other functions that the original did. The original function must reference the new function. The new function may reference the original function, which can result in the new function being in the same SCC as the original function. The weird case is when the original function indirectly references the new function, but the new function directly calls the original function, resulting in the new SCC being a parent of the original function's SCC. This form of function splitting works with CoroSplit's Switch ABI. The second way of splitting is more specific to CoroSplit. CoroSplit's Retcon and Async ABIs split the original function into multiple functions that all reference each other and are referenced by the original function. In order to keep the LazyCallGraph in a valid state, all new functions must be processed together, else some nodes won't be populated. To keep things simple, this only supports the case where all new edges are ref edges, and every new function references every other new function. There can be a reference back from any new function to the original function, putting all functions in the same RefSCC. This also adds asserts that all nodes in a (Ref)SCC can reach all other nodes to prevent future incorrect hacks. The original hacks in https://reviews.llvm.org/D87798 are no longer necessary since all new functions should have been registered before calling updateCGAndAnalysisManagerForPass. This fixes all coroutine tests when opt's -enable-new-pm is true by default. This also fixes PR48190, which was likely due to the previous hack breaking SCC invariants. Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D93828
-
Valentin Clement authored
This patch adds some positive and failure tests for init and shutdown directives. Reviewed By: kiranktp Differential Revision: https://reviews.llvm.org/D90786
-
Fangrui Song authored
-
Fangrui Song authored
Several `#if SANITIZER_LINUX && !SANITIZER_ANDROID` guards are replaced with the more appropriate `#if SANITIZER_GLIBC` (the headers are glibc extensions, not specific to Linux (i.e. if we ever support GNU/kFreeBSD or Hurd, the guards may automatically work)). Several `#if SANITIZER_LINUX && !SANITIZER_ANDROID` guards are refined with `#if SANITIZER_GLIBC` (the definitions are available on Linux glibc, but may not be available on other libc (e.g. musl) implementations). This patch makes `ninja asan cfi lsan msan stats tsan ubsan xray` build on a musl based Linux distribution (apk install musl-libintl) Notes about disabled interceptors for musl: * `SANITIZER_INTERCEPT_GLOB`: musl does not implement `GLOB_ALTDIRFUNC` (GNU extension) * Some ioctl structs and functions operating on them. * `SANITIZER_INTERCEPT___PRINTF_CHK`: `_FORTIFY_SOURCE` functions are GNU extension * `SANITIZER_INTERCEPT___STRNDUP`: `dlsym(...
-
Joseph Huber authored
Summary: Optimized debugging is not supported by ptxas. Debugging information is degraded to line information only if optimizations are enabled, but debugging information would be added back in by the driver if remarks were enabled. This solves https://bugs.llvm.org/show_bug.cgi?id=48153. Reviewers: jdoerfert tra jholewinski serge-sans-paille Differential Revision: https://reviews.llvm.org/D94123
-
Mircea Trofin authored
This covers tests starting with m-r. Differential Revision: https://reviews.llvm.org/D94181
-
Simon Pilgrim authored
Suggested by @spatel
-
Florian Hahn authored
The MatrixType, ExtVectorType, VectorSize and AddressSpace attributes have arguments defined as ExprArguments in Attr.td. So their arguments should never be ArgIdents and the logic to handle this case can be removed. The logic has been replaced by an assertion to ensure the arguments are always ArgExpressions Reviewed By: erichkeane Differential Revision: https://reviews.llvm.org/D94092
-
Reid Kleckner authored
The CSR lists control which registers are spilled and reloaded in the prologue and epilogue. The stack pointer is managed explicitly, and should never be pushed or popped. Remove it from these lists. This affected regcall and preserves all / most. Differential Revision: https://reviews.llvm.org/D94118
-
Sanjoy Das authored
Differential Revision: https://reviews.llvm.org/D93982
-
Sanjoy Das authored
Differential Revision: https://reviews.llvm.org/D93996
-
Kazuaki Ishizaki authored
fix typos under docs, test, and tools directories Reviewed By: ftynse Differential Revision: https://reviews.llvm.org/D94158
-
Mircea Trofin authored
All the 'l'-starting tests. Differential Revision: https://reviews.llvm.org/D94151
-
Matt Arsenault authored
Change the GlobalISel fast fdiv handling to match the changes in 25315359 and 884acbb9
-
Peter Waller authored
This is a follow-up to a request from a reviewer [0]. The text may change in the future and these tests should not produce any warning output. [0] https://reviews.llvm.org/D91806#inline-879243 Reviewed By: sdesmalen, david-arm Differential Revision: https://reviews.llvm.org/D94161
-
Francesco Petrogalli authored
* Update valueCoversEntireFragment to use TypeSize. * Add a regression test. * Assertions have been added to protect untested codepaths. Reviewed By: sdesmalen Differential Revision: https://reviews.llvm.org/D91806
-
Matt Arsenault authored
The fdiv lowering is currently split between an IR pass and codegen, so make sure this works end to end. We also currently differ from the DAG on some edge cases, which this will show in a future change.
-
Matt Arsenault authored
GlobalISel will probably not support the legacy buffer intrinsics, so don't fail when the default is switched.
-
Faris Rehman authored
Add support for options -D and -U in the new Flang driver. Summary of changes: - Create PreprocessorOptions, to be used by the driver then translated into Fortran::parser::Options - Create CompilerInvocation::setFortranOpts to pass preprocessor options into the parser options - Add a dedicated method, Flang::AddPreprocessingOptions, to extract preprocessing options from the driver arguments into the preprocessor command arguments Macros specified like -DName will default to definition 1. When defining macros, the new driver will drop anything after an end-of-line character. This is consistent with gfortran and clang, but different to what currently f18 does. However, flang (which is a bash wrapper for f18), also drops everything after an end-of-line character. So gfortran-like behaviour felt like the natural choice. Test is added to demonstrate this behaviour. Reviewed By: awarzynski Differential Revision: https://reviews.llvm.org/D93401 -
Simon Pilgrim authored
-
Nicholas Guy authored
Performing this rearrangement allows for existing patterns to match cases where the vector may be built after an extend, instead of before. Differential Revision: https://reviews.llvm.org/D91255
-
- Jan 06, 2021
-
-
Simon Pilgrim authored
<vector> (unlike many other c++ headers) is relatively clean, so if the file doesn't use std::vector then it shouldn't need the header.
-