summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [PPC] When restoring R30 (PIC base pointer), mark it as <def>Krzysztof Parzyszek2017-05-042-2/+31
| | | | | | | | | This happened on the PPC32/SVR4 path and was discovered when building FreeBSD on PPC32. It was a typo-class error in the frame lowering code. This fixes PR26519. llvm-svn: 302183
* Fix test failure with GCC 4.9Eric Fiselier2017-05-041-0/+4
| | | | llvm-svn: 302182
* Change Appveyor to download Clang from llvm.org instead of my private serverEric Fiselier2017-05-042-10/+6
| | | | llvm-svn: 302181
* Don't return an invalid line table if the DW_AT_stmt_list value is not in ↵Greg Clayton2017-05-041-0/+4
| | | | | | the .debug_line section. llvm-svn: 302180
* [ms-inline-asm] Use the frontend size only for ambiguous instructionsReid Kleckner2017-05-049-155/+255
| | | | | | | | | | | | | | | | | | This avoids problems on code like this: char buf[16]; __asm { movups xmm0, [buf] mov [buf], eax } The frontend size in this case (1) is wrong, and the register makes the instruction matching unambiguous. There are also enough bytes available that we shouldn't complain to the user that they are potentially using an incorrectly sized instruction to access the variable. Supersedes D32636 and D26586 and fixes PR28266 llvm-svn: 302179
* [InstSimplify] move logic-of-icmps helper functions; NFCSanjay Patel2017-05-041-80/+80
| | | | | | | | Putting these next to each other should make it easier to see what's missing from each side. Patch to plug one of those holes should be posted soon. llvm-svn: 302178
* Re-apply r302108, "IR: Use pointers instead of GUIDs to represent edges in ↵Peter Collingbourne2017-05-0415-223/+218
| | | | | | | | the module summary. NFCI." with a fix for the clang backend. llvm-svn: 302176
* Fix a typo.Michael Zolotukhin2017-05-041-2/+2
| | | | llvm-svn: 302175
* [InstSimplify] add tests for or-of-casted-icmps; NFCSanjay Patel2017-05-041-0/+58
| | | | llvm-svn: 302174
* [NewGVN] Remove unneeded newline and format assertions. NFCI.Davide Italiano2017-05-041-5/+4
| | | | llvm-svn: 302173
* Add markup for libc++ dylib availabilityMehdi Amini2017-05-04174-126/+1060
| | | | | | | | | | | | | | | Libc++ is used as a system library on macOS and iOS (amongst others). In order for users to be able to compile a binary that is intended to be deployed to an older version of the platform, clang provides the availability attribute <https://clang.llvm.org/docs/AttributeReference.html#availability>_ that can be placed on declarations to describe the lifecycle of a symbol in the library. See docs/DesignDocs/AvailabilityMarkup.rst for more information. Differential Revision: https://reviews.llvm.org/D31739 llvm-svn: 302172
* [APInt] Reduce number of allocations involved in multiplying. Reduce worst ↵Craig Topper2017-05-041-110/+10
| | | | | | | | | | | | | | | | | | | | | | case multiply size Currently multiply is implemented in operator*=. Operator* makes a copy and uses operator*= to modify the copy. Operator*= itself allocates a temporary buffer to hold the multiply result as it computes it. Then copies it to the buffer in *this. Operator*= attempts to bound the size of the result based on the number of active bits in its inputs. It also has a couple special cases to handle 0 inputs without any memory allocations or multiply operations. The best case is that it calculates a single word regardless of input bit width. The worst case is that it calculates the a 2x input width result and drop the upper bits. Since operator* uses operator*= it incurs two allocations, one for a copy of *this and one for the temporary allocation. Neither of these allocations are kept after the method operation is done. The main usage in the backend appears to be ConstantRange::multiply which uses operator* rather than operator*=. This patch moves the multiply operation to operator* and implements operator*= using it. This avoids the copy in operator*. operator* now allocates a result buffer sized the same width as its inputs no matter what. This buffer will be used as the buffer for the returned APInt. Finally, we reuse tcMultiply to implement the multiply operation. This function is capable of not calculating additional upper words that will be discarded. This change does lose the special optimizations for the inputs using less words than their size implies. But it also removed the getActiveBits calls from all multiplies. If we think those optimizations are important we could look at providing additional bounds to tcMultiply to limit the computations. Differential Revision: https://reviews.llvm.org/D32830 llvm-svn: 302171
* [PM] Add ProfileSummaryAnalysis as a required pass in the new pipeline.Easwaran Raman2017-05-043-3/+15
| | | | | | Differential revision: https://reviews.llvm.org/D32768 llvm-svn: 302170
* [Lexicon] Add BDCEBrian Gesiak2017-05-041-0/+7
| | | | | | | | | | | | Summary: Add an entry to the Lexicon for "BDCE." Reviewers: jmolloy, hfinkel Reviewed By: jmolloy Differential Revision: https://reviews.llvm.org/D31861 llvm-svn: 302169
* Use lgamma_r instead of lgamma in binomial_distribution, because freakin' ↵Marshall Clow2017-05-041-4/+8
| | | | | | POSIX took a perfectly fine call and made it not thread safe. llvm-svn: 302168
* Add accidentally deleted testcase back.Adrian Prantl2017-05-041-0/+30
| | | | llvm-svn: 302167
* Cleanup tests to not share a DISubprogram between multiple Functions.Adrian Prantl2017-05-0410-149/+186
| | | | | | rdar://problem/31926379 llvm-svn: 302166
* [test-release] Status update *before* long gzipRenato Golin2017-05-041-5/+5
| | | | llvm-svn: 302165
* [clang-tidy] fix readability-implicit-bool-cast false positive with xorAlexander Kornienko2017-05-042-15/+20
| | | | llvm-svn: 302164
* [ScopBuilder] Add missing semicolon after LLVM_FALLTHROUGH.Michael Kruse2017-05-041-1/+1
| | | | | | It was forgotten in r302157. llvm-svn: 302163
* [test] Name the local variable in the C1XX implementation of DoNotOptmizeCasey Carter2017-05-041-1/+2
| | | | | | Differential Revision: https://reviews.llvm.org/D32510 llvm-svn: 302162
* [clang-tidy] fix readability-implicit-bool-cast false alarm on |=, &=Alexander Kornienko2017-05-042-25/+28
| | | | llvm-svn: 302161
* [clang-tidy] Code cleanup, (almost) NFC (*).Alexander Kornienko2017-05-044-153/+96
| | | | | | | (*) Printed types of member pointers don't use elaborated type specifiers (`int struct S::*` -> `int S::*`). llvm-svn: 302160
* [Tooling] add a createReplacement overload for StringRefAlexander Kornienko2017-05-041-0/+7
| | | | llvm-svn: 302159
* [test] variant: enable constexpr construction tests on MSVC STLCasey Carter2017-05-045-4/+58
| | | | | | | * Add a new macro _MSVC_STL_VER to detect when the MSVC STL is being tested * Workaround C1XX __is_trivially_copyable bug llvm-svn: 302158
* Introduce VirtualUse. NFC.Michael Kruse2017-05-045-75/+525
| | | | | | | | | | | | | | | | | | | If a ScopStmt references a (scalar) value, there are multiple possibilities where this value can come. The decision about what kind of use it is must be handled consistently at different places, which can be error-prone. VirtualUse is meant to centralize the handling of the different types of value uses. This patch makes ScopBuilder and CodeGeneration use VirtualUse. This already helps to show inconsistencies with the value handling. In order to keep this patch NFC, exceptions to the general rules are added. These might be fixed later if they turn to problems. Overall, this should result in fewer post-codegen IR-verification errors, but instead assertion failures in `getNewValue` that are closer to the actual error. Differential Revision: https://reviews.llvm.org/D32667 llvm-svn: 302157
* clang-format: [JS] exponentiation operatorMartin Probst2017-05-043-0/+18
| | | | | | | | | | | | Summary: While its precedence should be higher than multiplicative, LLVM does not have a level for that, so for the time being just treat it as multiplicative. Reviewers: djasper Subscribers: cfe-commits, klimek Differential Revision: https://reviews.llvm.org/D32864 llvm-svn: 302156
* Reduce code duplication. NFC.Rafael Espindola2017-05-044-12/+12
| | | | llvm-svn: 302155
* [globalisel][tablegen] Add several GINodeEquiv's for operators that do not ↵Daniel Sanders2017-05-041-10/+28
| | | | | | | | | | | | | | | | | | | require additional support. Summary: As of this patch, 350 out of 3938 rules are currently imported. Depends on D32229 Reviewers: qcolombet, kristof.beyls, rovka, t.p.northover, ab, aditya_nandakumar Reviewed By: ab Subscribers: dberris, llvm-commits, igorb Differential Revision: https://reviews.llvm.org/D32275 llvm-svn: 302154
* [DAGCombine] Transform (fadd A, (fmul B, -2.0)) -> (fsub A, (fadd B, B)).Chad Rosier2017-05-043-4/+100
| | | | | | Differential Revision: http://reviews.llvm.org/D32596 llvm-svn: 302153
* [ASAN] Add interceptor for __longjmp_chkPeter Wu2017-05-043-0/+67
| | | | | | | | | | | | | | | | | Summary: glibc on Linux calls __longjmp_chk instead of longjmp (or _longjmp) when _FORTIFY_SOURCE is defined. Ensure that an ASAN-instrumented program intercepts this function when a system library calls it, otherwise the stack might remain poisoned and result in CHECK failures and false positives. Fixes https://github.com/google/sanitizers/issues/721 Reviewed By: eugenis Differential Revision: https://reviews.llvm.org/D32408 llvm-svn: 302152
* DiagnosticsEngine should clear DelayedDiagID before reporting theAlex Lorenz2017-05-043-5/+36
| | | | | | | | | | | | | | | | | | | | | delayed diagnostic This fix avoids an infinite recursion that was uncovered in one of our internal tests by r301992. The testcase is the most reduced version of that auto-generated test. This is an improved version of the reverted commit r302037. The previous fix actually managed to expose another subtle bug whereby `fatal_too_many_errors` error was reported twice, with the second report setting the `FatalErrorOccurred` flag. That prevented the notes that followed the diagnostic the caused `fatal_too_many_errors` to be emitted. This commit ensures that notes that follow `fatal_too_many_errors` but that belong to the diagnostic that caused `fatal_too_many_errors` won't be emitted by setting the `FatalErrorOccurred` when emitting `fatal_too_many_errors`. rdar://31962618 llvm-svn: 302151
* [X86][AVX512] Fix VPABSD file checksSimon Pilgrim2017-05-041-6/+6
| | | | | | Fix capitalization and string matching llvm-svn: 302150
* [X86][SSE] Add i686 triple tests for partial vector and re-associationSimon Pilgrim2017-05-042-61/+135
| | | | llvm-svn: 302149
* Refactoring with range-based for, NFCKrzysztof Parzyszek2017-05-043-119/+94
| | | | | | | | Patch by Wei-Ren Chen. Differential Revision: https://reviews.llvm.org/D32682 llvm-svn: 302148
* [compiler-rt][mips] Add support for quad precision builtins for mips64Simon Dardis2017-05-049-23/+38
| | | | | | | | | | | | | | Match the builtins that GCC provides for IEEE754 quad precision on MIPS64. Also, enable building them with clang as PR20098 is resolved. Disable tests for xf and xc modes as MIPS doesn't support that mode in hardware or software. Reviewers: slthakur Differential Revision: https://reviews.llvm.org/D32794 llvm-svn: 302147
* [SystemZ] Make copyPhysReg() add impl-use operands of super reg.Jonas Paulsson2017-05-042-1/+75
| | | | | | | | | When a 128 bit COPY is lowered into two instructions, an impl-use operand of the super-reg should be added to each new instruction in case one of the sub-regs is undefined. Review: Ulrich Weigand llvm-svn: 302146
* [X86][SSE] Add i686 triple tests for PBLENDW commutationSimon Pilgrim2017-05-041-2/+3
| | | | llvm-svn: 302145
* [X86][AVX1] Regenerate checks and add i686 triple tests for folded logical opsSimon Pilgrim2017-05-041-12/+71
| | | | llvm-svn: 302144
* Add support of the next Ubuntu (Ubuntu 17.10 - Artful Aardvark)Sylvestre Ledru2017-05-042-2/+4
| | | | llvm-svn: 302143
* [CMake] Remove POLLY_TEST_DIRECTORIES.Michael Kruse2017-05-041-22/+0
| | | | | | | | The test subdirectory POLLY_TEST_DIRECTORIES was heavily outdated and only used in out-of-LLVM-tree builds (to generate polly-test-${subdir} targets). llvm-svn: 302142
* Revert "IR: Use pointers instead of GUIDs to represent edges in the module ↵Eric Liu2017-05-041-2/+2
| | | | | | | | summary. NFCI." This reverts commit r302108. llvm-svn: 302141
* Revert "IR: Use pointers instead of GUIDs to represent edges in the module ↵Eric Liu2017-05-0413-208/+221
| | | | | | | | | | summary. NFCI." This reverts commit r302108. This causes crash in clang bootstrap with LTO. Contacted the auther in the original commit. llvm-svn: 302140
* [LLDB][MIPS] Fix TestStepOverBreakpoint.py failure.Nitesh Jain2017-05-0411-5/+70
| | | | | | | | | | Reviewers: jingham, labath Subscribers: jaydeep, bhushan, lldb-commits, slthakur Differential Revision: https://reviews.llvm.org/D32168 llvm-svn: 302139
* [mips][XRay] Use the base version of emitXRayTableSimon Dardis2017-05-041-34/+1
| | | | | | | | | | | | | | Follow up rL290858 by removing the MIPS specific version of XRayTable emission in favour of the basic version. This resolves a buildbot failure where the ELF sections were malformed causing the linker to reject the object files with xray related sections. Reviewers: dberris, slthakur Differential Revision: https://reviews.llvm.org/D32808 llvm-svn: 302138
* [ArgPromotion] Fix a truncated variableMartin Storsjo2017-05-041-1/+1
| | | | | | | | | | | | This fixes a regression since SVN rev 273808 (which was supposed to not change functionality). The regression caused miscompilations (noted in the wild when targeting AArch64) on platforms with 32 bit long. Differential Revision: https://reviews.llvm.org/D32850 llvm-svn: 302137
* [Index] The relation between the declarations in templateAlex Lorenz2017-05-042-30/+27
| | | | | | | | | | specializations that 'override' declarations in the base template should use the 'specializationOf' relation instead of 'specializationOf | overrideOf'. The indexer relations are meant to be orthogonal, so 'specializationOf' is better than the combined relation. llvm-svn: 302136
* [LLVM][inline-asm][Altmacor] Altmacro string delimiter '<..>'Michael Zuckerman2017-05-043-4/+140
| | | | | | | | | | | | | | | | | | | | | | | | In this patch, I introduce a new altmacro string delimiter. This review is the second review in a series of four reviews. (one for each altmacro feature: LOCAL, string delimiter, string '!' escape sign and absolute expression as a string '%' ). In the alternate macro mode, you can delimit strings with matching angle brackets <..> when using it as a part of calling macro arguments. As described in the https://sourceware.org/binutils/docs-2.27/as/Altmacro.html "<string> You can delimit strings with matching angle brackets." assumptions: 1. If an argument begins with '<' and ends with '>'. The argument is considered as a string. 2. Except adding new string mark '<..>', a regular macro behavior is expected. 3. The altmacro cannot affect the regular less/greater behavior. 4. If a comma is present inside an angle brackets it considered as a character and not as a separator. Differential Revision: https://reviews.llvm.org/D32701 llvm-svn: 302135
* [ScopDetection] Check for already known required-invariant loads [NFC]Tobias Grosser2017-05-041-0/+8
| | | | | | | | | | | For certain test cases we spent over 50% of the scop detection time in checking if a load is likely invariant. We can avoid most of these checks by testing early on if a load is expected to be invariant. Doing this reduces scop-detection time on a large benchmark from 52 seconds to just 25 seconds. No functional change is expected. llvm-svn: 302134
* MainLoop: Add unit testsPavel Labath2017-05-044-105/+229
| | | | | | | | | | | | | | | | | | | | Summary: This adds a couple of unit tests to the MainLoop class. To get the kqueue based version of the signal handling passing, I needed to modify the implementation a bit to make the queue object persistent. Otherwise, only the signals which are send during the Run call would get processed, which did not match the ppoll behaviour. I also took the opportunity to remove the ForEach template functions and replace them with something more reasonable. Reviewers: beanz, eugene Subscribers: lldb-commits, mgorny Differential Revision: https://reviews.llvm.org/D32753 llvm-svn: 302133
OpenPOWER on IntegriCloud