summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [X86][AVX512DQVL] Add support for v2i64 -> v2f32 SINT_TO_FP/UINT_TO_FP loweringSimon Pilgrim2016-11-243-14/+27
| | | | llvm-svn: 287877
* [X86][AVX512DQVL] Add v2i64 -> v2f32 + zero codegen testsSimon Pilgrim2016-11-241-0/+34
| | | | llvm-svn: 287876
* [x86] Fixing PR28755 by precomputing the address used in CMPXCHG8BNikolai Bozhenov2016-11-244-1/+98
| | | | | | | | | | | | | | | | | | The bug arises during register allocation on i686 for CMPXCHG8B instruction when base pointer is needed. CMPXCHG8B needs 4 implicit registers (EAX, EBX, ECX, EDX) and a memory address, plus ESI is reserved as the base pointer. With such constraints the only way register allocator would do its job successfully is when the addressing mode of the instruction requires only one register. If that is not the case - we are emitting additional LEA instruction to compute the address. It fixes PR28755. Patch by Alexander Ivchenko <alexander.ivchenko@intel.com> Differential Revision: https://reviews.llvm.org/D25088 llvm-svn: 287875
* [x86] Minor refactoring of X86TargetLowering::EmitInstrWithCustomInserterNikolai Bozhenov2016-11-241-10/+6
| | | | | | | | | | Move the definitions of three variables out of the switch. Patch by Alexander Ivchenko <alexander.ivchenko@intel.com> Differential Revision: https://reviews.llvm.org/D25192 llvm-svn: 287874
* [x86] Rewrite getAddressFromInstr helper functionNikolai Bozhenov2016-11-241-17/+18
| | | | | | | | | | | | | - It does not modify the input instruction - Second operand of any address is always an Index Register, make sure we actually check for that, instead of a check for an immediate value Patch by Alexander Ivchenko <alexander.ivchenko@intel.com> Differential Revision: https://reviews.llvm.org/D24938 llvm-svn: 287873
* [PPC] support for arithmetic builtins in the FEEhsan Amiri2016-11-245-9/+380
| | | | | | | | | | | | | | | | | | | | (commit again after fixing the buildbot failures) This adds various overloads of the following builtins to altivec.h: vec_neg vec_nabs vec_adde vec_addec vec_sube vec_subec vec_subc Note that for vec_sub builtins on 32 bit integers, the semantics is similar to what ISA describes for instructions like vsubecuq that work on quadwords: the first operand is added to the one's complement of the second operand. (As opposed to two's complement which I expected). llvm-svn: 287872
* [AVR] Mark the 'select-must-add-unconditional-jump' test as 'XFAIL'Dylan McKay2016-11-241-0/+1
| | | | llvm-svn: 287871
* [X86] Generalize CVTTPD2DQ/CVTTPD2UDQ and CVTDQ2PD/CVTUDQ2PD opcodes. NFCI Simon Pilgrim2016-11-246-58/+54
| | | | | | | | | | Replace the CVTTPD2DQ/CVTTPD2UDQ and CVTDQ2PD/CVTUDQ2PD opcodes with general versions. This is an initial step towards similar FP_TO_SINT/FP_TO_UINT and SINT_TO_FP/UINT_TO_FP lowering to AVX512 CVTTPS2QQ/CVTTPS2UQQ and CVTQQ2PS/CVTUQQ2PS with illegal types. Differential Revision: https://reviews.llvm.org/D27072 llvm-svn: 287870
* [ELF] Add terminating sentinel .ARM.exidx table entryPeter Smith2016-11-2413-39/+123
| | | | | | | | | | | | | | | | | | | | | The .ARM.exidx table has an entry for each function with the first entry giving the start address of the function, the table is sorted in ascending order of function address. Given a PC value, the unwinder will search the table for the entry that contains the PC value. If the table entry happens to be the last, the range of the addresses that the final unwinding table describes will extend to the end of the address space. To prevent an incorrect address outside the address range of the program matching the last entry we follow ld.bfd's example and add a sentinel EXIDX_CANTUNWIND entry at the end of the table. This gives the final real table entry an upper bound. In addition the llvm libunwind unwinder currently depends on the presence of a sentinel entry (PR31091). Differential revision: https://reviews.llvm.org/D26977 llvm-svn: 287869
* Reverting wrong diffRoger Ferrer Ibanez2016-11-242-14/+2
| | | | | | I managed to confuse me with two reviews of the same thing and ended commiting the wrong one. llvm-svn: 287868
* Attempt to fix freebsd build after r287864Pavel Labath2016-11-242-8/+10
| | | | | | | | | | the chrono library there uses long long as the underlying chrono type, but defines int64_t as long (or the other way around, I am not sure). In any case, this caused the implicit conversion to not trigger. This should address that. Also fix up the relevant unit test. llvm-svn: 287867
* Protect tests for std::uninitialized_{copy,fill} under libcpp-no-exceptionsRoger Ferrer Ibanez2016-11-244-8/+44
| | | | | | | | Skip tests that expect an exception be thrown. Differential Revision: https://reviews.llvm.org/D26606 llvm-svn: 287866
* Protect std::string tests under libcpp-no-exceptionsRoger Ferrer Ibanez2016-11-242-2/+14
| | | | | | | | | Skip tests that expect an exception be thrown and/or disable unreachable catch handlers. Differential Revision: https://reviews.llvm.org/D26608 llvm-svn: 287865
* Introduce chrono to more gdb-remote functionsPavel Labath2016-11-248-105/+90
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This replaces the usage of raw integers with duration classes in the gdb-remote packet management functions. The values are still converted back to integers once they go into the generic Communication class -- that I am leaving to a separate change. The changes are mostly straight-forward (*), the only tricky part was representation of infinite timeouts. Currently, we use UINT32_MAX to denote infinite timeout. This is not well suited for duration classes, as they tend to do arithmetic on the values, and the identity of the MAX value can easily get lost (e.g. microseconds(seconds(UINT32_MAX)).count() != UINT32_MAX). We cannot use zero to represent infinity (as Listener classes do) because we already use it to do non-blocking polling reads. For this reason, I chose to have an explicit value for infinity. The way I achieved that is via llvm::Optional, and I think it reads quite natural. Passing llvm::None as "timeout" means "no timeout", while passing zero means "poll". The only tricky part is this breaks implicit conversions (seconds are implicitly convertible to microseconds, but Optional<seconds> cannot be easily converted into Optional<microseconds>). For this reason I added a special class Timeout, inheriting from Optional, and enabling the necessary conversions one would normally expect. (*) The other tricky part was GDBRemoteCommunication::PopPacketFromQueue, which was needlessly complicated. I've simplified it, but that one is only used in non-stop mode, and so is untested. Reviewers: clayborg, zturner, jingham Subscribers: lldb-commits Differential Revision: https://reviews.llvm.org/D26971 llvm-svn: 287864
* [clang-move] Enable dump all declarations in old header.Haojian Wu2016-11-244-135/+279
| | | | | | | | | | | | | | | | | | | Summary: * Add -dump_dels option to dump all declarations from old header. It will allow clang-move used as a frontend to get declarations from header. Further more, this will make debugging stuff easier. Currently only class/function types are supported. * Refactoring code a little bit by creating a ClangMoveContext which holds all options for ClangMoveTool, which can simplify the code in some degree. Reviewers: ioeric Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D27059 llvm-svn: 287863
* Remove \x13 (^S) character that was likely added by mistake.Adrian Kuegel2016-11-241-1/+1
| | | | | | | | | r287386 added a \x13 character inside a string literal. Most likely this was by mistake, so remove it. Differential Revision: https://reviews.llvm.org/D26973 llvm-svn: 287862
* Patch for lldb bug 26322 “core load hangs”Howard Hellyer2016-11-244-0/+0
| | | | | | Correct 0 byte core files uploaded by arc. llvm-svn: 287861
* [ELF] - Removed unused method. NFC.George Rimar2016-11-241-1/+0
| | | | llvm-svn: 287860
* [ASTDumper] Add some more character escapes for convenience.Benjamin Kramer2016-11-242-4/+7
| | | | llvm-svn: 287859
* Patch for lldb bug 26322 “core load hangs”Howard Hellyer2016-11-2415-2/+477
| | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This patch changes the way ProcessElfCore.cpp handles signal information. The patch changes ProcessElfCore.cpp to use the signal from si_signo in SIGINFO notes in preference to the value of cursig in PRSTATUS notes. The value from SIGINFO seems to be more thread specific. The value from PRSTATUS is usually the same for all threads even if only one thread received a signal. If it cannot find any SIGINFO blocks it reverts to the old behaviour and uses the value from cursig in PRSTATUS. If after that no thread appears to have been stopped it forces the status of the first thread to be SIGSTOP to prevent lldb hanging waiting for any thread from the core file to change state. The order is: - If one or more threads have a non-zero si_signo in SIGINFO that will be used. - If no threads had a SIGINFO block with a non-zero si_signo set all threads signals to the value in cursig in their PRSTATUS notes. - If no thread has a signal set to a non-zero value set the signal for only the first thread to SIGSTOP. This resolves two issues. The first was identified in bug 26322, the second became apparent while investigating this problem and looking at the signal values reported for each thread via “thread list”. Firstly lldb is able to load core dumps generated by gcore where each thread has a SIGINFO note containing a signal number but cursig in the PRSTATUS block for each thread is 0. Secondly if a SIGINFO note was found the “thread list” command will no longer show the same signal number for all threads. At the moment if a process crashes, for example with SIGILL, all threads will show “stop reason = signal SIGILL”. With this patch only the thread that executed the illegal instruction shows that stop reason. The other threads show “stop reason = signal 0”. Reviewers: jingham, clayborg Subscribers: sas, labath, lldb-commits Differential Revision: https://reviews.llvm.org/D26676 llvm-svn: 287858
* [CommandLine] Remove redundant initializers for StringRef membersMalcolm Parsons2016-11-241-4/+4
| | | | | | | | | | | | Summary: The default constructor for a StringRef stores an empty string. Reviewers: beanz, zturner Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D27067 llvm-svn: 287857
* TableGen: Allow signed immediates for instruction aliasesJacob Baungard Hansen2016-11-241-1/+1
| | | | | | | | | | | | Patch by Daniel Cederman. Reviewers: stoklund, arsenm Subscribers: arsenm, llvm-commits Differential Revision: https://reviews.llvm.org/D27046 llvm-svn: 287856
* [AVX-512] Fix some mask shuffle tests to actually test the case they were ↵Craig Topper2016-11-241-8/+12
| | | | | | supposed to test. llvm-svn: 287854
* [AVX-512] Move a 16 x float shuffle test to the v16 test file and add an ↵Craig Topper2016-11-242-14/+18
| | | | | | integer variant. llvm-svn: 287853
* Remove comments (NFC)Kelvin Li2016-11-241-1509/+0
| | | | | | Differential Revision: https://reviews.llvm.org/D27006 llvm-svn: 287852
* Make these tests work more reliably with Release builds.Douglas Yung2016-11-242-761/+761
| | | | | | Differential Revision: https://reviews.llvm.org/D26827 llvm-svn: 287851
* Update comment.Rui Ueyama2016-11-241-2/+2
| | | | llvm-svn: 287850
* Remove HasError and use ErrorCount instead.Rui Ueyama2016-11-247-17/+13
| | | | | | HasError was always true if ErrorCount > 0, so we can use ErrorCount instead. llvm-svn: 287849
* Fix a comparison of integers of different signs warning.Taras Tsugrii2016-11-241-1/+1
| | | | | | | | | | source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp:403:21: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare] for (int i = 0; i < llvm::array_lengthof (magicks); i++) ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Differential Revision: https://reviews.llvm.org/D27081 llvm-svn: 287848
* Spelling.Joerg Sonnenberger2016-11-241-1/+1
| | | | llvm-svn: 287847
* Object: Add IRObjectFile::getTargetTriple().Peter Collingbourne2016-11-243-8/+6
| | | | | | | | This lets us remove a use of IRObjectFile::getModule() in llvm-nm. Differential Revision: https://reviews.llvm.org/D27074 llvm-svn: 287846
* Object: Simplify the IRObjectFile symbol iterator implementation.Peter Collingbourne2016-11-242-90/+34
| | | | | | | | | | | | | | Change the IRObjectFile symbol iterator to be a pointer into a vector of PointerUnions representing either IR symbols or asm symbols. This change is in preparation for a future change for supporting multiple modules in an IRObjectFile. Although it causes an increase in memory consumption, we can deal with that issue separately by introducing a bitcode symbol table. Differential Revision: https://reviews.llvm.org/D26928 llvm-svn: 287845
* AMDGPU: Preserve m0 value when spillingMatt Arsenault2016-11-242-5/+104
| | | | llvm-svn: 287844
* TRI: Add hook to pass scavenger during frame eliminationMatt Arsenault2016-11-244-6/+31
| | | | | | | | | | | | The scavenger was not passed if requiresFrameIndexScavenging was enabled. I need to be able to test for the availability of an unallocatable register here, so I can't create a virtual register for it. It might be better to just always use the scavenger and stop creating virtual registers. llvm-svn: 287843
* AMDGPU: Remove m0 spilling codeMatt Arsenault2016-11-241-37/+3
| | | | | | Since m0 isn't allocatable it should never be spilled anymore. llvm-svn: 287842
* AMDGPU: Make m0 unallocatableMatt Arsenault2016-11-2413-60/+73
| | | | | | | | | | | m0 may need to be written for spill code, so we don't want general code uses relying on the value stored in it. This introduces a few code quality regressions where copies from m0 are not coalesced into copies of a copy of m0. llvm-svn: 287841
* [lib/LTO] Rename few instances of Lto to LTO.Davide Italiano2016-11-241-6/+6
| | | | llvm-svn: 287840
* Rely on a single DWARF version instead of having two copiesGreg Clayton2016-11-237-16/+24
| | | | | | | | This patch makes AsmPrinter less reliant on DwarfDebug by relying on the DWARF version in the AsmPrinter's MCStreamer's MCContext. This allows us to remove the redundant DWARF version from DwarfDebug. It also lets us change code that used to access the AsmPrinter's DwarfDebug just to get to the DWARF version by changing the DWARF version accessor on AsmPrinter so that it grabs the version from its MCStreamer's MCContext. Differential Revision: https://reviews.llvm.org/D27032 llvm-svn: 287839
* [DebugInfo] Fix some Clang-tidy modernize-use-default and Include What You ↵Eugene Zelenko2016-11-2319-126/+167
| | | | | | | | Use warnings; other minor fixes (NFC). Per Zachary Turner and Mehdi Amini suggestion to make only post-commit reviews. llvm-svn: 287838
* [COFF] Add DebugInfoCodeView dependencyRui Ueyama2016-11-231-0/+1
| | | | | | | | | | | | | rL287555 introduces a link error when building with BUILD_SHARED_LIBS: undefined reference to llvm::codeview::CVSymbolDumper::dump(), and more... The functions are available in libDebugInfoCodeView, from LLVM. Patch by Visoiu Mistrih Francis! llvm-svn: 287837
* Set default entry point to .text if no entry point is found.Rui Ueyama2016-11-232-15/+51
| | | | | | | | | Previously, if a symbol specified by -e or ENTRY() is not found, we didn't set entry point address. That is incompatible with GNU because GNU linkers set the first address of .text to entry. This patch implement that behavior. llvm-svn: 287836
* [X86][SSE] Add awareness of (v)cvtpd2dq and vcvtpd2udq implicit zeroing of ↵Simon Pilgrim2016-11-234-25/+30
| | | | | | | | upper 64-bits of xmm result We've already added the equivalent for (v)cvttpd2dq (rL284459) and vcvttpd2udq llvm-svn: 287835
* [IR] Fix some Clang-tidy modernize-use-default, modernize-use-equal-delete ↵Eugene Zelenko2016-11-2312-78/+241
| | | | | | | | and Include What You Use warnings; other minor fixes (NFC). Per Zachary Turner and Mehdi Amini suggestion to make only post-commit reviews. llvm-svn: 287834
* [test] Use a helper macro to refer to MAP_ANON (NFC)Vedant Kumar2016-11-231-2/+8
| | | | | | | Some of our internal bots use old SDK's which don't define MAP_ANON. Use a helper macro to pass the right flag into mmap(). llvm-svn: 287833
* [ELF][MIPS] Fix handling of _gp/_gp_disp/__gnu_local_gp symbolsSimon Atanasyan2016-11-237-22/+86
| | | | | | | | | | | | | | | | | | | | | | | | Offset between beginning of a .got section and _gp symbols used in MIPS GOT relocations calculations. Usually the expression looks like VA + Offset - GP, where VA is the .got section address, Offset - offset of the GOT entry, GP - offset between .got and _gp. Also there two "magic" symbols _gp_disp and __gnu_local_gp which hold the offset mentioned above. These symbols might be referenced by MIPS relocations. Now the linker always defines _gp symbol and uses hardcoded value for its initialization. So offset between .got and _gp is 0x7ff0. The _gp_disp and __gnu_local_gp defined if required and initialized by 0x7ff0. In fact that is not correct because _gp symbol might be defined by a linker script and holds arbitrary value. In that case we need to use this value in relocation calculation and initialize _gp_disp and __gnu_local_gp properly. The patch fixes the problem and completes fixing the bug #30311. https://llvm.org/bugs/show_bug.cgi?id=30311 Differential revision: https://reviews.llvm.org/D27036 llvm-svn: 287832
* [SelectionDAG] Early-out in TargetLowering::expandMUL (NFC)Nicolai Haehnle2016-11-231-77/+80
| | | | | | | | | | | | Summary: Reduce indentation level; preparation for D24956. Reviewers: efriedma Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D27063 llvm-svn: 287831
* Remove trailing whitespace.Rui Ueyama2016-11-231-1/+1
| | | | llvm-svn: 287830
* [libcxx] [test] D27027: Strip trailing whitespace.Stephan T. Lavavej2016-11-2358-91/+91
| | | | llvm-svn: 287829
* [libcxx] [test] D27026: Fix copy-paste silliness; ULL can't ever be 32-bit.Stephan T. Lavavej2016-11-231-1/+1
| | | | llvm-svn: 287828
* [libcxx] [test] D27020: Fix MSVC warning C4245 "conversion from 'X' to 'Y', ↵Stephan T. Lavavej2016-11-234-4/+4
| | | | | | | | | | signed/unsigned mismatch", part 7/12. When initializing unsigned integers to their maximum values, change "const T M(~0);" to "const T M(static_cast<T>(-1));". ~0 and -1 are equivalent, but I consider the -1 form to be significantly clearer (and more consistent with other tests). llvm-svn: 287827
OpenPOWER on IntegriCloud