- Dec 08, 2023
-
-
Zixu Wang authored
Add an extension feature `define-target-os-macros` that enables clang to provide definitions of common TARGET_OS_* conditional macros. The extension is enabled in the Darwin toolchain driver.
-
Justin Bogner authored
A few changes to HLSLExternalSemaSource and its BuiltinTypeDeclBuilder to make defining buffer types less verbose. This will make it a lot easier to see what the differences between the various buffer types are once we start introducing more of them. Pull Request: https://github.com/llvm/llvm-project/pull/73967
-
Erich Keane authored
The 'wait' construct comes in two forms: one with no parens, the second with a 'wait-argument'. This implements both forms for constructs. Additionally, the 'wait-argument' parsing is split into its own function because the 'wait clause' can also take the same 'wait-argument'.
-
Justin Bogner authored
-
Jeffrey Byrnes authored
We can also re-enter IGLP mutation via later `SchedStage`s in the `GCNMaxOccupancySchedStrategy` . This is sort of NFC in that there is no changed behavior for the only current client of `IsReentry`
-
Mike Rice authored
Since VD is assigned from a cast<VarDecl> it cannot be a nullptr or it would have asserted. Remove the subsequent checks to clear up any misunderstanding.
-
Aart Bik authored
-
harsh-nod authored
This patch modifies the CombineTransferReadOpTranspose pattern to handle extf ops. Also adds a test which shows the transpose getting folded into the transfer_read.
-
Joseph Huber authored
Summary: This was accidentally linked to the wrong pointer, causing unused variable warnings and registering the wrong thing.
-
Adrian Prantl authored
when run on invalid input.
-
Lang Hames authored
1. Prevent deadlock by unlocking JDStatesMutex when calling back to the controller to request a push of new symbols. (If JDStatesMutex is locked then the push operation can't register the new symbols, and so can't complete). 2. Record MachOPlatform runtime symbols during bootstrap and attach their registration to the bootstrap-completion graph, similar to the way that deferred allocation actions are handled. We can't register the symbols the normal way during bootstrap since the symbol registration function is itself in the process of being materialized. 3. Add dlsym testcases to exercise these fixes.
-
jimingham authored
We need to generate events when finalizing, or we won't know that we succeeded in stopping the process to detach/kill. Instead, we stall and then after our 20 interrupt timeout, we kill the process (even if we were supposed to detach) and exit. OTOH, we have to not generate events when the Process is being destructed because shared_from_this has already been torn down, and using it will cause crashes.
-
max authored
-
Karthika Devi C authored
This patch pulls out the memory checks from the base reduction detection algorithm. This is the first one in the reduction patch series, to reduce the difference in future patches.
-
Maksim Levental authored
-
ChiaHungDuan authored
`realloc` may involve both allocation and deallocation. Given that the reporting the events is not atomic and which may lead the hook user to a false case that the double-use pattern happens. In general, this can be resolved on the hook side. To alleviate the task of handling it, we add two new hooks to mark the range so that the hook user can combine those calls together.
-
Arthur Eubanks authored
We'd like to make the asan_globals section large to make it not contribute to relocation pressure since there are no direct PC32 references to it. Following #74498, we can do that by marking the code model for the global explicitly large. Without this change, asan_globals gets placed between .data and .bss. With this change, it gets placed after .bss.
-
Joseph Huber authored
Summary: This patch adds support for registering texture / surface variables from CUDA / HIP. Additionally, we now properly track the `extern` and `const` flags that are also used in these runtime functions. This does not implement the `managed` variables yet as those seem to require some extra handling I'm not familiar with. The issue is that the current offload entry isn't large enough to carry size and alignment information along with an extra global.
-
Alexey Bataev authored
-
Vlad Serebrennikov authored
-
Craig Topper authored
Fixes #74739.
-
Craig Topper authored
-
kkwli authored
-
Alexey Bataev authored
-
Philip Reames authored
LSR uses SCEVExpander to generate induction formulas. The expander internally tries to reuse existing IR expressions. To do that, it needs to strip any poison generating flags (nsw, nuw, exact, nneg, etc..) which may not be valid for the newly added users. This is conservatively correct, but has the effect that LSR will strip nneg flags on zext instructions involved in trip counts in loop preheaders. To avoid this, this patch adjusts the expanded to reinfer the flags on the CSE candidate if legal for all possible users. This should fix the regression reported in https://github.com/llvm/llvm-project/issues/71200. This should arguably be done inside canReuseInstruction instead, but doing it outside is more conservative compile time wise. Both canReuseInstruction and isGuaranteedNotToBePoison walk operand lists, so right now we are performing work which is roughly O(N^2) in the size of the operand graph. We should fix that before making the per operand step more expensive. My tenative plan is to land this, and then rework the code to sink the logic into more core interfaces.
-
Craig Topper authored
Instead of using the STI stored in RISCVAsmBackend, try to get it from the MCFragment. This addresses the issue raised here https://discourse.llvm.org/t/possible-problem-related-to-subtarget-usage/75283
-
Cyndy Ishida authored
Came across simple code cleanup while upstreaming more code, this is primarily an NFC.
-
Fangrui Song authored
relocateNonAlloc is costly for .debug_* section relocating. We don't want to burn CPU cycles on other targets' workarounds. Remove a temporary workaround for Linux objtool after a proper fix https://git.kernel.org/linus/b8ec60e1186cdcfce41e7db4c827cb107e459002 Move the R_386_GOTPC workaround for GCC<8 beside the R_PC workaround.
-
LLVM GN Syncbot authored
-
Natalie Chouinard authored
These tests are currently failing at tip-of-tree, but pass with minor FileCheck updates that look reasonable.
-
Natalie Chouinard authored
This part of the #74660 patch was incorrect and shouldn't have been changed since this usage of `isOpaque()` is not one of `PointerType`'s functions.
-
Ilia Kuklin authored
As of now, llvm-objcopy silently ignores a provided regex if it doesn't compile. This patch adds returning an error saying that a regex couldn't be compiled, along with the compilation error message. --------- Co-authored-by:James Henderson <46713263+jh7370@users.noreply.github.com>
-
Fangrui Song authored
-
Aiden Grossman authored
Using a two dot diff allows changes made in main after the merge base to show up in the formatting diff. Using a three dot diff fixes this and ensures that only changes made in the source branch (branch from the PR author) will get passed along to the formatter. Without this, issues like #73873 occur.
-
Abhina Sree authored
This change extend the CMake files with the necessary additions to build LLVM for z/OS.
-
Peiming Liu authored
…se conv kernel.
-
Björn Svensson authored
This check implements the [rule 17.5.1](https://www.perforce.com/resources/qac/high-integrity-cpp-coding-standard/standard-library) of the HICPP standard which states: - Do not ignore the result of std::remove, std::remove_if or std::unique The mutating algorithms std::remove, std::remove_if and both overloads of std::unique operate by swapping or moving elements of the range they are operating over. On completion, they return an iterator to the last valid element. In the majority of cases the correct behavior is to use this result as the first operand in a call to std::erase. This check is based on `bugprone-unused-return-value` but with a fixed set of functions. Suppressing issues by casting to `void` is enabled by default, but can be disabled by setting `AllowCastToVoid` option to `false`.
-
Joseph Huber authored
Summary: The standard GNU atomic operations are a very common way to target hardware atomics on the device. With more heterogenous devices being introduced, the concept of memory scopes has been in the LLVM language for awhile via the `syncscope` modifier. For targets, such as the GPU, this can change code generation depending on whether or not we only need to be consistent with the memory ordering with the entire system, the single GPU device, or lower. Previously these scopes were only exported via the `opencl` and `hip` variants of these functions. However, this made it difficult to use outside of those languages and the semantics were different from the standard GNU versions. This patch introduces a `__scoped_atomic` variant for the common functions. There was some discussion over whether or not these should be overloads of the existing ones, or simply new variants. I leant towards new variants to be less disruptive. The scope here can be one of the following ``` __MEMORY_SCOPE_SYSTEM // All devices and systems __MEMORY_SCOPE_DEVICE // Just this device __MEMORY_SCOPE_WRKGRP // A 'work-group' AKA CUDA block __MEMORY_SCOPE_WVFRNT // A 'wavefront' AKA CUDA warp __MEMORY_SCOPE_SINGLE // A single thread. ``` Naming consistency was attempted, but it is difficult to capture to full spectrum with no many names. Suggestions appreciated.
-
yonghong-song authored
…ONS=OFF Jose reported an issue ([1]) where for the below illegal asm code ``` r0 = 1 + w3 ll ``` clang actually supports it and generates the object code. Further investigation finds that clang actually intends to reject the above code as well but only when the clang is built with LLVM_ENABLE_ASSERTIONS=ON. I later found that clang16 (built by redhat and centos) in fedora system has the same issue since they also have LLVM_ENABLE_ASSERTIONS=OFF ([2]). So let BPF backend report an error for the above case regardless of the LLVM_ENABLE_ASSERTIONS setting. [1] https://lore.kernel.org/bpf/87leahx2xh.fsf@oracle.com/#t [2] https://lore.kernel.org/bpf/840e33ec-ea4c-4b55-bda1-0be8d1e0324f@linux.dev/ Co-authored-by:
Yonghong Song <yonghong.song@linux.dev>
-
Craig Topper authored
User::getOperandList has to check the HasHungOffUses bit in Value to determine how the operand list is stored. If we're using HungoffOperandTraits we can assume how it is stored without checking the flag. Noticed that the for loop in matchSimpleRecurrence was triggering loop unswitch when built with clang due to specializing based on how the operand list of the PHINode was stored. This reduces the size of llc on my local Release+Asserts build by around 41K.
-