- Feb 08, 2017
-
-
Kostya Serebryany authored
[asan] replace std::random_shuffle with std::shuffle in tests since std::random_shuffle is being deprecated in C++17; NFC llvm-svn: 294370
-
Eugene Zelenko authored
llvm-svn: 294369
-
- Feb 07, 2017
-
-
Eugene Zelenko authored
This is preparation to reduce MC headers dependencies. llvm-svn: 294368
-
Eric Fiselier authored
Summary: r291918 changed `HandleLLVMOptions.cmake` to add `-fsanitize-blacklist=<llvm-file>` when `LLVM_USE_SANITIZER=Undefined` is specified. This breaks out-of-tree users of `LLVM_USE_SANITIZER` since that file is not present. This patch fixes the issue by checking if the file exists first. Reviewers: mgorny, bogner, vitalybuka, krasin Reviewed By: krasin Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D29686 llvm-svn: 294367
-
Kostya Serebryany authored
[libFuzzer] replace std::random_shuffle with std::shuffle as std::random_shuffle is being deprecated in C++17. Also simplify fuzzer::Random. NFC llvm-svn: 294366
-
Simon Pilgrim authored
llvm-svn: 294365
-
Daniel Berlin authored
llvm-svn: 294364
-
Simon Pilgrim authored
With particular interest in cases where we don't make use of implicit zeroing or fail to break register dependencies llvm-svn: 294363
-
Bruno Cardoso Lopes authored
Point to the PCM file that could not be found. rdar://problem/30381981 llvm-svn: 294362
-
Bruno Cardoso Lopes authored
Following up on r291465 after a regression in r276159. When we use -fmodule-name=X while building a PCH, modular headers in X will be textually included and the compiler knows that we are not building module X, so don't serialize such headers in the PCH as being part of a module, because at this point they are not. This was causing subtle bugs and malformed AST crashes, for instance, when using the PCH in subsequent compiler invocation with -fmodules, the HFI for a modular header would map to the PCH, which would force a module load of and unexistent module ID. rdar://problem/30171164 llvm-svn: 294361
-
Eric Fiselier authored
Recently I turned on libc++'s debug mode assertions when CMake is configured with -DLIBCXX_ENABLE_ASSERTIONS=ON. This change exposed assertion failures caused by bugs in filesystem. This patch fixes those failures. The first bug was that `PathParser` was using front()/back() on empty string views in order to get the address of the character. However this is UB on empty strings. Those operations now use data() to obtain the pointer. The second bug was that directory_iterator attempted to capture errno when it was unset and there was an assertion to detect this. llvm-svn: 294360
-
Vassil Vassilev authored
llvm-svn: 294359
-
Daniel Jasper authored
Before: LooooooooooooooooongType variable(nullptr, [](A *a) {}); After: LooooooooooooooooongType variable(nullptr, [](A *a) {}); llvm-svn: 294358
-
David Blaikie authored
llvm-svn: 294357
-
Wolfgang Pieb authored
When variables are spilled to the stack by the register allocator, keep track of their debug locations in LiveDebugValues and insert DBG_VALUE instructions at the appropriate place. Ensure that the locations are propagated down the dominator tree via the existing mechanisms. Reviewer: aprantl Differential Revision: https://reviews.llvm.org/D29500 llvm-svn: 294356
-
Eric Fiselier authored
llvm-svn: 294355
-
Kevin Enderby authored
it was printing the field name fileoff instead of filesize. The original check was added in r278557. This was found in tracking down the problem that lead to the fix in r293842 - [dsymutil] Fix __LINKEDIT vmsize in dsymutil upgrade path rdar://30386075 llvm-svn: 294354
-
Eric Fiselier authored
llvm-svn: 294353
-
Daniel Berlin authored
Summary: This patch adds a utility to build extended SSA (see "ABCD: eliminating array bounds checks on demand"), and an intrinsic to support it. This is then used to get functionality equivalent to propagateEquality in GVN, in NewGVN (without having to replace instructions as we go). It would work similarly in SCCP or other passes. This has been talked about a few times, so i built a real implementation and tried to productionize it. Copies are inserted for operands used in assumes and conditional branches that are based on comparisons (see below for more) Every use affected by the predicate is renamed to the appropriate intrinsic result. E.g. %cmp = icmp eq i32 %x, 50 br i1 %cmp, label %true, label %false true: ret i32 %x false: ret i32 1 will become %cmp = icmp eq i32, %x, 50 br i1 %cmp, label %true, label %false true: ; Has predicate info ; branch predicate info { TrueEdge: 1 Comparison: %cmp = icmp eq i32 %x, 50 } %x.0 = call @llvm.ssa_copy.i32(i32 %x) ret i32 %x.0 false: ret i23 1 (you can use -print-predicateinfo to get an annotated-with-predicateinfo dump) This enables us to easily determine what operations are affected by a given predicate, and how operations affected by a chain of predicates. Reviewers: davide, sanjoy Subscribers: mgorny, llvm-commits, Prazek Differential Revision: https://reviews.llvm.org/D29519 Update for review comments Fix a bug Nuno noticed where we are giving information about and/or on edges where the info is not useful and easy to use wrong Update for review comments llvm-svn: 294351
-
Dan Albert authored
Reviewers: EricWF Reviewed By: EricWF Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D29209 llvm-svn: 294350
-
Duncan P. N. Exon Smith authored
Add explicit conversions between forward and reverse ilist iterators. These follow the conversion conventions of std::reverse_iterator, which are off-by-one: the newly-constructed "reverse" iterator dereferences to the previous node of the one sent in. This has the benefit of converting reverse ranges in place: - If [I, E) is a valid range, - then [reverse(E), reverse(I)) gives the same range in reverse order. ilist_iterator::getReverse() is unchanged: it returns a reverse iterator to the *same* node. llvm-svn: 294349
-
Hans Wennborg authored
They are currently modelled incorrectly (as calls, which clobber registers, confusing e.g. Machine Copy Propagation). Reverting until we figure out the proper solution. llvm-svn: 294348
-
Sanjoy Das authored
(and add a bit of formatting.) llvm-svn: 294347
-
Rafael Espindola authored
We now just keep the address the section would have if it was allocatable. Only the writer ignores it at the very end. llvm-svn: 294346
-
Tim Northover authored
Turns out no-one actually cares about this one (at least) in tree so we can just drop it entirely. llvm-svn: 294345
-
Sanjay Patel authored
llvm-svn: 294344
-
Dmitry Mikulin authored
{ global : local; local: *; }; llvm-svn: 294343
-
Matthew Simpson authored
llvm-svn: 294342
-
Daniel Berlin authored
Summary: The intrinsic, marked as returning it's first argument, has no code generation effect (though currently not every optimization pass knows that intrinsics with the returned attribute can be looked through). It is about to be used to by the PredicateInfo pass to attach predicate information to existing operands, and be able to tell what the predicate information affects. We deliberately do not attach any info through a second operand so that the intrinsics do not need to dominate the comparisons/etc (since in the case of assume, we may want to push them up the post-dominator tree). Reviewers: davide, sanjoy Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D29517 llvm-svn: 294341
-
Ed Maste authored
Inspired by r294145 for NetBSD, this reduces diffs between the FreeBSD and Linux/NetBSD Platform implementations. Further diff reduction will occur once FreeBSD switches to using the remote process plugin. Differential Revision: https://reviews.llvm.org/D29667 llvm-svn: 294340
-
Daniel Berlin authored
Summary: GenericDomTreeConstruction had its own written DFS walk. It is basically identical to the DFS walk df_* is doing in the iterators. the one difference is that df_iterator uses an internal visited set. The GenericDomTreeConstruction one reused a field in an existing densemap lookup. Time-wise, this way is actually more cache-friendly (the previous way has a random store into a successor's info, the new way does that store at the same time and in the same place as other stores to the same info) It costs some very small amount of memory to do this, and one we pay in some other part of dom tree construction *anyway*, so we aren't really increasing dom tree constructions's peak memory usage. It could still be changed to use the old field with a little work on df_ext_* if we care (and if someone find performance regressions) Reviewers: chandlerc Reviewed By: chandlerc Subscribers: Eugene.Zelenko, llvm-commits Differential Revision: https://reviews.llvm.org/D8932 llvm-svn: 294339
-
Sanjoy Das authored
Summary: This change allows usage of store instruction for implicit null check. Memory Aliasing Analisys is not used and change conservatively supposes that any store and load may access the same memory. As a result re-ordering of store-store, store-load and load-store is prohibited. Patch by Serguei Katkov! Reviewers: reames, sanjoy Reviewed By: sanjoy Subscribers: atrick, llvm-commits Differential Revision: https://reviews.llvm.org/D29400 llvm-svn: 294338
-
Sanjay Patel authored
llvm-svn: 294337
-
Matthew Simpson authored
This patch removes unneeded instructions from the existing ARM/AArch64 interleaved access cost model tests. I'll be adding a similar set of tests in a follow-on patch to increase coverage. llvm-svn: 294336
-
Chris Bieneman authored
Moving the Ninja job pool configuration settings into the HandleLLVMOptions module will allow standalone builds of LLVM sub-projects to use the LLVM options without needing to re-implement them. llvm-svn: 294334
-
Sanjay Patel authored
llvm-svn: 294333
-
Saleem Abdulrasool authored
This reverts commit SVN r294148. Seems that it was mistaken, and GCC does still define `__unix` and `unix` when in GNU mode. llvm-svn: 294332
-
David Blaikie authored
llvm-svn: 294331
-
Nemanja Ivanovic authored
Adds the vnot extended mnemonic for the vnor instruction. Committing on behalf of brunoalr (Bruno Rosa). Differential Revision: https://reviews.llvm.org/D29225 llvm-svn: 294330
-
Reid Kleckner authored
Hoist entry block code for arguments and swift error values out of the basic block instruction selection loop. Lowering arguments once up front seems much more readable than doing it conditionally inside the loop. It also makes it clear that argument lowering can update StaticAllocaMap because no instructions have been selected yet. Also use range-based for loops where possible. llvm-svn: 294329
-