- Jun 02, 2020
-
-
Igor Kudrin authored
Differential Revision: https://reviews.llvm.org/D80523
-
Igor Kudrin authored
Differential Revision: https://reviews.llvm.org/D80523
-
Igor Kudrin authored
Differential Revision: https://reviews.llvm.org/D80523
-
Alex Zinenko authored
The lower-to-affine-loops pass in chapters 5-7 of the Toy tutorial has been creating affine loops, erasing their terminator and creating it anew using a PatternRewriter instance to work around the fact that implicit terminators were created without notifying the rewriter. Now that has been fixed in 3ccf4a5b, remove the code erasing and re-creating the terminators and rely on the default ones.
-
Simon Pilgrim authored
-
Alex Zinenko authored
This fixes several post-commit nits from D79688 and D80135, namely typos, debug output and control flow inversion.
-
Simon Pilgrim authored
-
Simon Pilgrim authored
-
Florian Hahn authored
-
Florian Hahn authored
LV currently only supports power of 2 vectorization factors, which has been made explicit with the assertion added in 84045054. However, if the widest type is not a power-of-2 the computed MaxVF won't be a power-of-2 either. This patch updates computeFeasibleMaxVF to ensure the returned value is a power-of-2 by rounding down to the nearest power-of-2. Fixes PR46139. Reviewers: Ayal, gilr, rengolin Reviewed By: Ayal Differential Revision: https://reviews.llvm.org/D80870
-
Ehsan Toosi authored
Add BufferAssignmentCallOpConverter as a pattern rewriter for Buffer Placement. It matches the signature of the caller operation with the callee after rewriting the callee with FunctionAndBlockSignatureConverter. Differential Revision: https://reviews.llvm.org/D80785
-
Denis Antrushin authored
gc.relocate intrinsic is special in that its second and third operands are not real values, but indices into relocate's parent statepoint list of GC pointers. To be CSE'd, they need special handling in `isEqual()` and `getHashCode()`. Reviewed By: reames Differential Revision: https://reviews.llvm.org/D80445
-
Muhammad Omair Javaid authored
This patch marks TestCreateDuringInstructionStep.py as flakey for Linux. This is failing randomly on arm/aarch64. I will monitor buildbot and skip it if it fails again.
-
Simon Pilgrim authored
-
Haojian Wu authored
Summary: The Initializer of a InitListExpr can be reset to null, which leads to nullptr-acces crashes. Reviewers: sammccall Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D80980
-
Simon Atanasyan authored
MIPS 64-bit ABI does not provide special PC-relative relocation like R_MIPS_PC32 in 32-bit case. But we can use a "chain of relocation" defined by N64 ABIs. In that case one relocation record might contain up to three relocations which applied sequentially. Width of a final relocation mask applied to the result of relocation depends on the last relocation in the chain. In case of 64-bit PC-relative relocation we need the following chain: `R_MIPS_PC32 | R_MIPS_64`. The first relocation calculates an offset, but does not truncate the result. The second relocation just apply calculated result as a 64-bit value. The 64-bit PC-relative relocation might be useful in generation of `.eh_frame` sections to escape passing `-Wl,-z,notext` flags to linker. Differential Revision: https://reviews.llvm.org/D80390
-
Dmitri Gribenko authored
Reviewers: hlopko, eduucaldas Reviewed By: hlopko, eduucaldas Subscribers: gribozavr2, mgorny, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D80822
-
Kazushi (Jam) Marukawa authored
Summary: Support I32/F32 registers in assembler parser and add regression tests of LD/ST instructions. Differential Revision: https://reviews.llvm.org/D80777
-
Clement Courbet authored
Summary: Using a .data() member on a StringRef was discarding the StringRef size, breaking llvm-exegesis on machines with counter sums (e.g. Zen2). Reviewers: oontvoo Subscribers: mstojanovic, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D80982
-
Sam Parker authored
Add code size tests runs for memory ops for both architectures.
-
Joachim Protze authored
The OpenMP spec has the task-fulfill event for a call to omp_fulfill_event. If the task did not yet finish execution, ompt_task_early_fulfill is used, otherwise ompt_task_late_fulfill. If a task does not complete, when the execution finishes (i.e., the task goes in detached mode), ompt_task_detach instead of ompt_task_complete must be used, when the next task is scheduled. A test for both cases is included, which only work with clang-11+ Reviewed By: hbae Differential revision: https://reviews.llvm.org/D80843
-
Sriraman Tallam authored
This patch adds clang options: -fbasic-block-sections={all,<filename>,labels,none} and -funique-basic-block-section-names. LLVM Support for basic block sections is already enabled. + -fbasic-block-sections={all, <file>, labels, none} : Enables/Disables basic block sections for all or a subset of basic blocks. "labels" only enables basic block symbols. + -funique-basic-block-section-names: Enables unique section names for basic block sections, disabled by default. Differential Revision: https://reviews.llvm.org/D68049 -
Denis Antrushin authored
Do not spill UNDEF GC values. Instead, replace corresponding gc.relocate intrinsic with an (arbitrary, but recognizable) constant. Reviewed By: reames Differential Revision: https://reviews.llvm.org/D80714
-
Dominik Montada authored
Summary: Combine unmerge(trunc) to enable other merge combines. Without this combine, the scalar unmerge(trunc(merge)) pattern cannot be combined and easily lead to hard-to-legalize merge/unmerge artifacts. Reviewed By: arsenm Tags: #llvm Differential Revision: https://reviews.llvm.org/D79567
-
Dominik Montada authored
In preparation of D79567, move arsenm's vector unmerge(trunc) combine to a new function `tryFoldUnmergeCast`
-
Xing GUO authored
Summary: This patch addresses comments in [D80722](https://reviews.llvm.org/D80722#inline-742353) Reviewers: grimar, jhenderson Reviewed By: grimar, jhenderson Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D80861
-
MaheshRavishankar authored
Keeping in the affine.for to gpu.launch conversions, which should probably be the affine.parallel to gpu.launch conversion as well. Differential Revision: https://reviews.llvm.org/D80747
-
Fangrui Song authored
[ELF] --wrap: don't error `undefined reference to __real_foo` (--no-allow-shlib-undefined) if foo is a wrapped definition This is a regression after D51283. Also, export `foo` if `__real_foo` is referenced by a shared object.
-
Yevgeny Rouban authored
When fixing probability of unreachable edges in BranchProbabilityInfo::calcMetadataWeights() proportionally distribute remainder probability over the reachable edges. The old implementation distributes the remainder probability evenly. See examples in the fixed tests. Reviewers: yamauchi, ebrevnov Tags: #llvm Differential Revision: https://reviews.llvm.org/D80611
-
Richard Smith authored
These cases all follow the same pattern: struct A { friend class X; //... class X {}; }; But 'friend class X;' injects 'X' into the surrounding namespace scope, rather than introducing a class member. So the second 'class X {}' is a completely different type, which changes the meaning of the earlier name 'X' from '::X' to 'A::X'. Additionally, the friend declaration is pointless -- members of a class don't need to be befriended to be able to access private members. -
Craig Topper authored
[X86] Fix a few recursivelyDeleteUnusedNodes calls that were trying to delete nodes before their user was really gone. We looked through a truncate to get to the load. So we should be deleting the truncate first. There is a check that the node is really unused before deleting so this didn't cause a functional issue.
-
Yevgeny Rouban authored
-
Kostya Serebryany authored
-
Kostya Serebryany authored
add debug code to chase down a rare crash in asan/lsan https://github.com/google/sanitizers/issues/1193 Summary: add debug code to chase down a rare crash in asan/lsan https://github.com/google/sanitizers/issues/1193 Reviewers: vitalybuka Subscribers: #sanitizers, llvm-commits Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D80967
-
John McCall authored
Canonicalize on storing FP options in LangOptions instead of redundantly in CodeGenOptions. Incorporate -ffast-math directly into the values of those LangOptions rather than considering it separately when building FPOptions. Build IR attributes from those options rather than a mix of sources. We should really simplify the driver/cc1 interaction here and have the driver pass down options that cc1 directly honors. That can happen in a follow-up, though. Patch by Michele Scandale! https://reviews.llvm.org/D80315
-
Reid Kleckner authored
First, do not reserve numSections in the Chunks array. In cases where there are many non-prevailing sections, this will overallocate memory which will not be used. Second, free the memory for sparseChunks after initializeSymbols. After that, it is never used. This saves 50MB of 627MB for my use case without affecting performance.
-
Adrian Prantl authored
This fixes an unhandled signed integer overflow in AddWithCarry() by using the llvm::checkedAdd() function. Thats to Vedant Kumar for the suggestion! <rdar://problem/60926115> Differential Revision: https://reviews.llvm.org/D80955
-
Vedant Kumar authored
-
Vedant Kumar authored
Summary: Sketch the outline for a new document that explains how to update debug info in various kinds of code transformations. Some of the guidelines that belong in HowToUpdateDebugInfo.rst were in SourceLevelDebugging.rst already under the debugify section. It seems like the distinction between the two docs ought to be that the former is more prescriptive, while the latter is more descriptive. To that end I've consolidated the "how to update debug info" guidelines which were in SourceLevelDebugging.rst into the new doc, along with the information about using "debugify" to test transformations. Since we've added a mir-debugify pass, I've described that as well. Reviewers: aprantl, jmorse, chrisjackson, dsanders Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D80052
-
Amara Emerson authored
The concept of G_GLOBAL_VALUE is nice and simple, but always using it as the representation for global var addressing until selection time creates some problems in optimizing accesses in certain code/relocation models. The problem comes from trying to optimize adrp -> add -> load/store sequences in the most common "small" code model. These accesses can be optimized into an adrp -> load with the add offset being folded into the load's immediate field. If we try to keep all global var references as a single generic instruction then by the time we get to the complex operand trying to match these, we end up generating an adrp at the point of use. The real issue here is that we don't have any form of CSE during selection, so the code size will bloat from many redundant adrp's. This patch custom legalizes small code mode non-GOT G_GLOBALs into target ADRP and a new "target specific generic opcode" G_ADD_LOW. We also teach the localizer to localize these instructions via the custom hook that was added recently. Finally, the complex pattern for indexed loads/stores is extended to try to fold these G_ADD_LOW instructions into the load immediate. On -O0 CTMark, we see a 0.8% geomean code size improvement. We should also see some minor performance improvements too. Differential Revision: https://reviews.llvm.org/D78465
-