summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* [ELF] Replace std::pair with a struct so we have proper names. NFC.Michael J. Spencer2016-10-192-35/+37
| | | | llvm-svn: 284670
* Extend hack to work around bad exception specifications for 'swap' members toRichard Smith2016-10-192-10/+37
| | | | | | also cover libstdc++'s std::__debug::array and std::__profile::array. llvm-svn: 284669
* Next set of additional error checks for invalid Mach-O files for theKevin Enderby2016-10-199-0/+306
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | load commands that use the MachO::thread_command type but are not used in llvm libObject code but used in llvm tool code. This includes the LC_UNIXTHREAD and LC_THREAD load commands. A quick note about the philosophy of the error checking in libObject for Mach-O files, the idea behind the checking is that we never will return a Mach-O file out of libObject that contains unknown things in the load commands. To do this the 32-bit ARM and PPC general tread states needed to be defined as two test case binaries contained them. If other thread states for other CPUs need to be added we will do that as needed. Going forward the LC_MAIN load command is used to set the entry point in Mach-O executables these days instead of an LC_UNIXTHREAD as was done in the past. So today only in core files are LC_THREAD load commands and thread states usually found. Other thread states have not yet been defined in include/Support/MachO.h at this time. But that can be added as needed with their corresponding checking also added. llvm-svn: 284668
* Use noexcept instead of LLVM_NOEXCEPT now that all compilers support itReid Kleckner2016-10-1910-36/+34
| | | | llvm-svn: 284667
* Add lldb register definitions for w0-w28, s0-s31, and d0-d31 toJason Molenda2016-10-194-70/+1573
| | | | | | | | | | | | | | | | | | | | | | | | RegisterInfos_arm64.h. These register definitions include the offset into the register context, which will vary depending on the endianness of the arm64 target system (e.g. s8 is at offset 0 in v8 on little-endian, it is at offset 12 on big-endian) and I've only added the little-endian definitions to the table. If we want to add a big-endian arm64 target, we'll need a separate table which uses the big-endian offsets for these registers. I changed the name of the register table from g_register_infos_arm64 to g_register_infos_arm64_le to make it explicit that this is the little-endian version of that table, and updated users of the table to use the new name. I added support for the "w", "s", and "d" registers to RegisterContextDarwin_arm64 but it was more an example than anything useful -- this plugin is only used when working with core files and darwin core files do not (today) include the floating point register context, so it only added the support for the "w" pseudo registers. When we're connected to a real arm64 device, we use the ProcessGDBRemote code. llvm-svn: 284666
* Update Compiler.h to fail fast when building with MSVC 2013Reid Kleckner2016-10-191-4/+3
| | | | llvm-svn: 284665
* [PGO] Fix a use-after-move. NFC.Rong Xu2016-10-191-1/+2
| | | | llvm-svn: 284664
* Don't call markLiveAt for non alloc sections.Rafael Espindola2016-10-193-7/+12
| | | | | | We don't gc them anyway, so just use an early return in Enqueue. llvm-svn: 284663
* Read an expression in the form of "ABSOLUTE(<expr>) op <expr> ...".Rui Ueyama2016-10-192-1/+21
| | | | | | Fixes bug 30741. llvm-svn: 284662
* Revert "DenseSet: Appease msc18 to define derived constructors explicitly."Reid Kleckner2016-10-191-12/+0
| | | | | | This reverts commit r284570. MSVC 18 / 2013 is not supported anymore. llvm-svn: 284661
* Update docs to reflect new minimum MSVC version requirementReid Kleckner2016-10-193-10/+6
| | | | | | | | | | Mailing list discussion about this: http://lists.llvm.org/pipermail/llvm-dev/2016-September/104631.html Code changes to simplify the ifdefs will come next, and can be reverted without affecting the policy if someone needs it. llvm-svn: 284660
* [PGO] Fix bogus warning for merging empty llvm profile fileRong Xu2016-10-197-2/+47
| | | | | | | | | | | | | | | | | Profile runtime can generate an empty raw profile (when there is no function in the shared library). This empty profile is treated as a text format profile. A test format profile without the flag of "#IR" is thought to be a clang generated profile. So in llvm profile merging, we will get a bogus warning of "Merge IR generated profile with Clang generated profile." The fix here is to skip the empty profile (when the buffer size is 0) for profile merge. Reviewers: vsk, davidxl Differential Revision: http://reviews.llvm.org/D25687 llvm-svn: 284659
* [cmake] Follow LLVM's lead in creating exported tool targets for clang tools.Michael Gottesman2016-10-191-0/+1
| | | | | | | | | | | | This is needed by downstream projects such as swift to get proper cmake dependency information for LLVM/Clang targets. A few months ago I added support for exporting this information for Clang libraries. In order to be incremental, I did not add support for exporting clang tools as well at that time. Now such support is needed, so I am committing this incremental code. llvm-svn: 284658
* [BuildingAJIT] Use the remote target triple to construct the TargetMachine inLang Hames2016-10-191-1/+2
| | | | | | | | | | Chapter 5. Chapter 5 demonstrates remote JITing: code is executed on the remote, not the machine running the REPL, so it's the remote's triple (and TargetMachine) that we need. llvm-svn: 284657
* Add computeHostNumPhysicalCores() implementation for DarwinMehdi Amini2016-10-192-2/+22
| | | | | | Differential Revision: https://reviews.llvm.org/D25800 llvm-svn: 284656
* AMDGPU : Add a function to enable and disable IEEEBit for SC and shaderWei Ding2016-10-194-13/+45
| | | | | | | | respectively. Differential Revision: http://reviews.llvm.org/D25789 llvm-svn: 284655
* Remove the JIT EH/small code model tests for now.Lang Hames2016-10-192-64/+0
| | | | | | | | | | | These tests rely on two sections being allocated with a limited displacement from one to the other to work. We've never guaranteed this, and consequently these tests usually fail. That led to them being XFAILed, but now they XPASS whenever the sections do happen to be allocated nearby in memory. So I'm removing these for now to get rid of the noise. We can re-instate them if/when we take the time to implement a displacement-respecting allocator. llvm-svn: 284654
* Add optimization to sizeof...(X) handling: if none of parameter pack X'sRichard Smith2016-10-194-1/+130
| | | | | | | | | | | | | | | | | | | | | corresponding arguments are unexpanded pack expansions, we can compute the result without substituting them. This significantly improves the memory usage and performance of make_integer_sequence implementations that do this kind of thing: using result = integer_sequence<T, Ns ..., sizeof...(Ns) + Ns ...>; ... but note that such an implementation will still perform O(sizeof...(Ns)^2) work while building the second pack expansion (we just have a somewhat lower constant now). In principle we could get this down to linear time by caching whether the number of expansions of a pack is constant, or checking whether we're within an alias template before scanning the pack for pack expansions (since that's the only case in which we do substitutions within a dependent context at the moment), but this patch doesn't attempt that. llvm-svn: 284653
* Don't crash generating debug info for VLA in function prototype.Eli Friedman2016-10-192-7/+17
| | | | | | | | Fixes regression from r279445. Differential Revision: https://reviews.llvm.org/D25793 llvm-svn: 284652
* DebugInfo: use uint32_t for alignment variables.Victor Leschuk2016-10-191-17/+17
| | | | | | | | | LLVM now uses uint32_t for DebugInfo alignment for space efficiency, in this patch we change frontend DebugInfo-related variables to uint32_t too. Differential Revision: https://reviews.llvm.org/D25621 llvm-svn: 284651
* [CMake] Make the runtimes directory work with bootstrap buildsChris Bieneman2016-10-191-0/+15
| | | | | | | | This patch builds on clang r284648, and allows the runtime directory to make the bootstrap builds depend on the builtin libraries. This patch also make the bootstrap build depend on configuring the other runtimes because the libcxx headers are copied during configuration. I have left a TODO in the code to remove that once I come up with a better solution. llvm-svn: 284650
* [InstSimplify] fold negation of sign-bitSanjay Patel2016-10-192-13/+24
| | | | | | | | | | | | | | | | 0 - X --> X, if X is 0 or the minimum signed value 0 - X --> 0, if X is 0 or the minimum signed value and the sub is NSW I noticed this pattern might be created in the backend after the change from D25485, so we'll want to add a similar fold for the DAG. The use of computeKnownBits in InstSimplify may be something to investigate if the compile time of InstSimplify is noticeable. We could replace computeKnownBits with specific pattern matchers or limit the recursion. Differential Revision: https://reviews.llvm.org/D25785 llvm-svn: 284649
* [CMake] Add clang-bootstrap-deps targetChris Bieneman2016-10-191-11/+13
| | | | | | | | Having this target allows other parts of the build system to add to the bootstrap dependencies without needing to be defined before the bootstrap targets are created. This will specifically be used connect the builtins build from the LLVM runtimes directory as a dependency of the next build stage. llvm-svn: 284648
* [CUDA] When we emit an error that might have been deferred, also print a ↵Justin Lebar2016-10-1910-82/+197
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | callstack. Summary: Previously, when you did something not allowed in a host+device function and then caused it to be codegen'ed, we would print out an error telling you that you did something bad, but we wouldn't tell you how we decided that the function needed to be codegen'ed. This change causes us to print out a callstack when emitting deferred errors. This is immensely helpful when debugging highly-templated code, where it's often unclear how a function became known-emitted. We only print the callstack once per function, after we print the all deferred errors. This patch also switches all of our hashtables to using canonical FunctionDecls instead of regular FunctionDecls. This prevents a number of bugs, some of which are caught by tests added here, in which we assume that two FDs for the same function have the same pointer value. Reviewers: rnk Subscribers: cfe-commits, tra Differential Revision: https://reviews.llvm.org/D25704 llvm-svn: 284647
* [CMake] Support thin LTO in PGO CMake cacheChris Bieneman2016-10-191-2/+2
| | | | | | This allows you to set PGO_INSTRUMENT_LTO=Thin and have it work correctly. llvm-svn: 284646
* Avoid using grep command in a test.Rui Ueyama2016-10-191-10/+11
| | | | | | | This test is failing on FreeBSD bots. This is an attempt to fix it by not using grep command. llvm-svn: 284645
* [AST] Add CanonicalDeclPtr<T>.Justin Lebar2016-10-191-1/+63
| | | | | | | | | | | | | | | | | | Summary: CanonicalDeclPtr<T> is just like a T*, except it calls T::getCanonicalDecl() on construction. This is useful as the key in a "set of canonical Decls" -- it's much less error-prone than calling getCanonicalDecl() every time you touch the set. Reviewers: rnk Subscribers: cfe-commits, tra Differential Revision: https://reviews.llvm.org/D25703 llvm-svn: 284644
* [CUDA] Emit errors for wrong-side calls made on the same line as ↵Justin Lebar2016-10-193-8/+49
| | | | | | | | | | | | | | | | | | | | | | | non-wrong-side calls. Summary: This fixes two related bugs: 1) Previously, if you had a non-wrong side call at some source code location L, we wouldn't emit errors for wrong-side calls that appeared at L. 2) We'd only emit one wrong-side error per source code location, when we actually want to emit it twice if we hit this line more than once due to e.g. template instantiation. Reviewers: tra Subscribers: rnk, cfe-commits Differential Revision: https://reviews.llvm.org/D25702 llvm-svn: 284643
* [ubsan] Drop dependency on a 64-bit arch in a test (NFC)Vedant Kumar2016-10-191-14/+14
| | | | | | | | This should fix: http://lab.llvm.org:8011/builders/clang-hexagon-elf/builds/46184 llvm-svn: 284642
* Move getVersionString to Core and simplify Version.cpp.Rui Ueyama2016-10-195-75/+22
| | | | llvm-svn: 284641
* [ubsan] Re-work check lines to try to appease a bot (NFC)Vedant Kumar2016-10-191-17/+10
| | | | | | | | | | This bot does not produce the IR I expect -- it's missing some 'handler.dynamic_type_cache_miss:' labels. We don't need to rely on those labels, so get rid of them in hopes of making the bot happy. http://bb.pgr.jp/builders/cmake-clang-x86_64-linux/builds/55493 llvm-svn: 284639
* New clang option -mpie-copy-relocations to use copy relocations for PIE builds.Sriraman Tallam2016-10-195-0/+17
| | | | | | Differential Revision: https://reviews.llvm.org/D19996 llvm-svn: 284638
* [BuildingAJIT] Make the chapter 5 server export symbols.Lang Hames2016-10-191-0/+2
| | | | | | This will allow chapter 5 to work on Linux. llvm-svn: 284637
* [ubsan] Use the object pointer's type info for devirtualized callsVedant Kumar2016-10-192-6/+100
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ubsan reports a false positive 'invalid member call' diagnostic on the following example (PR30478): struct Base1 { virtual int f1() { return 1; } }; struct Base2 { virtual int f1() { return 2; } }; struct Derived2 final : Base1, Base2 { int f1() override { return 3; } }; int t1() { Derived2 d; return static_cast<Base2 *>(&d)->f1(); } Adding the "final" attribute to a most-derived class allows clang to devirtualize member calls into an instance of that class. We should pass along the type info of the object pointer to avoid the FP. In this case, that means passing along the type info for 'Derived2' instead of 'Base2' when checking the dynamic type of static_cast<Base2 *>(&d2). Differential Revision: https://reviews.llvm.org/D25448 llvm-svn: 284636
* Typo: nomed struct -> named structHans Wennborg2016-10-191-1/+1
| | | | llvm-svn: 284635
* Include ARGV[0] in error messages.Rui Ueyama2016-10-197-10/+13
| | | | | | | | This is what other linkers and clang driver do. Differential Revision: https://reviews.llvm.org/D25780 llvm-svn: 284634
* [GlobalMerge] Handle non-landingpad EH padsReid Kleckner2016-10-192-14/+58
| | | | | | | | | This code crashed on funclet-style EH instructions such as catchpad, catchswitch, and cleanuppad. Just treat all EH pad instructions equivalently and avoid merging the globals they reference through any use. llvm-svn: 284633
* [IndVarSimplify] Teach calculatePostIncRange to take guards into accountArtur Pilipenko2016-10-192-2/+140
| | | | | | | | Reviewed By: sanjoy Differential Revision: https://reviews.llvm.org/D25739 llvm-svn: 284632
* [LV] Avoid emitting trivially dead instructionsMatthew Simpson2016-10-192-0/+87
| | | | | | | | | | | | | | | Some instructions from the original loop, when vectorized, can become trivially dead. This happens because of the way we structure the new loop. For example, we create new induction variables and induction variable "steps" in the new loop. Thus, when we go to vectorize the original induction variable update, it may no longer be needed due to the instructions we've already created. This patch prevents us from creating these redundant instructions. This reduces code size before simplification and allows greater flexibility in code generation since we have fewer unnecessary instruction uses. Differential Revision: https://reviews.llvm.org/D25631 llvm-svn: 284631
* [AliasSetTracker] Add support for memcpy and memmove.Chad Rosier2016-10-193-1/+138
| | | | | | Differential Revision: https://reviews.llvm.org/D25776 llvm-svn: 284630
* [IndVarSimplify] Use control-dependent range information to prove non-negativityArtur Pilipenko2016-10-192-2/+323
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This change is motivated by the case when IndVarSimplify doesn't widen a comparison of IV increment because it can't prove IV increment being non-negative. We end up with a redundant trunc of the widened increment on this example. for.body: %i = phi i32 [ %start, %for.body.lr.ph ], [ %i.inc, %for.inc ] %within_limits = icmp ult i32 %i, 64 br i1 %within_limits, label %continue, label %for.end continue: %i.i64 = zext i32 %i to i64 %arrayidx = getelementptr inbounds i32, i32* %base, i64 %i.i64 %val = load i32, i32* %arrayidx, align 4 br label %for.inc for.inc: %i.inc = add nsw nuw i32 %i, 1 %cmp = icmp slt i32 %i.inc, %limit br i1 %cmp, label %for.body, label %for.end There is a range check inside of the loop which guarantees the IV to be non-negative. NSW on the increment guarantees that the increment is also non-negative. Teach IndVarSimplify to use the range check to prove non-negativity of loop increments. Reviewed By: sanjoy Differential Revision: https://reviews.llvm.org/D25738 llvm-svn: 284629
* [AliasSetTracker] Return void for add() functions. NFC.Chad Rosier2016-10-192-52/+33
| | | | | | Differential Revision: https://reviews.llvm.org/D25748 llvm-svn: 284628
* [InstSimplify] move one and add more tests for potential negation foldsSanjay Patel2016-10-192-9/+63
| | | | llvm-svn: 284627
* Add a macro for prefetching data.Rafael Espindola2016-10-191-0/+6
| | | | | | It will be used in lld. llvm-svn: 284626
* Remove ending "." from an error message.Rui Ueyama2016-10-192-2/+2
| | | | | | Other error messages don't end with ".". llvm-svn: 284625
* MS ABI: Fix assert when generating virtual function call with virtual bases ↵Hans Wennborg2016-10-192-9/+23
| | | | | | | | | | | | and -flto (PR30731) getClassAtVTableLocation() was calling ASTRecordLayout::getBaseClassOffset() on a virtual base, causing an assert. Differential Revision: https://reviews.llvm.org/D25779 llvm-svn: 284624
* [ADT] Zip range adapterMehdi Amini2016-10-192-0/+152
| | | | | | | | | | | | | | | This augments the STLExtras toolset with a zip iterator and range adapter. Zip comes in two varieties: `zip`, which will zip to the shortest of the input ranges, and `zip_first`, which limits its `begin() == end()` checks to just the first range. Recommit r284035 after MSVC2013 support has been dropped. Patch by: Bryant Wong <github.com/bryant> Differential Revision: https://reviews.llvm.org/D23252 llvm-svn: 284623
* [polly] Fix non-determinism in polly BlockGeneratorsMandeep Singh Grang2016-10-191-2/+2
| | | | | | | | | | | | Summary: Iterating over SeenBlocks which is a SmallPtrSet results in non-determinism in codegen Reviewers: jdoerfert, zinob, grosser Tags: #polly Differential Revision: https://reviews.llvm.org/D25778 llvm-svn: 284622
* [llvm-cov] Don't spawn a thread unless ThreadCount > 1Vedant Kumar2016-10-191-27/+39
| | | | | | | | | | | | Initializing a ThreadPool with ThreadCount = 1 spawns a thread even though we don't need to. This is at least slower than it needs to be, and at worst may somehow be exacerbating PR30735 (llvm-cov times out on ARM bots). As a follow-up, I'll try to add logic to llvm::ThreadPool to avoid spawning a thread when ThreadCount = 1. llvm-svn: 284621
* [mips][msa] Range check MSA intrinsics with immediatesSimon Dardis2016-10-195-56/+671
| | | | | | | | | | | | | | | | This patch teaches clang to range check immediates for MIPS MSA instrinsics. This checking is done strictly in comparison to some existing GCC implementations. E.g. msa_andvi_b(var, 257) does not result in andvi $wX, 1. Similarily msa_ldi_b takes a range of -128 to 127. As part of this effort, correct the existing MSA test as it has both illegal types and immediates. Reviewers: vkalintiris Differential Revision: https://reviews.llvm.org/D25017 llvm-svn: 284620
OpenPOWER on IntegriCloud