- Apr 17, 2020
-
-
Stephen Neuendorffer authored
Libraries declared as target_link_libraries() do not also need to be declared as dependencies using add_dependencies(). Differential Revision: https://reviews.llvm.org/D78320
-
Florian Hahn authored
-
Benjamin Kramer authored
Following 38ca7b11
-
Alex Zinenko authored
MLIR supports operations with resizable operand lists, but this property must be indicated during the construction of such operations. It can be done programmatically by calling a function on OperationState. Introduce an ODS-internal trait `ResizableOperandList` to indicate such operations are use it when generating the bodies of various `build` functions as well as the `parse` function when the declarative assembly format is used. Differential Revision: https://reviews.llvm.org/D78292
-
Louis Dionne authored
These substitutions are strongly tied to the operation of the test format, so it makes sense to have them defined by the test format instead of the Lit configuration. They should be defined regardless of which configuration is in use.
-
Sanjay Patel authored
-
David Green authored
-
Jonas Devlieghere authored
The recent change in the API macros revealed that we were not printing the pointer address for a bunch of methods, but rather the address of the pointer. It's something I had already noticed while looking at some reproducer traces, but hadn't made it to the top of my list yet. This fixes the issue by providing a more specific overload.
-
Daniel S Fava authored
Fixes: 1. Setting the number of entries in a thread's clock to max between the thread and the SyncClock the thread is acquiring from 2. Setting last_acquire_ Unit- and stress-test for releaseStoreAcquire added to tests/unit/tsan_clock_test.cpp
-
Stephen Neuendorffer authored
There were some unused CMakeFiles for Affine/IR and Affine/EDSC. This change builds separate MLIRAffineOps and MLIRAffineEDSC libraries using those CMakeFiles. This combination replaces the old MLIRAffine library. Differential Revision: https://reviews.llvm.org/D78317
-
Davide Italiano authored
-
Davide Italiano authored
Let's see if this sticks on the bots.
-
David Green authored
-
Chris Lattner authored
Summary: PreprocessorTracker is the last user of the old StringPool class, which isn't super loved and isn't a great improvement over a plan StringSet. Once this goes in we can remove StringPool entirely. This is as discussed on cfe-dev. Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D78273
-
Dan Albert authored
Marked unsupported for C++03 and C++11 since this test uses alias declarations, and at least one C++03 bot was failing with -Wc++11-extensions. Change-Id: I8c3a579edd7eb83e0bc74e85d116b68f22400161
-
Joel E. Denny authored
Without this patch, `--dump-input` annotations on a single input line are sorted by the associated directive's check-file line. That seemed fine because that's often identical to the order in which FileCheck looks for matches for those directives. The first problem is that an `--implicit-check-not` pattern has no check-file line. The logical equivalent is sorting in command-line order, but that's not implemented. The second problem is that, unlike a directive, an `--implicit-check-not` pattern applies at many points, between many different pairs of directives. However, sorting in command-line order gathers all its associated diagnostics together at one point in an input line's list of annotations. In general, it seems to be easier to understand FileCheck's logic when annotations on a single input line are sorted in the order FileCheck produced the associated diagnostics, so this patch makes that change. As documented in the patch, the annotation sort order is also especially relevant to `CHECK-LABEL`, `CHECK-NOT`, and `CHECK-DAG`, so this patch updates or extends tests to check the sort makes sense for them. (However, the sort for `CHECK-DAG` annotations should not actually be altered by this patch.) Reviewed By: thopre Differential Revision: https://reviews.llvm.org/D77607
-
Joel E. Denny authored
Currently, `--dump-input` implies that all `--implicit-check-not` patterns appear on line 1 by printing annotations like: ``` 1: foo bar baz not:1 !~~ error: no match expected ``` This patch changes that to: ``` 1: foo bar baz not:imp1 !~~ error: no match expected ``` `imp1` indicates the first `--implicit-check-not` pattern. Reviewed By: thopre Differential Revision: https://reviews.llvm.org/D77605 -
bd1976llvm authored
Ensure that symbols explicitly* assigned a section name are placed into a section with a compatible entry size. This is done by creating multiple sections with the same name** if incompatible symbols are explicitly given the name of an incompatible section, whilst: - Avoiding using uniqued sections where possible (for readability and to maximize compatibly with assemblers). - Creating as few SHF_MERGE sections as possible (for efficiency). Given that each symbol is assigned to a section in a single pass, we must decide which section each symbol is assigned to without seeing the properties of all symbols. A stable and easy to understand assignment is desirable. The following rules facilitate this: The "generic" section for a given section name will be mergeable if the name is a mergeable "default" section name (such as .debug_str), a mergeable "implicit" section name (such as .rodata.str2.2), or MC has already created a mergeable "generic" section for the given section name (e.g. in response to a section directive in inline assembly). Otherwise, the "generic" section for a given name is non-mergeable; and, non-mergeable symbols are assigned to the "generic" section, while mergeable symbols are assigned to uniqued sections. Terminology: "default" sections are those always created by MC initially, e.g. .text or .debug_str. "implicit" sections are those created normally by MC in response to the symbols that it encounters, i.e. in the absence of an explicit section name assignment on the symbol, e.g. a function foo might be placed into a .text.foo section. "generic" sections are those that are referred to when a unique section ID is not supplied, e.g. if there are multiple unique .bob sections then ".quad .bob" will reference the generic .bob section. Typically, the generic section is just the first section of a given name to be created. Default sections are always generic. * Typically, section names might be explicitly assigned in source code using a language extension e.g. a section attribute: _attribute_ ((section ("section-name"))) - https://clang.llvm.org/docs/AttributeReference.html ** I refer to such sections as unique/uniqued sections. In assembly the ", unique," assembly syntax is used to express such sections. Fixes https://bugs.llvm.org/show_bug.cgi?id=43457. See https://reviews.llvm.org/D68101 for previous discussions leading to this patch. Some minor fixes were required to LLVM's tests, for tests had been using the old behavior - which allowed for explicitly assigning globals with incompatible entry sizes to a section. This fix relies on the ",unique ," assembly feature. This feature is not available until bintuils version 2.35 (https://sourceware.org/bugzilla/show_bug.cgi?id=25380). If the integrated assembler is not being used then we avoid using this feature for compatibility and instead try to place mergeable symbols into non-mergeable sections or issue an error otherwise. Differential Revision: https://reviews.llvm.org/D72194 -
Amy Huang authored
Summary: Original description (https://reviews.llvm/org/D69924) Without this change, when a nested tag type of any kind (enum, class, struct, union) is used as a variable type, it is emitted without emitting the parent type. In CodeView, parent types point to their inner types, and inner types do not point back to their parents. We already walk over all of the parent scopes to build the fully qualified name. This change simply requests their type indices as we go along to enusre they are all emitted. Now, while walking over the parent scopes, add the types to DeferredCompleteTypes, since they might already be in the process of being emitted. Fixes PR43905 Reviewers: rnk, amccarth Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D78249
-
Louis Dionne authored
-
Jaydeep Chauhan authored
Summary: AArch64 test case llvm/test/CodeGen/AArch64/branch-target-enforcement.mir is checking for invalid DBG_VALUE instruction with one operand(`DBG_VALUE $lr`). And this DBG_VALUE instruction is echoed from test case it self only. Correct format of DBG_VALUE is given in below link: https://llvm.org/docs/SourceLevelDebugging.html#variable-locations-in-instruction-selection-and-mir Reviewers: dsanders, eli.friedman, jmorse, vsk Reviewed By: dsanders Subscribers: kristof.beyls, danielkiss, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D78309
-
George Burgess IV authored
In cases where we have multiple decls of an inline builtin, we may need to go hunting for the one with a definition when setting function attributes. An additional test-case was provided on https://github.com/ClangBuiltLinux/linux/issues/979
-
Cameron McInally authored
Add DestructiveBinaryImm SQSHLU patterns and tests. These patterns allow the SQSHLU instruction to match with a MOVPRFX. Differential Revision: https://reviews.llvm.org/D76728
-
Craig Topper authored
The uses of CallSite were removed in previous patches.
-
Craig Topper authored
While there convert iterator loops to range-based. Differential Revision: https://reviews.llvm.org/D78275
-
LLVM GN Syncbot authored
-
Stefan Pintilie authored
This patch adds PC Relative support for global values that are known at link time. If a global value requires access through the global offset table (GOT) it is not covered in this patch. Differential Revision: https://reviews.llvm.org/D75280
-
Daniel Sanders authored
Summary: This verifier tries to ensure that DebugLoc's don't just disappear as we transform the MIR. It observes the instructions created, erased, and changed and at checkpoints chosen by the client algorithm verifies the locations affected by those changes. In particular, it verifies that: * Every DebugLoc for an erased/changing instruction is still present on at least one new/changed instruction * Failing that, that there is a line-0 location in the new/changed instructions. It's not possible to confirm which locations were merged so it conservatively assumes all unaccounted for locations are accounted for by any line-0 location to avoid false positives. If that fails, it prints the lost locations in the debug output along with the instructions that should have accounted for them. In theory, this is usable by the legalizer, combiner, selector and any other pass that performs incremental changes to the MIR. However, it has so far only really been tested on the legalizer (not including the artifact combiner) where it has caught lots of lost locations, particularly in Custom legalizations. There's only one example here as my initial testing was on an out-of-tree target and I haven't done a pass over the in-tree targets yet. Depends on D77575, D77446 Reviewers: bogner, aprantl, vsk Subscribers: jvesely, nhaehnle, mgorny, rovka, hiraditya, volkan, kerbowa, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D77576
-
Daniel Sanders authored
Summary: This will allow us to fix the issue where the lost locations verifier causes CodeGen changes on lost locations because it falls back on DAGISel Reviewers: qcolombet, bogner, aprantl, vsk, paquette Subscribers: rovka, hiraditya, volkan, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D78261
-
Fangrui Song authored
GNU as emits SHT_PROGBITS .eh_frame by default for .cfi_* directives. We follow x86-64 psABI and use SHT_X86_64_UNWIND for .eh_frame Don't error for SHT_PROGBITS .eh_frame on x86-64. This keeps compatibility with `.section .eh_frame,"a",@progbits` in existing assembly files. See https://groups.google.com/d/msg/x86-64-abi/7sr4E6THl3g/zUU2UPHOAQAJ for more discussions. Reviewed By: joerg Differential Revision: https://reviews.llvm.org/D76151
-
Stanislav Mekhanoshin authored
These are needed as a counterpart for VGPR subregs even though there are no scalar instructions which can operate 16 bit values. When we are materializing a constant that is done into an SGPR and that SGPR may/will be copied into a 16 bit VGPR subreg. Such copy is illegal. There are also similar problems if a source operand of a 16 bit VALU instruction is an SGPR. In addition we need to get a register with a lo16 subregister of an SGPR RC during selection and this fails as well. All of that makes me believe we need these subregisters as a syntactic glue. Differential Revision: https://reviews.llvm.org/D78250
-
Jonas Devlieghere authored
Expand on the structure of the LLDB test suite. So far this information has been mostly "tribal knowledge". By writing it down I hope to make it easier to understand our test suite for anyone that's new to the project.
-
Anna Welker authored
Fix for the address optimization for gathers and scatters which would in some complex cases push out instructions not to the vector loop preheader, but to other locations as well which lead to a scrambled order and the compilation failing. This patch ensures that said instructions are always pushed to the end of the vector loop preheader. Differential Revision: https://reviews.llvm.org/D78293
-
Jonas Devlieghere authored
Redefine the LLDB_RECORD macros in terms of a common uber-macro to reduce code duplication across them. Differential revision: https://reviews.llvm.org/D78141
-
Roman Lebedev authored
Summary: This roughly halves time spent in that pass, while unsurprisingly significantly reducing total memory usage. This makes sense because most functions won't use any openmp functions.. old ``` 0.2329 ( 0.5%) 0.0409 ( 0.9%) 0.2738 ( 0.5%) 0.2736 ( 0.5%) OpenMP specific optimizations ``` ``` total runtime: 63.32s. bytes allocated in total (ignoring deallocations): 8.34GB (131.70MB/s) calls to allocation functions: 14526259 (229410/s) temporary memory allocations: 3335760 (52680/s) peak heap memory consumption: 324.36MB peak RSS (including heaptrack overhead): 5.39GB total memory leaked: 289.93MB ``` new ``` 0.1457 ( 0.3%) 0.0276 ( 0.6%) 0.1732 ( 0.3%) 0.1731 ( 0.3%) OpenMP specific optimizations ``` ``` total runtime: 55.01s. bytes allocated in total (ignoring deallocations): 6.70GB (121.89MB/s) calls to allocation functions: 14268205 (259398/s) temporary memory allocations: 3225355 (58637/s) peak heap memory consumption: 324.09MB peak RSS (including heaptrack overhead): 5.39GB total memory leaked: 289.87MB ``` diff ``` total runtime: -8.31s. bytes allocated in total (ignoring deallocations): -1.63GB (196.58MB/s) calls to allocation functions: -258054 (31034/s) temporary memory allocations: -110405 (13277/s) peak heap memory consumption: -262.36KB peak RSS (including heaptrack overhead): 0B total memory leaked: -61.45KB ``` Reviewers: jdoerfert, hfinkel Reviewed By: jdoerfert Subscribers: yaxunl, hiraditya, guansong, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D78299
-
Louis Dionne authored
We don't support GCC's older than 5.x anymore.
-
Kang Zhang authored
Summary: When doing the conversion: MachineInst -> MCInst, we should ignore the implicit operands, it will expose more opportunity for InstiAlias. Reviewed By: steven.zhang Differential Revision: https://reviews.llvm.org/D77118
-
Simon Pilgrim authored
-
Simon Pilgrim authored
Remove unused FeatureBitset forward declaration
-
Simon Pilgrim authored
-