- Nov 19, 2020
-
-
Fangrui Song authored
MCExpr::evaluateAsRelocatableImpl : allow evaluation of non-VK_None MCSymbolRefExpr when MCAsmLayout is available https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=4acf8c78e659833be8be047ba2f8561386a11d4b (1994) introduced this behavior: if a fixup symbol is equated to an expression with an undefined symbol, convert the fixup to be against the target symbol. glibc relies on this behavior to perform assembly level indirection ``` asm("memcpy = __GI_memcpy"); // from sysdeps/generic/symbol-hacks.h ... // call memcpy@PLT // The relocation references __GI_memcpy in GNU as, but memcpy in MC (without the patch) memcpy (...); ``` (1) It complements `extern __typeof(memcpy) memcpy asm("__GI_memcpy");` The frontend asm label does not redirect synthesized memcpy in the middle-end. (See D88712 for details) (2) `asm("memcpy = __GI_memcpy");` is in every translation unit, but the memcpy declaration may not be visible in the translation unit where memcpy is synthesized. MC already redirects `memcpy = __GI_memcpy; call memcpy` but not `memcpy = __GI_memcpy; call memcpy@plt`. This patch fixes the latter by allowing MCExpr::evaluateAsRelocatableImpl to evaluate a non-VK_None MCSymbolRefExpr, which is only done after the layout is available. GNU as allows `memcpy = __GI_memcpy+1; call memcpy@PLT` which seems nonsensical, so we don't allow it. `MC/PowerPC/pr38945.s` `NUMBER = 0x6ffffff9; cmpwi 8,NUMBER@l` requires the `symbol@l` form in AsmMatcher, so evaluation needs to be deferred. This is the place whether future simplification may be possible. Note, if we suppress the VM_None evaluation when MCAsmLayout is nullptr, we may lose the `invalid reassignment of non-absolute variable` diagnostic (`ARM/thumb_set-diagnostics.s` and `MC/AsmParser/variables-invalid.s`). We know that this diagnostic is troublesome in some cases (https://github.com/ClangBuiltLinux/linux/issues/1008), so we can consider making simplification in the future. Reviewed By: jyknight Differential Revision: https://reviews.llvm.org/D88625
-
Arthur Eubanks authored
This matches the legacy AA infra and fixes llvm/test/ANalysis/TypeBasedAliasAnalysis/precedence.ll under NPM.
-
Kostya Kortchinsky authored
This modifies the tests so that they can be run on Fuchsia: - add the necessary includes for `set`/`vector` etc - do the few modifications required to use zxtest instead og gtest `backtrace.cpp` requires stacktrace support that Fuchsia doesn't have yet, and `enable_disable.cpp` currently uses `fork()` which Fuchsia doesn't support yet. I'll revisit this later. I chose to use `harness.h` to hold my "platform-specific" include and namespace, and using this header in tests rather than `gtest.h`, which I am open to change if someone would rather go another direction. Differential Revision: https://reviews.llvm.org/D91575
-
https://nuttx.apache.orgXiang Xiao authored
Since NuttX conform to POSIX standard, the code need to add is very simple. Differential Revision: https://reviews.llvm.org/D88718
-
Jamie Schmeiser authored
Revert "Revert "Revert "Expand existing loopsink testing to also test loopsinking using new pass manager and fix LICM bug.""" This reverts commit e2929296. This apparently causes a regression in compile time (ie, it slows down).
-
Joseph Huber authored
Summary: This patch adds basic support for priting the source location and names for the mapped variables. This patch does not support names for custom mappers. This is based on D89802. Reviewers: jdoerfert Differential Revision: https://reviews.llvm.org/D90172
-
Baptiste Saleil authored
In some situations, the compiler may insert an accumulator prime instruction and an accumulator unprime instruction with no use of that accumulator between the two. That's for example the case when we store an accumulator after assembling it or restoring it. This patch adds a peephole to remove these prime and unprime instructions. Differential Revision: https://reviews.llvm.org/D91386
-
Roman Lebedev authored
[NFC][Reassociate] Delay checking isLoadCombineCandidate() until after ShouldConvertOrWithNoCommonBitsToAdd() but before haveNoCommonBitsSet() This appears to improve -O3 compile-time performance somewhat: https://llvm-compile-time-tracker.com/compare.php?from=87369c626114ae17f4c637635c119e6de0856a9a&to=c04b8271e1609b0dfb20609b40844b0c4324517e&stat=instructions It doesn't look like delaying it until after haveNoCommonBitsSet() is better: https://llvm-compile-time-tracker.com/compare.php?from=c04b8271e1609b0dfb20609b40844b0c4324517e&to=b2943d450eaf41b5f76d2dc7350f0a279f64cd99&stat=instructions
-
Scott Linder authored
These tests implicitly depend on the target supporting generic pointers, so to prepare for testing them on GFX6 (which lacks FLAT) remove the dependency where possible. Reviewed By: rampitec Differential Revision: https://reviews.llvm.org/D91666
-
Nikita Popov authored
The GEP aliasing implementation currently has two pieces of code that solve two different subsets of the same basic problem: If you have GEPs with offsets 4*x + 0 and 4*y + 1 (assuming access size 1), then they do not alias regardless of whether x and y are the same. One implementation is in aliasSameBasePointerGEPs(), which looks at this in a limited structural way. It requires both GEP base pointers to be exactly the same, then (optionally) a number of equal indexes, then an unknown index, then a non-equal index into a struct. This set of limitations works, but it's overly restrictive and hides the core property we're trying to exploit. The second implementation is part of aliasGEP() itself and tries to find a common modulus in the scales, so it can then check that the constant offset doesn't overlap under modular arithmetic. The second implementation has the right idea of what the general problem is, but effectively only considers power of two factors in the scales (while aliasSameBasePointerGEPs also works with non-pow2 struct sizes.) What this patch does is to adjust the aliasGEP() implementation to instead find the largest common factor in all the scales (i.e. the GCD) and use that as the modulus. Differential Revision: https://reviews.llvm.org/D91027
-
Arthur Eubanks authored
The NPM inliner does not remove arbitrary unused internal functions, and that is not the point of this test.
-
Arthur Eubanks authored
Some used analyses are optional but were relied upon in tests, the legacy PM runs them in a different order than the NPM.
-
Jamie Schmeiser authored
Revert "Revert "Expand existing loopsink testing to also test loopsinking using new pass manager and fix LICM bug."" This reverts commit 562addba. Reverted change too quickly, the failing test cases passed on the next build. So reverting revert (to include the changes).
-
Florian Hahn authored
Make use of the more flexible constraint handling added in a8a79c90 to decompose add nuw/sub nuw.
-
Joseph Huber authored
Summary: This patch adds support for passing in the original delcaration name in the source file to the libomptarget runtime. This will allow the runtime to provide more intelligent debugging messages. This patch takes the original expression parsed from the OpenMP map / update clause and provides a textual representation if it was explicitly mapped, otherwise it takes the name of the variable declaration as a fallback. The information in passed to the runtime in a global array of strings that matches the existing ident_t source location strings using ";name;filename;column;row;;" Reviewers: jdoerfert Differential Revision: https://reviews.llvm.org/D89802
-
Nikita Popov authored
This is the same fix as 23aeadb8, just for CloneScopedAliasMetadata rather than PropagateCallSiteMetadata. In this case the previous outcome was incorrectly dropped metadata, as it was not part of the computed metadata map. The real change in the test is that the first load now retains metadata, the rest of the changes are due to changes in metadata numbering.
-
Nikita Popov authored
The metadata from the %c load gets dropped.
-
Jamie Schmeiser authored
Revert "Expand existing loopsink testing to also test loopsinking using new pass manager and fix LICM bug." This reverts commit d4ba28bd.
-
Wolfgang Pieb authored
This reverts commit 16eb853f. The test is failing on some Linux build bots. See the review for an example.
-
Andrew Gallagher authored
In some cases, when deserializing a `CXXMethodDecl` of a `CXXSpecializationTemplateDecl`, the call to `FunctionDecl::setPure()` happens before the `DefinitionData` member has been populated (which appears to happen lower down in a `mergeRedeclarable` call), causing a crash (https://reviews.llvm.org/P8228). This diff fixes this by deferring the `FunctionDecl::setPure()` till after the `DefinitionData` has been filled in. Reviewed By: lxfind Differential Revision: https://reviews.llvm.org/D86853
-
Nikita Popov authored
The VMap also contains a mapping from Argument => Instruction, where the instruction is part of the original function, not the inlined one. The code was assuming that all the instructions in the VMap were inlined. This was a pre-existing problem for the loop access metadata, but was extended to the more common noalias metadata by 27f647d1, thus causing miscompiles. There is a similar assumption inside CloneAliasScopeMetadata(), so that one likely needs to be fixed as well.
-
Nikita Popov authored
The test shows noalias metadata being incorrectly applied to the instruction producing the argument for the call.
-
Siva Chandra Reddy authored
-
Jamie Schmeiser authored
Summary: Expand existing loopsink testing to also test loopsinking using new pass manager. Enable memoryssa for loopsink with new pass manager. This combination exposed a bug that was previously fixed for loopsink without memoryssa. When sinking an instruction into a loop, the source block may not be part of the loop but still needs to be checked for pointer invalidation. This is the fix for bugzilla #39695 (PR 54659) expanded to also work with memoryssa. Respond to review comments. Enable Memory SSA in legacy Loop Sink pass under EnableMSSALoopDependency option control. Update tests accordingly. Respond to review comments. Add options controlling whether memoryssa is used for loop sink, defaulting to off. Expand testing based on these options. Respond to review comments. Properly indicated preserved analyses. Author: Jamie Schmeiser <schmeise@ca.ibm.com> Reviewed By: asbirlea (Alina Sbirlea) Differential Revision: https://reviews.llvm.org/D90249
-
Nikita Popov authored
As reported in https://reviews.llvm.org/D91383#2401825, this assert breaks external -aa-eval tests. We'll have to fix this case before re-enabling it.
-
Roland McGrath authored
If the containing allocator build uses -DGWP_ASAN_DEFAULT_ENABLED=false then the option will default to false. For e.g. Scudo, this is simpler and more efficient than using -DSCUDO_DEFAULT_OPTIONS=... to set gwp-asan options that have to be parsed from the string at startup. Reviewed By: hctim Differential Revision: https://reviews.llvm.org/D91463
-
ergawy authored
This commit does the renaming mentioned in the title in order to bring 'spv' dialect closer to the MLIR naming conventions. Reviewed By: antiagainst Differential Revision: https://reviews.llvm.org/D91715
-
Yitzhak Mandelbaum authored
Adds support for setting the `Rule` field. In the process, refactors the code that accesses that field and adds a constructor that doesn't require a rule argument. This feature is needed by checks that must set the rule *after* the check class is constructed. For example, any check that maintains state to be accessed from the rule needs this support. Since the object's fields are not initialized when the superclass constructor is called, they can't be (safely) captured by a rule passed to the existing constructor. This patch allows constructing the check superclass fully before setting the rule. As a driveby fix, removed the "optional" from the rule, since rules are just a set of cases, so empty rules are evident. Differential Revision: https://reviews.llvm.org/D91544
-
serge-sans-paille authored
This reverts commit c6ef6e16. Basically, publicly linked libraries have a different semantic than components, which link libraries privately. Differential Revision: https://reviews.llvm.org/D91461
-
Roman Lebedev authored
-
Utkarsh Saxena authored
This reverts commit 0016ab6f. Fix: Consume error from Expected<T>.
-
Simon Moll authored
This is specifically required by the upcoming ExpandVectorPredication pass (D78203) to recognize llvm.vp.* intrinsics that may ignore their predicates.
-
Nico Weber authored
This makes lld/MachO look more like lld/COFF and lld/ELF, as discussed in D91640.
-
Sebastian Neubauer authored
In some cases, the wrong amount of registers was reserved. Also enable more v3f16 tests. Differential Revision: https://reviews.llvm.org/D90847
-
Mark de Wever authored
This resolves LWG2503.
-
Utkarsh Saxena authored
This reverts commit 43243208.
-
Simon Pilgrim authored
Consistently use SUnit *SU (or drop the argname entirely if not used like the other HazardRecognizer methods). Silences cppcheck warnings.
-
Simon Pilgrim authored
We're just performing a null pointer check, we don't need the actual variable.
-
Abhina Sreeskantharajan authored
This patch creates a SystemZ folder in clang/test/CodeGen to contain systemz-related lit tests. Reviewed By: muiez Differential Revision: https://reviews.llvm.org/D91628
-
dreachem authored
Adding features in OpenMP 5.1 specification, as documented in feature change history, to the 5.1 table. I alphabetized the rows of the table according to the category. For deprecating master construct, I just used 'other' as the category. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D90802
-