- May 06, 2017
-
-
Michael Kruse authored
Extend the Knowledge class to store information about the contents of array elements and which values are written. Two knowledges do not conflict the known content is the same. The content information if computed from writes to and loads from the array elements, and represented by "ValInst": isl spaces that compare equal if the value represented is the same. Differential Revision: https://reviews.llvm.org/D31247 llvm-svn: 302339
-
Simon Pilgrim authored
Many more to come... llvm-svn: 302338
-
Simon Pilgrim authored
Remove an extra canonicalization step if ISD::ABS is going to be used anyway. Updated x86 abs combine to check that we are lowering from both canonicalizations. llvm-svn: 302337
-
Michael Kruse authored
Allow using a system's install jsoncpp library instead of the bundled one with the setting POLLY_BUNDLED_JSONCPP=OFF. This fixes llvm.org/PR32929 Differential Revision: https://reviews.llvm.org/D32922 llvm-svn: 302336
-
Craig Topper authored
This changes one parameter to be a const APInt& since we only read from it. Use std::move on local APInts once they are no longer needed so we can reuse their allocations. Lastly, use operator+=(uint64_t) instead of adding 1 to an APInt twice creating a new APInt each time. llvm-svn: 302335
-
Craig Topper authored
llvm-svn: 302334
-
Craig Topper authored
llvm-svn: 302333
-
Craig Topper authored
llvm-svn: 302332
-
Craig Topper authored
Summary: ConstantRange contains two APInts which can allocate memory if their width is larger than 64-bits. So we shouldn't copy it when we can avoid it. This changes LVILatticeVal::getConstantRange() to return its internal ConstantRange by reference. This allows many places that just need a ConstantRange reference to avoid making a copy. Several places now capture the return value of getConstantRange() by reference so they can call methods on it that don't need a new object. Lastly it adds std::move in one place to capture to move a local ConstantRange into an LVILatticeVal. Reviewers: reames, dberlin, sanjoy, anna Reviewed By: reames Subscribers: grandinj, llvm-commits Differential Revision: https://reviews.llvm.org/D32884 llvm-svn: 302331
-
Eric Fiselier authored
llvm-svn: 302330
-
Kamil Rytarowski authored
Recreated patch for __NetBSD__ has been pushed upstream to Google. llvm-svn: 302329
-
Jim Ingham authored
If we can't find the "is dyld locked" symbol, assume it is safe to load the image unless we only have 1 image loaded - in which case we are in _dyld_start and it is definitely NOT safe. Also add a little better errors to that function, and better logging in SBProcess.cpp. <rdar://problem/30174817> llvm-svn: 302327
-
Rui Ueyama authored
This patch do s/color/class/g. llvm-svn: 302326
-
Stephan T. Lavavej authored
Fixes D32926. llvm-svn: 302325
-
Rui Ueyama authored
llvm-svn: 302324
-
Jim Ingham authored
llvm-svn: 302323
-
Stephan T. Lavavej authored
The expressions `1 == 1` and `true` have the same type, value category, and value. Fixes D32924. llvm-svn: 302322
-
Kostya Serebryany authored
[sanitizer-coverage] implement -fsanitize-coverage=no-prune,... instead of a hidden -mllvm flag. compiler-rt part (test only). llvm-svn: 302321
-
Kostya Serebryany authored
[sanitizer-coverage] implement -fsanitize-coverage=no-prune,... instead of a hidden -mllvm flag. clang part. llvm-svn: 302320
-
Kostya Serebryany authored
[sanitizer-coverage] implement -fsanitize-coverage=no-prune,... instead of a hidden -mllvm flag. llvm part. llvm-svn: 302319
-
Stephan T. Lavavej authored
In C++17, these iterators are allowed but not required to inherit from the deprecated std::iterator base class. Fixes D32727. llvm-svn: 302318
-
Jakub Kuderski authored
Summary: Use the cxxStdInitializerListExp matcher from ASTMatchers.h instead of a local one. Reviewers: aaron.ballman, alexfh, Prazek Reviewed By: aaron.ballman Subscribers: xazax.hun, cfe-commits Tags: #clang-tools-extra Differential Revision: https://reviews.llvm.org/D32923 llvm-svn: 302317
-
Quentin Colombet authored
This is a step toward having statically allocated instruciton mapping. We are going to tablegen them eventually, so let us reflect that in the API. NFC. llvm-svn: 302316
-
Craig Topper authored
[BitVector] Improve the description of the BitVector::clear to say it removes the bits rather than clearing since clearing could be interpreted as just zeroing. NFC llvm-svn: 302315
-
Lang Hames authored
These methods can be used by the derived expression types to perform expression specific and/or language specific actions before and after the expression runs. (ThreadPlanCallUserExpression is modified to call these methods on the expression immediately before/after execution of the expression). The immediate motivation is allowing Swift expressions to notify the swift runtime that exclusivity enforcement should be suspended while the expression runs (we want LLDB expressions to be able to access variables even when they're considered exclusively owned by someone else in the original program). Reviewed in https://reviews.llvm.org/D32889 llvm-svn: 302314
-
Tim Northover authored
It turns out there are some sort-of-but-not-quite empty structs that break all the rules. For example: struct SuperEmpty { int arr[0]; }; struct SortOfEmpty { struct SuperEmpty e; }; Both of these have sizeof == 0, even in C++ mode, for GCC compatibility. The first one also doesn't occupy a register when passed by value in GNU C++ mode, unlike everything else. On Darwin, we want to ignore the lot (and especially don't want to try to use an i0 as we were). llvm-svn: 302313 -
Richard Smith authored
This is necessary to be able to build a libc++ module from preprocessed source (due to the submodule std.new). llvm-svn: 302312
-
Craig Topper authored
llvm-svn: 302311
-
Eugene Zelenko authored
llvm-svn: 302310
-
Richard Smith authored
To support this, an optional marker "#pragma clang module contents" is recognized in module map files, and the rest of the module map file from that point onwards is treated as the source of the module. Preprocessing a module map produces the input module followed by the marker and then the preprocessed contents of the module. Ignoring line markers, a preprocessed module might look like this: module A { header "a.h" } #pragma clang module contents #pragma clang module begin A // ... a.h ... #pragma clang module end The preprocessed output generates line markers, which are not accepted by the module map parser, so -x c++-module-map-cpp-output should be used to compile such outputs. A couple of major parts do not work yet: 1) The files that are listed in the module map must exist on disk, in order to build the on-disk header -> module lookup table in the PCM file. To fix this, we need the preprocessed output to track the file size and other stat information we might use to build the lookup table. 2) Declaration ownership semantics don't work properly yet, since mapping from a source location to a module relies on mapping from FileIDs to modules, which we can't do if module transitions can occur in the middle of a file. llvm-svn: 302309 -
Easwaran Raman authored
Differential revision: https://reviews.llvm.org/D32775 llvm-svn: 302308
-
Krzysztof Parzyszek authored
llvm-svn: 302307
-
Krzysztof Parzyszek authored
These are M0 and M1. Removing duplicated registers reduces the number of explicit register aliasing. llvm-svn: 302306
-
Krzysztof Parzyszek authored
llvm-svn: 302305
-
Zachary Turner authored
llvm-svn: 302304
-
Matthias Braun authored
This exposes a method in MachineFrameInfo that calculates MaxCallFrameSize and calls it after instruction selection in the ARM target. This avoids ARMBaseRegisterInfo::canRealignStack()/ARMFrameLowering::hasReservedCallFrame() giving different answers in early/late phases of codegen. The testcase shows a particular nasty example result of that where we would fail to properly align an alloca. Differential Revision: https://reviews.llvm.org/D32622 llvm-svn: 302303
-
Zachary Turner authored
Most of the time we know exactly how many type records we have in a list, and we want to use the visitor to deserialize them into actual records in a database. Previously we were just using push_back() every time without reserving the space up front in the vector. This is obviously terrible from a performance standpoint, and it's not uncommon to have PDB files with half a million type records, where the performance degredation was quite noticeable. llvm-svn: 302302
-
Matthias Braun authored
llvm-svn: 302301
-
Kostya Kortchinsky authored
Summary: This change adds Android support to the allocator (but doesn't yet enable it in the cmake config), and should be the last fragment of the rewritten change D31947. Android has more memory constraints than other platforms, so the idea of a unique context per thread would not have worked. The alternative chosen is to allocate a set of contexts based on the number of cores on the machine, and share those contexts within the threads. Contexts can be dynamically reassigned to threads to prevent contention, based on a scheme suggested by @dvyuokv in the initial review. Additionally, given that Android doesn't support ELF TLS (only emutls for now), we use the TSan TLS slot to make things faster: Scudo is mutually exclusive with other sanitizers so this shouldn't cause any problem. An additional change made here, is replacing `thread_local` by `THREADLOCAL` and using the initial-exec thread model in the non-Android version to prevent extraneous weak definition and checks on the relevant variables. Reviewers: kcc, dvyukov, alekseyshl Reviewed By: alekseyshl Subscribers: srhines, mgorny, llvm-commits Differential Revision: https://reviews.llvm.org/D32649 llvm-svn: 302300
-
Rafael Espindola authored
We can set SectionIndex tentatively as we process the linker script instead of looking it repeatedly. In general we should try to have as few name lookups as possible. llvm-svn: 302299
-