summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Remove more basic_string member function templates from the dylib exportsEric Fiselier2017-02-173-1913/+1924
| | | | llvm-svn: 295398
* [XRAY] [x86_64] Adding a Flight Data filetype reader to the llvm-xray Trace ↵Dean Michael Berris2017-02-176-23/+334
| | | | | | | | | | | | | | | | | | | | | | | | implementation. Summary: The file type packs function trace data onto disk from potentially multiple threads that are aggregated and flushed during the course of an instrumented program's runtime. It is named FDR mode or Flight Data recorder as an analogy to plane blackboxes, which instrument a running system without access to IO. The writer code is defined in compiler-rt in xray_fdr_logging.h/cc Reviewers: rSerge, kcc, dberris Reviewed By: dberris Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D29697 llvm-svn: 295397
* Revert "[ubsan] Reduce null checking of C++ object pointers (PR27581)"Vedant Kumar2017-02-177-248/+30
| | | | | | | | | | This reverts commit r295391. It breaks this bot: http://lab.llvm.org:8011/builders/clang-with-thin-lto-ubuntu/builds/1898 I need to not rely on labels in the IR test. llvm-svn: 295396
* Move test to X86 subdirectory for bot failuresTeresa Johnson2017-02-171-0/+0
| | | | | | Second attempt at fixing bot failures from r295384. llvm-svn: 295395
* [x86] Give this test a triple so that we don't have to cope with twoChandler Carruth2017-02-171-1/+3
| | | | | | different asm comment syntaxes. llvm-svn: 295394
* [libc++] Fix PR 31938 - std::basic_string constructors use non-deductible ↵Eric Fiselier2017-02-174-27/+336
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | parameter types. Summary: This patch fixes http://llvm.org/PR31938. The description below is copy/pasted from the bug: The standard says: template<class charT, class traits = char_traits<charT>, class Allocator = allocator<charT>> class basic_string { using value_type = typename traits::char_type; // ... basic_string(const charT* s, const Allocator& a = Allocator()); }; libc++ actually chooses to declare the constructor as basic_string(const value_type* s, const Allocator& a = Allocator()); The implicit deduction guides from class template argument deduction make what was previously an implementation detail visible: std::basic_string s = "foo"; // error, can't deduce charT. The constructor in question is in the libc++ DSO, but fortunately it looks like fixing this will not result in an ABI break. @rsmith How does this look? I did more than just the constructors mentioned in the PR, but IDK how far to take it. Reviewers: mclow.lists, rsmith Reviewed By: rsmith Subscribers: cfe-commits, rsmith Differential Revision: https://reviews.llvm.org/D29863 llvm-svn: 295393
* [CMake] Add variable IOS to iOS toolchainChris Bieneman2017-02-171-0/+1
| | | | | | This is useful for some edge cases where detecting things gets tricky. Specifically LLDB needs this to support iOS because CMake doesn't support running tests using obj-c code. llvm-svn: 295392
* [ubsan] Reduce null checking of C++ object pointers (PR27581)Vedant Kumar2017-02-177-30/+248
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch teaches ubsan to insert exactly one null check for the 'this' pointer per method/lambda. Previously, given a load of a member variable from an instance method ('this->x'), ubsan would insert a null check for 'this', and another null check for '&this->x', before allowing the load to occur. Similarly, given a call to a method from another method bound to the same instance ('this->foo()'), ubsan would a redundant null check for 'this'. There is also a redundant null check in the case where the object pointer is a reference ('Ref.foo()'). This patch teaches ubsan to remove the redundant null checks identified above. Testing: check-clang and check-ubsan. I also compiled X86FastISel.cpp with -fsanitize=null using patched/unpatched clangs based on r293572. Here are the number of null checks emitted: ------------------------------------- | Setup | # of null checks | ------------------------------------- | unpatched, -O0 | 21767 | | patched, -O0 | 10758 | ------------------------------------- Differential Revision: https://reviews.llvm.org/D29530 llvm-svn: 295391
* add tests for ENAMETOOLONGEric Fiselier2017-02-172-9/+25
| | | | llvm-svn: 295390
* Attempt to fix bot failures by adding -mtriple to llc invocationTeresa Johnson2017-02-171-1/+1
| | | | | | | Failures on hexagon from test added with r295384, e.g.: http://lab.llvm.org:8011/builders/llvm-hexagon-elf/builds/3793 llvm-svn: 295389
* Add a comment.Rui Ueyama2017-02-171-0/+3
| | | | llvm-svn: 295388
* Bug 31948: Fix assertion when bitcasting constantexpr pointersMatt Arsenault2017-02-174-0/+32
| | | | llvm-svn: 295387
* FileCheck-ize some tests in test/CodeGen/X86/Chandler Carruth2017-02-176-32/+55
| | | | | | | | Patch by Jorge Gorbe! Differential Revision: https://reviews.llvm.org/D29807 llvm-svn: 295386
* Merge reloc sections in -emit-reloc mode.Rafael Espindola2017-02-172-0/+29
| | | | | | | | | | | | | Without this we would produce two relocation sections pointing to the same section, which gnu tools reject. This fixes pr31986. The implementation of -r/--emit-reloc is getting fairly complicated. But lets get the test passing before trying to refactor it. llvm-svn: 295385
* Handle link of NoDebug CU with a CU that has debug emission enabledTeresa Johnson2017-02-173-1/+95
| | | | | | | | | | | | | | | | | | | | | | | | Summary: This is an issue both with regular and Thin LTO. When we link together a DICompileUnit that is marked NoDebug (e.g when compiling with -g0 but applying an AutoFDO profile, which requires location tracking in the compiler) and a DICompileUnit with debug emission enabled, we can have failures during dwarf debug generation. Specifically, when we have inlined from the NoDebug compile unit into the debug compile unit, we can fail during construction of the abstract and inlined scope DIEs. This is because the SPMap does not include NoDebug CUs (they are skipped in the debug_compile_units_iterator). This patch fixes the failures by skipping locations from NoDebug CUs when extracting lexical scopes. Reviewers: dblaikie, aprantl Subscribers: mehdi_amini, llvm-commits Differential Revision: https://reviews.llvm.org/D29765 llvm-svn: 295384
* [IR] Fix some Clang-tidy modernize and Include What You Use warnings; other ↵Eugene Zelenko2017-02-1715-151/+228
| | | | | | minor fixes (NFC). llvm-svn: 295383
* [pdb] Add the ability to resolve TypeServer PDBs.Zachary Turner2017-02-1624-17/+513
| | | | | | | | | | | | | | Some PDBs or object files can contain references to other PDBs where the real type information lives. When this happens, all type indices in the original PDB are meaningless because their records are not there. With this patch we add the ability to pull type info from those secondary PDBs. Differential Revision: https://reviews.llvm.org/D29973 llvm-svn: 295382
* Use correct fix-it location for -Wblock-capture-autoreleasingAlex Lorenz2017-02-162-2/+31
| | | | | | | | | The '__autoreleasing' keyword should be inserted after the Objective-C pointer type. rdar://30123548 llvm-svn: 295381
* Properly set up the DeclContext for parameters of implicit deduction guides;Richard Smith2017-02-162-2/+15
| | | | | | this is needed for deferred instantiation of default arguments. llvm-svn: 295379
* [LSR] Prevent formula with SCEVAddRecExpr type of Reg from Sibling loopsWei Mi2017-02-162-0/+104
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In rL294814, we allow formula with SCEVAddRecExpr type of Reg from loops other than current loop. This is good for the case when induction variable of outerloop being used in expr in innerloop. But it is very bad to allow such Reg from sibling loop because we may need to add lsr.iv in other sibling loops when scev expanding those SCEVAddRecExpr type exprs. For the testcase below, one loop can be inserted with a bunch of lsr.iv because of LSR for other loops. // The induction variable j from a loop in the middle will have initial // value generated from previous sibling loop and exit value used by its // next sibling loop. void goo(long i, long j); long cond; void foo(long N) { long i = 0; long j = 0; i = 0; do { goo(i, j); i++; j++; } while (cond); i = 0; do { goo(i, j); i++; j++; } while (cond); i = 0; do { goo(i, j); i++; j++; } while (cond); i = 0; do { goo(i, j); i++; j++; } while (cond); i = 0; do { goo(i, j); i++; j++; } while (cond); i = 0; do { goo(i, j); i++; j++; } while (cond); } The fix is to only allow formula with SCEVAddRecExpr type of Reg from current loop or its parents. Differential Revision: https://reviews.llvm.org/D30021 llvm-svn: 295378
* Fix -Wunused-lambda-capture by removing some unused lambda capturesDavid Blaikie2017-02-161-2/+2
| | | | llvm-svn: 295373
* [MachinePipeliner] Remove redundant destructor. NFC.Benjamin Kramer2017-02-161-8/+1
| | | | llvm-svn: 295372
* [Hexagon] Start using regmasks on callsKrzysztof Parzyszek2017-02-1620-118/+272
| | | | | | All the cool targets are doing it... llvm-svn: 295371
* Change default TimerGroup singleton to use magic staticsErich Keane2017-02-161-16/+3
| | | | | | | | | | | TimerGroup was showing up on a leak in valigrind, and used some pretty complex code to implement a singleton. This patch replaces the implementation with a vastly simpler one. Differential Revision: https://reviews.llvm.org/D28367 llvm-svn: 295370
* Fix buildZachary Turner2017-02-162-2/+2
| | | | llvm-svn: 295369
* Finish breaking the dependency from Utility.Zachary Turner2017-02-1623-10529/+10612
| | | | | | Differential Revision: https://reviews.llvm.org/D29964 llvm-svn: 295368
* [RDF] Aggregate shadow phi uses into one cluster when propagating live infoKrzysztof Parzyszek2017-02-162-70/+68
| | | | llvm-svn: 295366
* Move specialization to try to fix the bots.Rafael Espindola2017-02-162-10/+13
| | | | | | | I cannot reproduce the issue locally, but for some reason some bots want to instantiate this from the header. llvm-svn: 295365
* [PGO] Suspend SIGKILL for PR_SET_PDEATHSIG in profile-writeRong Xu2017-02-164-0/+79
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: We found a nondeterministic behavior when doing online profile merging for multi-process applications. The application forks a sub-process and sub-process sets to get SIGKILL when the parent process exits, The first process gets the lock, and dumps the profile. The second one will mmap the file, do the merge and write out the file. Note that before the merged write, we truncate the profile. Depending on the timing, the child process might be terminated abnormally when the parent exits first. If this happens: (1) before the truncation, we will get the profile for the main process (2) after the truncation, and before write-out the profile, we will get 0 size profile. (3) after the merged write, we get merged profile. This patch temporarily suspend the SIGKILL for PR_SET_PDEATHSIG before profile-write and restore it after the write. This patch only applies to Linux system. Reviewers: davidxl Reviewed By: davidxl Subscribers: xur, llvm-commits Differential Revision: https://reviews.llvm.org/D29954 llvm-svn: 295364
* [X86][SSE] Add PR31309 test case (load-extend i32 to i128).Simon Pilgrim2017-02-161-0/+40
| | | | llvm-svn: 295363
* [ScopInfo] Rename MaxDisjunctions -> MaxDisjuncts [NFC]Tobias Grosser2017-02-161-8/+8
| | | | | | | There is only a single disjunction. However, we bound the number of 'disjuncts' in this disjunction. Name the variable accordingly. llvm-svn: 295362
* [tests] Fix some misspellings [NFC]Tobias Grosser2017-02-161-1/+1
| | | | llvm-svn: 295361
* [ScopInfo] Bound the number of disjuncts in contextTobias Grosser2017-02-162-0/+215
| | | | | | | | | Before this change wrapping range metadata resulted in exponential growth of the context, which made context construction of large scops very slow. Instead, we now just do not model the range information precisely, in case the number of disjuncts in the context has already reached a certain limit. llvm-svn: 295360
* AMDGPU: Remove llvm.AMDGPU.cube intrinsicMatt Arsenault2017-02-168-49/+27
| | | | llvm-svn: 295359
* AMDGPU: Remove llvm.AMDGPU.rsq intrinsicMatt Arsenault2017-02-163-15/+0
| | | | llvm-svn: 295358
* Re-apply r282920 "X86: Allow conditional tail calls in Win64 "leaf" ↵Hans Wennborg2017-02-163-8/+31
| | | | | | | | | | functions (PR26302)" The original commit was reverted in r283329 due to a miscompile in Chromium. That turned out to be the same issue as PR31257, which was fixed in r295262. llvm-svn: 295357
* [RDF] Differentiate between defining and clobbering nodesKrzysztof Parzyszek2017-02-164-13/+88
| | | | | | | | | | Defining nodes should not alias with one another, while clobbering nodes can. When pushing defs on stacks, push clobbers first, link non-clobbering defs, then push the defs. The data flow in a statement is now: uses -> clobbers -> defs. llvm-svn: 295356
* Update a couple of issue statusesMarshall Clow2017-02-161-3/+3
| | | | llvm-svn: 295355
* Refactor DebugHandlerBase a bit to common non-debug-having-function filteringDavid Blaikie2017-02-167-55/+61
| | | | llvm-svn: 295354
* InstCombine: Canonicalize fast fmuladd to fmul + faddMatt Arsenault2017-02-162-4/+20
| | | | llvm-svn: 295353
* Reindent the code to avoid an error with gcc:Sylvestre Ledru2017-02-161-35/+35
| | | | | | error: this ‘else’ clause does not guard... [-Werror=misleading-indentation] llvm-svn: 295352
* [RDF] Move normalize(RegisterRef) to PhysicalRegisterInfoKrzysztof Parzyszek2017-02-166-45/+36
| | | | | | Remove the duplicate from DFG and make some members of PRI private. llvm-svn: 295351
* [ScopInfo] Use uppercase variable name [NFC]Tobias Grosser2017-02-161-5/+5
| | | | llvm-svn: 295350
* [ScopInfo] Always derive upper and lower bounds for parametersTobias Grosser2017-02-162-14/+23
| | | | | | | | | | | | | | | | | | | | Commit r230230 introduced the use of range metadata to derive bounds for parameters, instead of just looking at the type of the parameter. As part of this commit support for wrapping ranges was added, where the lower bound of a parameter is larger than the upper bound: { 255 < p || p < 0 } However, at the same time, for wrapping ranges support for adding bounds given by the size of the containing type has acidentally been dropped. As a result, the range of the parameters was not guaranteed to be bounded any more. This change makes sure we always add the bounds given by the size of the type and then additionally add bounds based on signed wrapping, if available. For a parameter p with a type size of 32 bit, the valid range is then: { -2147483648 <= p <= 2147483647 and (255 < p or p < 0) } llvm-svn: 295349
* [sanitizers] DefaultSymbolizer should not be destroyed as as symbolizerVitaly Buka2017-02-161-2/+3
| | | | | | can be accessed after the static destroyed. llvm-svn: 295348
* x86 interrupt calling convention: only save xmm registers if the target ↵Andrea Di Biagio2017-02-163-2/+27
| | | | | | | | | | | | | | | | | | supports SSE The existing code always saves the xmm registers for 64-bit targets even if the target doesn't support SSE (which is common for kernels). Thus, the compiler inserts movaps instructions which lead to CPU exceptions when an interrupt handler is invoked. This commit fixes this bug by returning a register set without xmm registers from getCalleeSavedRegs and getCallPreservedMask for such targets. Patch by Philipp Oppermann. Differential Revision: https://reviews.llvm.org/D29959 llvm-svn: 295347
* [x86] add more tests of select of constants; NFCSanjay Patel2017-02-161-10/+168
| | | | llvm-svn: 295346
* NPL: Fix single step workaroundPavel Labath2017-02-163-10/+13
| | | | | | | | | | | | While refactoring the code in r293046 I made a very basic error - relying on destructor side-effects of a copyable object. Fix that and make the object non-copyable. This fixes the tests on the platforms that need this workaround, but unfortunately we don't have a way to make a more platform-agnostic test right now. llvm-svn: 295345
* Run-time library part of OpenMP 5.0 task reduction implementation.Andrey Churbanov2017-02-164-1/+602
| | | | | | | | | Added test kmp_task_reduction_nest.cpp which has an example of possible compiler codegen. Differential Revision: https://reviews.llvm.org/D29600 llvm-svn: 295343
* [lldb] Add support for "external" reports in ThreadSanitizer LLDB pluginKuba Mracek2017-02-161-2/+31
| | | | | | | | TSan now has the ability to report races on "external" object, i.e. any library class/object that has read-shared write-exclusive threading semantics. The detection and reporting work almost out of the box, but TSan can now provide the type of the object (as a string). This patch implements this into LLDB. Differential Revision: https://reviews.llvm.org/D30024 llvm-svn: 295342
OpenPOWER on IntegriCloud