- Jan 27, 2021
-
-
Raphael Isemann authored
Identical to previous commits that just add a standard library template to the supported template list and test it. Adding this rather obscure class to the template list is mostly caused by the std::deque test unexpectedly referencing this type when testing against newer libc++ versions on macOS. Fixes TestQueueFromStdModule and TestQueueFromStdModule on macOS. Fixes rdar://73213589
-
Jeremy Morse authored
This is a fix for PR48790. Over in D70350, subprogram DIEs were permitted to be shared between CUs. However, the creation of a subprogram DIE can be triggered early, from other CUs. The subprogram definition is then created in one CU, and when the function is actually emitted children are attached to the subprogram that expect to be in another CU. This breaks internal CU references in the children. Fix this by redirecting the creation of subprogram DIEs in getOrCreateContextDIE to the CU specified by it's DISubprogram definition. This ensures that the subprogram DIE is always created in the correct CU. Differential Revision: https://reviews.llvm.org/D94976
-
Anastasia Stulova authored
Moved information detailing the implementation from UsersManual into OpenCLSupport page as it is not relevant to the user's of clang but primarily needed for the compiler developers. Tags: #clang Differential Revision: https://reviews.llvm.org/D95061
-
Artem Dergachev authored
Currently only used by MoveChecker but ideally all checkers should have reusable categories.
-
Nico Weber authored
These do for the Windows SDK path what D85998 did for %VCToolsInstallDir% with /vctoolsdir: Offer a way to set them with an explicit commandline switch. With this (and /vctoolsdir), it's possible to compile and link against hermetic vctools and winsdk directories with: out/gn/bin/clang-cl win.c -fuse-ld=lld \ /vctoolsdir path/to/VC/Tools/MSVC/14.26.28801 \ /winsdkdir path/to/win_sdk compared to a long list of -imsvc and /link /libpath: flags. While here: - Change the case of the "Include" folder inside the windows sdk from "include" to "Include" to match on-disk case. Since the Windows file system is case-insensitive this isn't a behavior change, it's just a bit cleaner. - Add libpath tests to the /vctoolsdir - Add a FIXME about reading env vars for win sdk and ucrt sdk if these flags aren't present, to match the VCToolsInstallDir logic We should also cache all these computed paths in the driver instead of computing them every time they're queried, but that's for a future patch. It'd also be nice to invent a /winsysroot: flag that sets both /vctoolsdir: and /winsdkdir: to some well-known subdirectory. That's for a future patch as well. Differential Revision: https://reviews.llvm.org/D95472 -
Mindong Chen authored
In computeLoadConstantCompareExitLimit, the addrec used to compute the exit count should be from the loop which the exiting block belongs to. Reviewed by: mkazantsev Differential Revision: https://reviews.llvm.org/D92367
-
Mikhail Maltsev authored
This change makes `DeclarationNameLoc` a proper class and refactors its users to use getter methods instead of accessing the members directly. The change also makes `DeclarationNameLoc` immutable (i.e., it cannot be modified once constructed). Reviewed By: aprantl Differential Revision: https://reviews.llvm.org/D94596
-
Sjoerd Meijer authored
This moves SinkIntoLoop from MachineLICM to MachineSink. The motivation for this work is that hoisting is a canonicalisation transformation, but we do not really have a good story to sink instructions back if that is better, e.g. to reduce live-ranges, register pressure and spilling. This has been discussed a few times on the list, the latest thread is: https://lists.llvm.org/pipermail/llvm-dev/2020-December/147184.html There it was pointed out that we have the LoopSink IR pass, but that works on IR, lacks register pressure informatiom, and is focused on profile guided optimisations, and then we have MachineLICM and MachineSink that both perform sinking. MachineLICM is more about hoisting and CSE'ing of hoisted instructions. It also contained a very incomplete and disabled-by-default SinkIntoLoop feature, which we now move to MachineSink. Getting loop-sinking to do something useful is going to be at least a 3-step approach: 1) This is just moving the code and is almost a NFC, but contains a bug fix. This uses helper function `isLoopInvariant` that was factored out in D94082 and added to MachineLoop. 2) A first functional change to make loop-sink a little bit less restrictive, which it really is at the moment, is the change in D94308. This lets it do more (alias) analysis using functions in MachineSink, making it a bit more powerful. Nothing changes much: still off by default. But it shows that MachineSink is a better home for this, and it starts using its functionality like `hasStoreBetween`, and in the next step we can use `isProfitableToSinkTo`. 3) This is the going to be he interesting step: decision making when and how many instructions to sink. This will be driven by the register pressure, and deciding if reducing live-ranges and loop sinking will help in better performance. 4) Once we are happy with 3), this should be enabled by default, that should be the end goal of this exercise. Differential Revision: https://reviews.llvm.org/D93694
-
David Green authored
This adds sadd.sat, uadd.sat, ssub.sat and usub.sat costs for AArch64, similar to how they were recently added for ARM. Differential Revision: https://reviews.llvm.org/D95292
-
Fraser Cormack authored
This patch fixes some crashes coming from `RISCVISelLowering::getSetCCResultType`, which would occasionally return an EVT constructed from an invalid MVT, which has a null Type pointer. The attached test shows this happening currently for some fixed-length vectors, which hit this issue when the V extension was enabled, even though they're not legal types under the V extension. The fix was also pre-emptively extended to scalable vectors which can't be represented as an MVT, even though a test case couldn't be found for them. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D95434
-
Faris Rehman authored
Ensure diagnostics from the prescanner are reported when running `flang-new -fsyntax-only` (i.e. only syntax parsing). This keeps the diagnostics output of flang-new consistent with `f18 -fparse-only` when running the syntax parsing action, ParseSyntaxOnlyAction. Summary of changes: - Modify ParseSyntaxOnlyAction::ExecuteAction to report diagnostics Differential Revision: https://reviews.llvm.org/D95220
-
Simon Pilgrim authored
-
Jay Foad authored
... and similarly for some other cases. This is for consistency and to make it easier to search for mentions of a particular architecture. Differential Revision: https://reviews.llvm.org/D95453
-
David Green authored
This adds some simple fp16 scalar_to_vector patterns, preventing a selection failure if this came up. Differential Revision: https://reviews.llvm.org/D95427
-
Cassie Jones authored
-
Cassie Jones authored
This makes G_SADDE and G_SSUBE legal in preparation for further work legalizing overflowing operations. It's fine that they don't have an instruction selector implementation yet, because G_UADDE and G_USUBE are already legal on AArch64 without an instruction selector implementation. This completes the set of G_[SU]{ADD,SUB}[EO] operations on AArch64. Reviewed By: paquette Differential Revision: https://reviews.llvm.org/D95325 -
Sven van Haastregt authored
The included test case triggered a sign assertion on the result in `Success()`. This was caused by the APSInt created for a bitcast having its signedness bit inverted. The second APSInt constructor argument is `isUnsigned`, so invert the result of `isSignedIntegerType`. Relanding this patch after reverting. The test case had to be updated to be insensitive to 32/64-bit extractelement indices. Differential Revision: https://reviews.llvm.org/D95135
-
Siva Chandra Reddy authored
Without this, the array can end up being an empty array leading to compiler failures.
-
AndreyChurbanov authored
Problem reported by Joseph Shen <joseph.smeng@gmail.com>. The patch changes *(&<atomic-var>) to (&<atomic-var>)->load(). Differential Revision: https://reviews.llvm.org/D95485
-
Jan Svoboda authored
Port some miscellaneous language options to the marshalling system for oautomatic command line parsing and generation. Reviewed By: dexonsmith Differential Revision: https://reviews.llvm.org/D95347
-
Nicolas Vasilache authored
OffsetSizeAndStrideOpInterface now have the ability to specify only a leading subset of offset, sizes, strides operands/attributes. The size of that leading subset must be limited by the corresponding entry in `getArrayAttrMaxRanks` to avoid overflows. Missing trailing dimensions are assumed to span the whole range (i.e. [0 .. dim)). This brings more natural semantics to slice-like op on top of subview and is a simplifies to removing all uses of SliceOp in dependent projects. Differential revision: https://reviews.llvm.org/D95441
-
Alexey Bader authored
A fix has been implemented in the ittap repo to fix an error about implicit fallthrough in a switch that was occurring during self build. A new tag has been created for that fix. This is to update the tag. Reviewed By: bader Differential Revision: https://reviews.llvm.org/D95462 Patch by Zahira Ammarguellat.
-
Marek Kurdej authored
This fixes a bug [[ http://llvm.org/PR48891 | PR48891 ]] introduced in D93839 where: ``` #include <stdint.h> namespace rep {} ``` got formatted as ``` #include <stdint.h> namespace rep { } ``` Reviewed By: MyDeveloperDay, leonardchan Differential Revision: https://reviews.llvm.org/D95479
-
Jan Svoboda authored
Port some miscellaneous language options to the marshalling system for oautomatic command line parsing and generation. Reviewed By: dexonsmith Differential Revision: https://reviews.llvm.org/D95346
-
MaheshRavishankar authored
Differential Revision: https://reviews.llvm.org/D95305
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Kazu Hirata authored
AMDGPUInstructionSelector.h needs TargetRegisterClass but relies on a forward declaration of TargetRegisterClass in InstructionSelector.h. This patch adds a forward declaration right in AMDGPUInstructionSelector.h. While we are at it, this patch removes the one in InstructionSelector.h, where it is unnecessary.
-
Craig Topper authored
[TableGen] Add isContradictoryImpl implementation to CheckCondCodeMatcher and CheckChild2CondCodeMatcher. This enables better pattern factoring in the RISCV ISel table.
-
Tom Stellard authored
and clear the release notes.
-
Duncan P. N. Exon Smith authored
Use early returns in `CompilerInstance::clearOutputFiles` to clarify the logic, and rename `ec` to `EC` as a drive-by. No functionality change.
-
Duncan P. N. Exon Smith authored
A follow up patch will add a few success cases here; rename it to `output-paths.c` instead of `output-failures.c`.
-
LLVM GN Syncbot authored
-
Shilei Tian authored
With D94745, we no longer use CUDA SDK to compile `deviceRTLs`. Therefore, many CMake code in the project is useless. This patch cleans up unnecessary code and also drops the requirement to build NVPTX `deviceRTLs`. CUDA detection is still being used however to determine whether we need to involve the tests. Auto detection of compute capability is enabled by default and can be disabled by setting CMake variable `LIBOMPTARGET_NVPTX_AUTODETECT_COMPUTE_CAPABILITY=OFF`. If auto detection is enabled, and CUDA is also valid, it will only build the bitcode library for the detected version; otherwise, all variants supported will be generated. One drawback of this patch is, we now generate 96 variants of bitcode library, and totally 1485 files to be built with a clean build on a non-CUDA system. `LIBOMPTARGET_NVPTX_COMPUTE_CAPABILITIES=""` can be used to disable building NVPTX `deviceRTLs`. Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D95466
-
Craig Topper authored
Remove common instructions from rv64 tests since they are now covered by the rv64 run lines in the rv32 tests. Add rv32-only* tests for a few cases that aren't common between r32 and rv64. Addresses review feedback from D95150. Reviewed By: frasercrmck Differential Revision: https://reviews.llvm.org/D95272
-
Petr Hosek authored
This change implements support for applying profile instrumentation only to selected files or functions. The implementation uses the sanitizer special case list format to select which files and functions to instrument, and relies on the new noprofile IR attribute to exclude functions from instrumentation. Differential Revision: https://reviews.llvm.org/D94820
-
Arthur O'Dwyer authored
Split out of D93512.
-
Nawrin Sultana authored
This patch sets the def-allocator-var ICV based on the environment variables provided in OMP_ALLOCATOR. Previously, only allowed value for OMP_ALLOCATOR was a predefined memory allocator. OpenMP 5.1 specification allows predefined memory allocator, predefined mem space, or predefined mem space with traits in OMP_ALLOCATOR. If an allocator can not be created using the provided environment variables, the def-allocator-var is set to omp_default_mem_alloc. Differential Revision: https://reviews.llvm.org/D94985
-
Jon Chesterfield authored
[libomptarget][cuda] Handle missing _v2 symbols gracefully Follow on from D95367. Dlsym the _v2 symbols if present, otherwise use the unsuffixed version. Builds a hashtable for the check, can revise for zero heap allocations later if necessary. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D95415
-
Nico Weber authored
-