- Apr 28, 2020
-
-
Eric Schweitz authored
Summary: Reviewers: DavidTruby, sscalpone, jeanPerier Subscribers: mgorny, aartbik, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D78835
-
Nick Desaulniers authored
Summary: While looking into issues with IfConverter, I noticed that X86InstrInfo::isUnpredicatedTerminator matched its overriden implementation in TargetInstrInfo::isUnpredicatedTerminator. Reviewers: craig.topper, hfinkel, MaskRay, echristo Reviewed By: MaskRay, echristo Subscribers: hiraditya, llvm-commits, srhines Tags: #llvm Differential Revision: https://reviews.llvm.org/D62749
-
River Riddle authored
This fixes an iteration invalidation bug when the map grows beyond capacity and the iterator for the location to translate becomes invalid.
-
Jonas Devlieghere authored
We were passing the AppleObjCSection instead of the AddrSection. Maybe the API changed and this remained unnoticed because the types are the same, or maybe it's just a typo.
-
Jonas Devlieghere authored
Print the DW_AT_ranges offset as part of the verifier error, like we do for the DW_AT_stmt_list offset.
-
Christopher Tetreault authored
Summary: * Upgrade some usages of VectorType to use ScalableVectorType Reviewers: efriedma, david-arm, fpetrogalli, kmclaughlin Reviewed By: efriedma Subscribers: tschuett, rkruppe, psnobl, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D78842
-
Arthur Eubanks authored
Add llvm.call.preallocated.{setup,arg} instrinsics. Add "preallocated" operand bundle which takes a token produced by llvm.call.preallocated.setup. Add "preallocated" parameter attribute, which is like byval but without the copy. Verifier changes for these IR constructs. See https://github.com/rnk/llvm-project/blob/call-setup-docs/llvm/docs/CallSetup.md Subscribers: hiraditya, jdoerfert, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D74651 -
Craig Topper authored
-
Christopher Tetreault authored
Summary: Add overloads of get to FixedVectorType and ScalableVectorType that mirror VectorType::get(Type *Ty, VectorType *VTy) that take and return derived vector types Reviewers: efriedma, c-rhodes, david-arm, fpetrogalli Reviewed By: david-arm Subscribers: tschuett, rkruppe, psnobl, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D78841
-
Phoenix Meadowlark authored
- Adds a folder for integer division by one with the `divi_signed` and `divi_unsigned` ops. - Creates tests for scalar and tensor versions of these ops. - Modifies the test in `parallel-loop-collapsing.mlir` so that it doesn't assume division by one will be in the output. Differential Revision: https://reviews.llvm.org/D78518
-
Alexander Shaposhnikov authored
Until recently yaml2obj didn't properly support relocations for MachO. This behavior resulted in binaries having invalid relocations. In this diff we adjust the existing tests as follows: for the tests which don't actually look at any relocations they are removed, for the tests which essentially depend on relocations they are fixed. Test plan: make check-all Differential revision: https://reviews.llvm.org/D78898
-
Sean Silva authored
Differential Revision: https://reviews.llvm.org/D78966
-
Eric Christopher authored
-
Zola Bridges authored
* Fix the code block disappearance problem by adding a new line * Fix the typo where I forgot a space Reviewed By: ldionne Differential Revision: https://reviews.llvm.org/D78953
-
LemonBoy authored
The code assumed that zero-extending the integer constant to the designated alloc size would be fine even for BE targets, but that's not the case as that pulls in zeros from the MSB side while we actually expect the padding zeros to go after the LSB. I've changed the codepath handling the constant integers to use the store size for both small(er than u64) and big constants and then add zero padding right after that. Differential Revision: https://reviews.llvm.org/D78011
-
Sanjay Patel authored
-
Craig Topper authored
This updates v4i16->v4i8 with sse2 to match v8i16->v8i8. Update v2i16->v2i8 and v4i16->v4i8 with sse 4.1 to match v8i16->v8i8.
-
Nick Desaulniers authored
Summary: Looks like g++ < 7.1 has a bug resolving calls to member functions without `this->` in lamdas with `auto` types. It looks like multiple build bots are using g++-5. https://stackoverflow.com/questions/32097759/calling-this-member-function-from-generic-lambda-clang-vs-gcc https://godbolt.org/z/MiaRt- Reviewers: MaskRay, efriedma, jyknight, craig.topper, rsmith Reviewed By: rsmith Subscribers: hiraditya, llvm-commits, srhines Tags: #llvm Differential Revision: https://reviews.llvm.org/D78962
-
Michael Liao authored
-
Andrew Browne authored
SmallVector currently uses 32bit integers for size and capacity to reduce sizeof(SmallVector). This limits the number of elements to UINT32_MAX. For a SmallVector<char>, this limits the SmallVector size to only 4GB. Buffering bitcode output uses SmallVector<char>, but needs >4GB output. This changes SmallVector size and capacity to conditionally use word-size integers if the element type is small (<4 bytes). For larger elements types, the vector size can reach ~16GB with 32bit size. Making this conditional on the element type provides both the smaller sizeof(SmallVector) for larger types which are unlikely to grow so large, and supports larger capacities for smaller element types. This recommit fixes the same template being instantiated twice on platforms where uintptr_t is the same as uint32_t.
-
Han Zhu authored
When LIBCLANG_BUILD_STATIC=ON and LLVM_ENABLE_PIC=ON, PIC version of libclang.a and libclang.so are built as expected. However libclang.a is not installed. Looking at the macro llvm_add_library(), when both SHARED and STATIC are set, it renames the static library to ${name}_static and then adds it to targets. But when add_clang_library() calls install, it only checks if ${name} is in targets. To work around this issue, loop through both ${name} and ${name}_static and install both of them if they're in targets. This is still correct if only shared or static library is built. In those cases, only ${name} is added to targets and cmake install will generate the right install script depending on the library's type. Test Plan: cmake with LIBCLANG_BUILD_STATIC=ON and then ninja install, from master and this diff. Compare the result directory trees. Confirm that only difference is the added libclang.a. Differential Revision: https://reviews.llvm.org/D78534 -
Jez Ng authored
Summary: Add logic for emitting the correct set of load commands and segments when `-dylib` is passed. I haven't gotten to implementing a real export trie yet, so we can only emit a single symbol, but it's enough to replace the YAML test files introduced in D76252. Differential Revision: https://reviews.llvm.org/D76908
-
Jez Ng authored
This diff implements basic support for writing a symbol table. - Attributes are loosely supported for extern symbols and not at all for other types Immediate future work will involve implementing section merging. Initial version by Kellie Medlin <kelliem@fb.com> Differential Revision: https://reviews.llvm.org/D76742
-
Sander de Smalen authored
The svlen builtins return the number of elements in a vector and are implemented using `llvm.vscale`. Reviewed By: efriedma Differential Revision: https://reviews.llvm.org/D78755
-
Aaron Puchert authored
We allow arbitrary names for capabilities now, and the name didn't play a role for this anyway.
-
Med Ismail Bennani authored
This patch improves data formatting for CoreFoundation containers: CFDictionary and CFSet. These data formatters make the containers and their children appear in Xcode's variables view (and on the command line) without having to expand the data structure. Previous implementation only supported showing the container's element count. ``` (lldb) frame var dict (__NSCFDictionary *) dict = 0x00000001004062b0 2 key/value pairs (lldb) frame var set (__NSCFSet *) set = 0x0000000100406330 2 elements ``` Now the variable can be dereferenced to dispaly the container's children: ``` (lldb) frame var *dict (__NSCFDictionary) *dict = { [0] = { key = 0x0000000100004050 @"123" value = 0x0000000100004090 @"456" } [1] = { key = 0x0000000100004030 @"abc" value = 0x0000000100004070 @"def" } } (lldb) frame var *set (__NSCFSet) *set = { [0] = 0x0000000100004050 @"123" [1] = 0x0000000100004030 @"abc" } ``` rdar://39882287 Differential Revision: https://reviews.llvm.org/D78396 Signed-off-by:Med Ismail Bennani <medismail.bennani@gmail.com>
-
Casey Carter authored
Defining the nested types `reference` and `iterator_concept` of `reverse_iterator<I>` necessarily requires `I` to be complete in C++20. These tests that verify that `std::map<int, X>::reverse_iterator` can be instantiated when `X` is incomplete are going to have a bad time. Differential Revision: https://reviews.llvm.org/D78944
-
River Riddle authored
This revision adds support for propagating constants across symbol-based callgraph edges. It uses the existing Call/CallableOpInterfaces to detect the dataflow edges, and propagates constants through arguments and out of returns. Differential Revision: https://reviews.llvm.org/D78592
-
River Riddle authored
This provides a much cleaner interface into Symbols, and allows for users to start injecting op-specific information. For example, derived op can now inject when a symbol can be discarded if use_empty. This would let us drop unused external functions, which generally have public visibility. This revision also adds a new `extraTraitClassDeclaration` field to ODS OpInterface to allow for injecting declarations into the trait class that gets attached to the operations. Differential Revision: https://reviews.llvm.org/D78522
-
Sanjay Patel authored
We may want to identify sequences that are not reductions, but still qualify as load-combines in the back-end, so make most of the body a helper function.
-
Jez Ng authored
Previously, the special segments `__PAGEZERO` and `__LINKEDIT` were implemented as special LoadCommands. This diff implements them using special sections instead which have an `isHidden()` attribute. We do not emit section headers for hidden sections, but we use their addresses and file offsets to determine that of their containing segments. In addition to allowing us to share more segment-related code, this refactor is also important for the next step of emitting dylibs: 1) dylibs don't have segments like __PAGEZERO, so we need an easy way of omitting them w/o messing up segment indices 2) Unlike the kernel, which is happy to run an executable with out-of-order segments, dyld requires dylibs to have their segment load commands arranged in increasing address order. The refactor makes it easier to implement sorting of sections and segments. Differential Revision: https://reviews.llvm.org/D76839
-
Victor Huang authored
"unskipableSimplifyCode()" was added to handle unsafe BL8_NOTOC instruction when TOC was not completely removed. The function is not needed after confirming TOC pointer is not used in a function that uses PC-Relative addressing. Differential Revision: https://reviews.llvm.org/D78517
-
Sanjay Patel authored
-
Alexander Belyaev authored
Many ops with this trait have `getBody()` and `getBodyBuilder()` methods defined in `extraClassDeclaration` in tablegen. `getBody()` implementation is the same accross all these ops, but `getBodyBuilder()` can return builders with varying insertion points set. In this PR, `getBody()` is moved into `SingleImplicitBlockTerminator` struct and `getBodyBuilder()` is replaced with `OpBuilder::atBlock(End|Terminator)(op.getBody);`. Differential Revision: https://reviews.llvm.org/D78864
-
Wei Mi authored
like .cfi_restore" Insert .cfi_offset/.cfi_register when IncomingCSRSaved of current block is larger than OutgoingCSRSaved of its previous block. Original commit message: https://reviews.llvm.org/D42848 only handled CFA related cfi directives but didn't handle CSR related cfi. The patch adds the CSR part. Basically it reuses the framework created in D42848. For each basicblock, the patch tracks which CSR set have been saved at its CFG predecessors's exits, and compare the CSR set with the set at its previous basicblock's exit (The previous block is the block laid before the current block). If the saved CSR set at its previous basicblock's exit is larger, .cfi_restore will be inserted. The patch also generates proper .cfi_restore in epilogue to make sure the saved CSR set is consistent for the incoming edges of each block. Differential Revision: https://reviews.llvm.org/D74303
-
mydeveloperday authored
Summary: In recent patches the clang-format code has become un-formatted, correct this before making additional changes Reviewers: mitchell-stellar, sylvestre.ledru, Abpostelnicu, Wawha, jbcoe Reviewed By: sylvestre.ledru, Abpostelnicu, jbcoe Subscribers: cfe-commits Tags: #clang, #clang-format Differential Revision: https://reviews.llvm.org/D78909
-
Luboš Luňák authored
If a PCH is used for compilation, SourceManager::isInMainFile() returns true even for the "<built-in>" predefines area. Using -D only for the TU compilation may trigger -Wunused-macros for it. It is admitedly a bit fishy to set a macro only for a TU and not for the PCH, but this works fine if the PCH does not use the macro (I couldn't find a statement on this for Clang, but GCC explicitly allows this in the docs). Differential Revision: https://reviews.llvm.org/D73846
-
Nick Desaulniers authored
Summary: Reviewing failures identified in D78586, I was finding the identifiers for these iterators hard to read. Reviewers: efriedma, MaskRay, jyknight Reviewed By: MaskRay Subscribers: hiraditya, llvm-commits, srhines Tags: #llvm Differential Revision: https://reviews.llvm.org/D78849
-
Craig Topper authored
All avx512 truncate instructions except vXi64->vXi32 are 2 uops on port 5. So raise their costs to 2. Except when we have an earlier faster sequence like pshufb for 128 bit input vectors. Add a lower cost of 3 v16i16->v16i8 with avx512f where we can extend to v16i32 then truncate. And a cost of 2 for avx512bw with and without avx512vl. There we can use vpmovwb with either a ymm or zmm input. Both of these beat masking, splitting, and using packuswb which is our avx/avx2 codegen.
-
Ian Levesque authored
Summary: Fixes an ABI violation in the trampoline code for AArch64 that causes the indirect result register to get overwritten if the XRay handler function is complex enough to use it. Reviewers: MaskRay, dberris, johnislarry Subscribers: kristof.beyls, danielkiss, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D78596
-