- Jul 15, 2022
-
-
Rainer Orth authored
Even with D129349 <https://reviews.llvm.org/D129349>, various SPARC JIT tests still `FAIL`. They are guarded by `host-supports-jit`. This is set from `clang-repl --host-supports-jit` which still returns `true`. It turns out the `JITTargetMachineBuilder` doesn't consider `hasJIT` at all. This patch corrects this, turning the affected tests `UNSUPPORTED`. Tested on `sparcv9-sun-solaris2.11`. Differential Revision: https://reviews.llvm.org/D129350
-
Rainer Orth authored
Until D118450 <https://reviews.llvm.org/D118450> lands, there's no JIT support on SPARC, but the backend claims otherwise, leading to various testsuite failures. This patch corrects this. Tested on `sparcv9-sun-solaris2.11`. Differential Revision: https://reviews.llvm.org/D129349
-
LLVM GN Syncbot authored
-
Jonas Devlieghere authored
Print the enum values and their description in the help output for argument values. Until now, there was no way to get these values and their description. Example output: (lldb) help <description-verbosity> <description-verbosity> -- How verbose the output of 'po' should be. compact : Only show the description string full : Show the full output, including persistent variable's name and type Differential revision: https://reviews.llvm.org/D129707 -
Jonas Devlieghere authored
Refactor the command option enum values and the command argument table to connect the two. This has two benefits: - We guarantee that two options that use the same argument type have the same accepted values. - We can print the enum values and their description in the help output. (D129707) Differential revision: https://reviews.llvm.org/D129703
-
Jonas Devlieghere authored
This reverts commit 7c51f02e because it stills breaks the LLDB tests. This was re-landed without addressing the issue or even agreement on how to address the issue. More details and discussion in https://reviews.llvm.org/D112374.
-
Kostya Serebryany authored
Add weak definitions for the load/store callbacks. This matches the weak definitions for all other SanitizerCoverage callbacks. Reviewed By: vitalybuka Differential Revision: https://reviews.llvm.org/D129801
-
Matheus Izvekov authored
Without this patch, clang will not wrap in an ElaboratedType node types written without a keyword and nested name qualifier, which goes against the intent that we should produce an AST which retains enough details to recover how things are written. The lack of this sugar is incompatible with the intent of the type printer default policy, which is to print types as written, but to fall back and print them fully qualified when they are desugared. An ElaboratedTypeLoc without keyword / NNS uses no storage by itself, but still requires pointer alignment due to pre-existing bug in the TypeLoc buffer handling. --- Troubleshooting list to deal with any breakage seen with this patch: 1) The most likely effect one would see by this patch is a change in how a type is printed. The type printer will, by design and default, print types as written. There are customization options there, but not that many, and they mainly apply to how to print a type that we somehow failed to track how it was written. This patch fixes a problem where we failed to distinguish between a type that was written without any elaborated-type qualifiers, such as a 'struct'/'class' tags and name spacifiers such as 'std::', and one that has been stripped of any 'metadata' that identifies such, the so called canonical types. Example: ``` namespace foo { struct A {}; A a; }; ``` If one were to print the type of `foo::a`, prior to this patch, this would result in `foo::A`. This is how the type printer would have, by default, printed the canonical type of A as well. As soon as you add any name qualifiers to A, the type printer would suddenly start accurately printing the type as written. This patch will make it print it accurately even when written without qualifiers, so we will just print `A` for the initial example, as the user did not really write that `foo::` namespace qualifier. 2) This patch could expose a bug in some AST matcher. Matching types is harder to get right when there is sugar involved. For example, if you want to match a type against being a pointer to some type A, then you have to account for getting a type that is sugar for a pointer to A, or being a pointer to sugar to A, or both! Usually you would get the second part wrong, and this would work for a very simple test where you don't use any name qualifiers, but you would discover is broken when you do. The usual fix is to either use the matcher which strips sugar, which is annoying to use as for example if you match an N level pointer, you have to put N+1 such matchers in there, beginning to end and between all those levels. But in a lot of cases, if the property you want to match is present in the canonical type, it's easier and faster to just match on that... This goes with what is said in 1), if you want to match against the name of a type, and you want the name string to be something stable, perhaps matching on the name of the canonical type is the better choice. 3) This patch could exposed a bug in how you get the source range of some TypeLoc. For some reason, a lot of code is using getLocalSourceRange(), which only looks at the given TypeLoc node. This patch introduces a new, and more common TypeLoc node which contains no source locations on itself. This is not an inovation here, and some other, more rare TypeLoc nodes could also have this property, but if you use getLocalSourceRange on them, it's not going to return any valid locations, because it doesn't have any. The right fix here is to always use getSourceRange() or getBeginLoc/getEndLoc which will dive into the inner TypeLoc to get the source range if it doesn't find it on the top level one. You can use getLocalSourceRange if you are really into micro-optimizations and you have some outside knowledge that the TypeLocs you are dealing with will always include some source location. 4) Exposed a bug somewhere in the use of the normal clang type class API, where you have some type, you want to see if that type is some particular kind, you try a `dyn_cast` such as `dyn_cast<TypedefType>` and that fails because now you have an ElaboratedType which has a TypeDefType inside of it, which is what you wanted to match. Again, like 2), this would usually have been tested poorly with some simple tests with no qualifications, and would have been broken had there been any other kind of type sugar, be it an ElaboratedType or a TemplateSpecializationType or a SubstTemplateParmType. The usual fix here is to use `getAs` instead of `dyn_cast`, which will look deeper into the type. Or use `getAsAdjusted` when dealing with TypeLocs. For some reason the API is inconsistent there and on TypeLocs getAs behaves like a dyn_cast. 5) It could be a bug in this patch perhaps. Let me know if you need any help! Signed-off-by:Matheus Izvekov <mizvekov@gmail.com> Differential Revision: https://reviews.llvm.org/D112374
-
Phoebe Wang authored
This is an alternative to D129154. See discussions on https://discourse.llvm.org/t/fast-scalar-fsqrt-tuning-in-x86/63605 Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D129647
-
Fangrui Song authored
Rewrite a prebuilt file removed by D129728.
-
Craig Topper authored
Prefer to use SLLI instead of zext.w/zext.h in more cases. SLLI might be better for compression.
-
Huan Nguyen authored
We previously support split jump table, where some jump table entries target different fragments of same function. In this fix, we provide support for another type of intra-indirect transfer: landing pad. When C++ exception handling is used, compiler emits .gcc_except_table that describes the location of catch block (landing pad) for specific range that potentially invokes a throw(). Normally landing pads reside in the function, but with -fsplit-machine-functions, landing pads can be moved to another fragment. The intuition is, landing pads are rarely executed, so compiler can move them to .cold section. This update will mark all fragments that have landing pad to another fragment as non-simple, and later propagate non-simple to all related fragments. This update also includes one manual test case: split-landing-pad.s Reviewed By: Amir Differential Revision: https://reviews.llvm.org/D128561
-
Fangrui Song authored
It requires !zlib and isn't so useful.
-
Craig Topper authored
zext.w requires Zba not Zbb. The test was also wrong, but had the correct comment.
-
Alexander Timofeev authored
Fixing the idiv-licm.ll test failure Differential Revision: https://reviews.llvm.org/D129819
-
Arjun P authored
-
Fangrui Song authored
-
jeff authored
-
Fangrui Song authored
clang 14 removed -gz=zlib-gnu and ld.lld/llvm-objcopy removed .zdebug support recently. llvm-dwp currently doesn't support SHF_COMPRESSED. Add support and remove .zdebug support. Simplify llvm::object::Decompressor which has no .zdebug user now. While here, add tests for ELF32LE, ELF32BE, and ELF64BE. Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D129728
-
Craig Topper authored
If we have a variable shift amount and the demanded mask has leading zeros, we can propagate those leading zeros to not demand those bits from operand 0. This can allow zero_extend/sign_extend to become any_extend. This pattern can occur due to C integer promotion rules. This transform is already done by InstCombineSimplifyDemanded.cpp where sign_extend can be turned into zero_extend for example. Reviewed By: spatel, foad Differential Revision: https://reviews.llvm.org/D121833
-
Craig Topper authored
-
Shafik Yaghmour authored
AcceptedPublic Currently CXXMethodDecl::isMoveAssignmentOperator() does not look though type sugar and so if the parameter is a type alias it will not be able to detect that the method is a move assignment operator. This PR fixes that and adds a set of tests that covers that we correctly detect special member functions when defaulting or deleting them. This fixes: https://github.com/llvm/llvm-project/issues/56456 Differential Revision: https://reviews.llvm.org/D129591
-
Craig Topper authored
-
David Blaikie authored
-
Manish Gupta authored
* Adds verifiers for `nvgpu.ldmatrix` op * Adds tests to `mlir/test/Dialect/NVGPU/invalid.mlir` Reviewed By: ThomasRaoux Differential Revision: https://reviews.llvm.org/D129669
-
David Blaikie authored
The feature's been removed from most other tools in LLVM at this point.
-
owenca authored
When removing an r_brace that is the first token of an annotated line, if the line above ends with a line comment, clang-format generates invalid code by merging the tokens after the r_brace into the line comment. Fixes #56488. Differential Revision: https://reviews.llvm.org/D129742
-
Nikolas Klauser authored
-
Aart Bik authored
Fixed some new memory leaks after migration to new bufferization. One is expected, the other may need some more careful analysis. Reviewed By: jpienaar Differential Revision: https://reviews.llvm.org/D129805
-
Alexander Timofeev authored
Since the divergence-driven instruction selection has been enabled for AMDGPU, all the uniform instructions are expected to be selected to SALU form, except those not having one. VGPR to SGPR copies appear in MIR to connect values producers and consumers. This change implements an algorithm that evolves a reasonable tradeoff between the profit achieved from keeping the uniform instructions in SALU form and overhead introduced by the data transfer between the VGPRs and SGPRs. Reviewed By: rampitec Differential Revision: https://reviews.llvm.org/D128252
-
Tom Stellard authored
-
Tom Stellard authored
-fembed-bitcode will put bitcode into special sections within object files, but this is not meant to be used by LTO, so the gold plugin should ignore it. https://github.com/llvm/llvm-project/issues/47216 Reviewed By: tejohnson, MaskRay Differential Revision: https://reviews.llvm.org/D116995
-
Katherine Rasmussen authored
This reverts commit d2460d90. Reverting this commit because after pushing to main it caused unexpected test failures.
-
Siva Chandra authored
-
isuckatcs authored
Introducing the support for evaluating the constructor of every element in an array. The idea is to record the index of the current array member being constructed and create a loop during the analysis. We looping over the same CXXConstructExpr as many times as many elements the array has. Differential Revision: https://reviews.llvm.org/D127973
-
Petr Hosek authored
Try the shared library first, and if it doesn't exist fallback onto the static one. When the static library is requested, skip the shared library. Differential Revision: https://reviews.llvm.org/D129470
-
Alexandre Ganea authored
On my system the date formatting is a bit different from what the test used to support. I'm using: Windows 11 version 21H2, build 22000.795 using the English(Canada) region. ls from BusyBox 1.36 VS 2022 17.2.5 WinSDK 10.0.22000
-
Aart Bik authored
After recent bufferization improvement, this test started failing due to missed zero initialization. Reviewed By: jpienaar Differential Revision: https://reviews.llvm.org/D129800
-
Jez Ng authored
Reviewed By: #lld-macho, thakis Differential Revision: https://reviews.llvm.org/D129772
-
Katherine Rasmussen authored
Add the collective subroutine, co_sum, to the list of intrinsics. In accordance with 16.9.50 and 16.9.137, add a check for and an error if coindexed objects are being passed to certain arguments in co_sum and in move_alloc. Add a semantics test to check that this error is successfully caught in calls to move_alloc. Remove the XFAIL directive, update the ERROR directives and add both standard-conforming and non-standard conforming calls to the semantics test for co_sum. Reviewed By: jeanPerier Differential Revision: https://reviews.llvm.org/D114134
-