- Apr 13, 2017
-
-
Eric Fiselier authored
llvm-svn: 300191
-
Ayman Musa authored
Throughout the effort of automatically generating the X86 memory folding tables these missing information were encountered. This is a preparation work for a future patch including the automation of these tables. Differential Revision: https://reviews.llvm.org/D31714 llvm-svn: 300190
-
Artem Dergachev authored
We now check the type of the super-region pointer for most SubRegion classes in compile time; some checks are run-time though. This is an API-breaking change (we now require explicit casts to specific region sub-classes), but in practice very few checkers are affected. Differential Revision: https://reviews.llvm.org/D26838 llvm-svn: 300189
-
George Rimar authored
This addresses post commit review comments for r300039. llvm-svn: 300188
-
Artem Dergachev authored
Clean up vtable anchors (remove anchors for regions that have regular out-of-line virtual methods, add anchors for regions that don't have those). Fix private/public methods (all constructors should now be private for leaf classes, protected for abstract classes). No functional change intended, only extra sanity checks and cleanups. Differential Revision: https://reviews.llvm.org/D26837 llvm-svn: 300187
-
Daniel Sanders authored
Reviewers: ab, t.p.northover, qcolombet, aditya_nandakumar, rovka Reviewed By: ab Subscribers: dberris, kristof.beyls, igorb, llvm-commits Differential Revision: https://reviews.llvm.org/D31325 llvm-svn: 300186
-
Ayman Musa authored
llvm-svn: 300185
-
Ayman Musa authored
Differential Revision: https://reviews.llvm.org/D31743 llvm-svn: 300184
-
Ayal Zaks authored
Refactoring InnerLoopVectorizer's vectorizeBlockInLoop() to provide vectorizeInstruction(). Aligning DeadInstructions with its only user. Facilitates driving the transformation by VPlan - follows https://reviews.llvm.org/D28975 and its tentative breakdown. Differential Revision: https://reviews.llvm.org/D31997 llvm-svn: 300183
-
Peter Smith authored
ARM Exception Index Table sections .ARM.exidx have an implicit dependency on code sections via SHF_LINK_ORDER. When code sections are folded by ICF we must mark the unique .ARM.exidx table that describes it as not live to prevent an illegal entry in the exception table. Note that we do not try and follow the relocations from the .ARM.exidx section to the .ARM.extab sections to mark these as not live. Leaving these sections is not a correctness problem. In theory these could be removed via an application of garbage collection. Fixes https://bugs.llvm.org/show_bug.cgi?id=32614 Differential Revision: https://reviews.llvm.org/D31932 llvm-svn: 300182
-
Akira Hatanaka authored
This reverts commit 47979b20b475664013d19382fc6875b5b9f3ed9d. This was causing a couple of bots to fail. http://lab.llvm.org:8080/green/job/clang-stage1-configure-RA_check/30152 llvm-svn: 300181
-
Diana Picus authored
This reverts commit r300107 because it broke the ARM and AArch64 buildbots. llvm-svn: 300180
-
Craig Topper authored
llvm-svn: 300179
-
Artem Dergachev authored
SValBuilder tries to constant-fold symbols in the left-hand side of the symbolic expression whenever it fails to evaluate the expression directly. However, it only constant-folds them when they are atomic expressions, not when they are complicated expressions themselves. This patch adds recursive constant-folding to the left-hand side subexpression (there's a lack of symmetry because we're trying to have symbols on the left and constants on the right). As an example, we'd now be able to handle operations similar to "$x + 1 < $y", when $x is constrained to a constant. rdar://problem/31354676 Differential Revision: https://reviews.llvm.org/D31886 llvm-svn: 300178
-
Lang Hames authored
bot failures. llvm-svn: 300177
-
Rui Ueyama authored
RELRO is a feature to make segments read-only after dynamic relocations are applied. It is different from read-only segments because RELRO is initially writable. And of course RELRO is different from writable segments. RELRO is not a very well known feature. We have a series of checks to make a decision whether a section should be in a RELRO segment or not, but we didn't describe why. This patch adds comments to explain how that decision is made. llvm-svn: 300176
-
Eric Fiselier authored
llvm-svn: 300175
-
Lang Hames authored
The bool type may be larger than the char type, so assuming we can cast from bool to char and write a byte out to the stream is unsafe. Hopefully this will get RPCUtilsTest.ReturnExpectedFailure passing on the bots. llvm-svn: 300174
-
Lang Hames authored
tests to be consistent with the Error tests. llvm-svn: 300173
-
George Burgess IV authored
Same change as in r300168, but for invoke instead of call. llvm-svn: 300172
-
Craig Topper authored
Summary: APInt is currently implemented with an unsigned BitWidth field first and then a uint_64/pointer union. Due to the 64-bit size of the union there is a hole after the bitwidth. Putting the union first allows the class to be packed. Making it 12 bytes instead of 16 bytes. An APSInt goes from 20 bytes to 16 bytes. This shows a 4k reduction on the size of the opt binary on my local x86-64 build. So this enables some other improvement to the code as well. Reviewers: dblaikie, RKSimon, hans, davide Reviewed By: davide Subscribers: davide, llvm-commits Differential Revision: https://reviews.llvm.org/D32001 llvm-svn: 300171
-
Lang Hames authored
llvm-svn: 300170
-
Craig Topper authored
[APInt] Generalize the implementation of tcIncrement to support adding a full 'word' by introducing tcAddPart. Use this to support tcIncrement, operator++ and operator+=(uint64_t). Do the same for subtract. NFCI. llvm-svn: 300169
-
George Burgess IV authored
At the very least, we have CallInst::setIsNoInline() for adding the noinline attribute to callsites, and I'm told alwaysinline seems to work. Thought of adding "not all attributes are guaranteed to work here". If someone thinks that would be better (or has a better way of phrasing that, etc.), happy to add it. llvm-svn: 300168
-
Lang Hames authored
This patch allows Error and Expected types to be passed to and returned from RPC functions. Serializers and deserializers for custom error types (types deriving from the ErrorInfo class template) can be registered with the SerializationTraits for a given channel type (see registerStringError in RPCSerialization.h for an example), allowing a given custom type to be sent/received. Unregistered types will be serialized/deserialized as StringErrors using the custom type's log message as the error string. llvm-svn: 300167
-
Eric Fiselier authored
llvm-svn: 300165
-
Eric Fiselier authored
path::iterator isn't a strictly conforming iterator. Specifically it stashes the current element inside the iterator. This leads to UB when used with reverse_iterator since it requires the element to outlive the lifetime of the iterator. This patch adds a static_assert inside reverse_iterator to disallow "stashing iterator types", and it tags path::iterator as such a type. Additionally this patch removes all uses of reverse_iterator<path::iterator> within the tests. llvm-svn: 300164
-
Zachary Turner authored
llvm-svn: 300163
-
Jason Molenda authored
Utility/UuidCompatibility.h which gets you a definiton of uuid_t but none of the functions that operate on it. llvm-svn: 300162
-
Craig Topper authored
llvm-svn: 300161
-
Peter Collingbourne authored
This is a magic header file supported by the build system that provides a single definition, LLVM_REVISION, containing an LLVM revision identifier, if available. This functionality previously lived in the LTO library, but I am moving it out to lib/Support because I want to also start using it in lib/Object to create the IR symbol table. This change also fixes a bug where LLVM_REVISION was never actually being used in lib/LTO because the macro HAS_LLVM_REVISION was never defined (it was misspelled as HAVE_SVN_VERSION_INC in lib/LTO/CMakeLists.txt, and was only being defined in a non-existent file Version.cpp). I also changed the code to use "git rev-parse --git-dir" to locate the .git directory, instead of looking for it in the LLVM source root directory, which makes this compatible with monorepos as well as git worktrees. Differential Revision: https://reviews.llvm.org/D31985 llvm-svn: 300160
-
Eric Fiselier authored
llvm-svn: 300159
-
Eric Fiselier authored
std::unique_ptr's default constructor must be constexpr in order to allow constant initialization to take place for static objects; Even though we can never have a constexpr unique_ptr variable since it's not a literal type. This patch adds tests that constant initialization takes place by using the __attribute__((require_constant_initialization)) macro. llvm-svn: 300158
-
Lang Hames authored
llvm-svn: 300157
-
Eric Fiselier authored
llvm-svn: 300156
-
Lang Hames authored
llvm-svn: 300155
-
Eric Fiselier authored
The __unordered_map_equal and __unordered_map_hash wrappers attempt to swap const qualified predicates whenever the predicate is empty, and is subject to the EBO. Swapping const values seems blatently incorrect. This patch removes the const qualifier so the values are swapped as non-const. llvm-svn: 300154
-
Reid Kleckner authored
This seems like a much more natural API, based on Derek Schuff's comments on r300015. It further hides the implementation detail of AttributeList that function attributes come last and appear at index ~0U, which is easy for the user to screw up. git diff says it saves code as well: 97 insertions(+), 137 deletions(-) This also makes it easier to change the implementation, which I want to do next. llvm-svn: 300153
-
Eric Fiselier authored
This patch fixes a bug where the =default default ctor for __compressed_pair was incorrect for const qualified types. llvm-svn: 300152
-
Richard Smith authored
This test has apparently been broken for years, but we never noticed before because it's a long test and long tests approximately never get run. llvm-svn: 300151
-