summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix Bug 30978 by emitting cv file checksums.Eric Beckmann2017-09-1516-81/+310
| | | | | | | | | | | | Summary: The checksums had already been placed in the IR, this patch allows MCCodeView to actually write it out to an MCStreamer. Subscribers: llvm-commits, hiraditya Differential Revision: https://reviews.llvm.org/D37157 llvm-svn: 313374
* [X86] Prefer VPERMQ over VPERM2F128 for any unary shuffle, not just the ones ↵Craig Topper2017-09-154-40/+73
| | | | | | | | | | | | that can be done with a insertf128 The early out for AVX2 in lowerV2X128VectorShuffle is positioned in a weird spot below some shuffle mask equivalency checks. But I think we want to allow VPERMQ for any unary shuffle. Differential Revision: https://reviews.llvm.org/D37893 llvm-svn: 313373
* Keep some relocations with undefined weak symbols.Rafael Espindola2017-09-1511-10/+75
| | | | | | | | | | | | | | | | | | | This fixes pr34301. As the bug points out, we want to keep some relocations with undefined weak symbols. This means that we cannot always claim that these symbols are not preemptible as we do now. Unfortunately, we cannot also just always claim that they are preemptible. Doing so would, for example, cause us to try to create a plt entry when we don't even have a dynamic symbol table. What almost works is to say that weak undefined symbols are preemptible if and only if we have a dynamic symbol table. Almost because we don't want to fail the build trying to create a copy relocation to a weak undefined. llvm-svn: 313372
* Remove a couple of warnings pointed out by Ted Woodward.Jim Ingham2017-09-151-5/+11
| | | | llvm-svn: 313371
* llvm-dwarfdump: Factor out the printing of the section header (NFC)Adrian Prantl2017-09-153-66/+69
| | | | llvm-svn: 313370
* [CUDA] Work around a new quirk in CUDA9 headers.Artem Belevich2017-09-151-0/+10
| | | | | | | | | | In CUDA-9 some of device-side math functions that we need are conditionally defined within '#if _GLIBCXX_MATH_H'. We need to temporarily undo the guard around inclusion of math_functions.hpp. Differential Revision: https://reviews.llvm.org/D37906 llvm-svn: 313369
* Fix typo in vector reduction costs comment. NFCI.Simon Pilgrim2017-09-151-1/+1
| | | | llvm-svn: 313368
* [X86] Use SDNode::ops() instead of makeArrayRef and op_begin(). NFCICraig Topper2017-09-151-5/+5
| | | | llvm-svn: 313367
* [X86] Don't create i64 constants on 32-bit targets when lowering v64i1 ↵Craig Topper2017-09-152-0/+75
| | | | | | | | | | | | | | constant build vectors When handling a v64i1 build vector of constants on 32-bit targets we were creating an illegal i64 constant that we then bitcasted back to v64i1. We need to instead create two 32-bit constants, bitcast them to v32i1 and concat the result. We should also take care to handle the halves being all zeros/ones after the split. This patch splits the build vector and then recursively lowers the two pieces. This allows us to handle the all ones and all zeros cases with minimal effort. Ideally we'd just do the split and concat, and let lowering get called again on the new nodes, but getNode has special handling for CONCAT_VECTORS that reassembles the pieces back into a single BUILD_VECTOR. Hopefully the two temporary BUILD_VECTORS we had to create to do this that don't get returned don't cause any issues. Fixes PR34605. Differential Revision: https://reviews.llvm.org/D37858 llvm-svn: 313366
* [X86] Add isel pattern infrastructure to begin recognizing when we're ↵Craig Topper2017-09-152-3/+59
| | | | | | | | | | | | | | | | | | inserting 0s into the upper portions of a vector register and the producing instruction as already produced the zeros. Currently if we're inserting 0s into the upper elements of a vector register we insert an explicit move of the smaller register to implicitly zero the upper bits. But if we can prove that they are already zero we can skip that. This is based on a similar idea of what we do to avoid emitting explicit zero extends for GR32->GR64. Unfortunately, this is harder for vector registers because there are several opcodes that don't have VEX equivalent instructions, but can write to XMM registers. Among these are SHA instructions and a MMX->XMM move. Bitcasts can also get in the way. So for now I'm starting with explicitly allowing only VPMADDWD because we emit zeros in combineLoopMAddPattern. So that is placing extra instruction into the reduction loop. I'd like to allow PSADBW as well after D37453, but that's currently blocked by a bitcast. We either need to peek through bitcasts or canonicalize insert_subvectors with zeros to remove bitcasts on the value being inserted. Longer term we should probably have a cleanup pass that removes superfluous zeroing moves even when the producer is in another basic block which is something these isel tricks can't do. See PR32544. Differential Revision: https://reviews.llvm.org/D37653 llvm-svn: 313365
* Fix the __interface inheritence rules to work better with IUnknown and IDispatchErich Keane2017-09-156-1/+109
| | | | | | | | | | | | | __interface objects in MSVC are permitted to inherit from __interface types, and interface-like types. Additionally, there are two default interface-like types (IUnknown and IDispatch) that all interface-like types must inherit from. Differential Revision: https://reviews.llvm.org/D37308 llvm-svn: 313364
* [RuntimeUnroll] Add heuristic for unrolling multi-exit loopAnna Thomas2017-09-152-2/+128
| | | | | | | | | | | | | | | | | | | | | Add a profitability heuristic to enable runtime unrolling of multi-exit loop: There can be atmost two unique exit blocks for the loop and the second exit block should be a deoptimizing block. Also, there can be one other exiting block other than the latch exiting block. The reason for the latter is so that we limit the number of branches in the unrolled code to being at most the unroll factor. Deoptimizing blocks are rarely taken so these additional number of branches created due to the unrolling are predictable, since one of their target is the deopt block. Reviewers: apilipenko, reames, evstupac, mkuper Subscribers: llvm-commits Reviewed by: reames Differential Revision: https://reviews.llvm.org/D35380 llvm-svn: 313363
* [Hexagon] Switch to parameterized register classes for HVXKrzysztof Parzyszek2017-09-1529-13785/+2407
| | | | | | | This removes the duplicate HVX instruction set for the 128-byte mode. Single instruction set now works for both modes (64- and 128-byte). llvm-svn: 313362
* [ELF] - Remove one of OutputSectionFactory::addInputSec().George Rimar2017-09-152-42/+47
| | | | | | | | | | Patch removes one of OutputSectionFactory::addInputSec methods. That allows to simplify reporting of discarded sections and should help to D37561. Differential revision: https://reviews.llvm.org/D37735 llvm-svn: 313361
* [sanitizer][mips64] fix MIPS64 kernel_stat_to_stat()Petar Jovanovic2017-09-151-3/+32
| | | | | | | | | | | | | | | | | | | | | This patch tackles with two issues: Output stat st_[a|m|c]time fields were holding wrong values. st_[a|m|c]time fields should have contained value of seconds and instead these are filled with st_[a|m|c]time_nsec fields which hold nanoseconds. Build fails for MIPS64 if SANITIZER_ANDROID. Recently <sys/stat.h> from bionic introduced st_[a|m|c]time_nsec macros for compatibility with old NDKs and those clashed with the field names of the <asm/stat.h> kernel_stat structure. To fix both issues and make sure sanitizer builds on all platforms, we must un-define all compatibility macros and access the fields directly when copying the 'time' fields. Patch by Miodrag Dinic <miodrag.dinic@imgtec.com> Differential Revision: https://reviews.llvm.org/D35671 llvm-svn: 313360
* Added optional validation of svn sources to Dockerfiles.Ilya Biryukov2017-09-157-9/+335
| | | | | | | | | | | | | | Summary: This commit also adds a script to compute sha256 hashes of llvm checkouts. Reviewers: klimek, mehdi_amini Reviewed By: klimek Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D37099 llvm-svn: 313359
* [RuntimeUnrolling] Populate the VMap entry correctly when default generated ↵Anna Thomas2017-09-152-3/+51
| | | | | | | | | | | | | | | | | through lookup During runtime unrolling on loops with multiple exits, we update the exit blocks with the correct phi values from both original and remainder loop. In this process, we lookup the VMap for the mapped incoming phi values, but did not update the VMap if a default entry was generated in the VMap during the lookup. This default value is generated when constants or values outside the current loop are looked up. This patch fixes the assertion failure when null entries are present in the VMap because of this lookup. Added a testcase that showcases the problem. llvm-svn: 313358
* Remove unneeded forward declaration. NFCAlexander Kornienko2017-09-151-2/+1
| | | | llvm-svn: 313357
* Add a ReleaseNotes blurb for Execute.*Wait API changeAlexander Kornienko2017-09-151-0/+4
| | | | | | ... in r313155, r313156. llvm-svn: 313356
* [clang-tidy] Fixed misc-unused-parameters omitting parameters square bracketsAlexander Kornienko2017-09-152-4/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Bug: https://bugs.llvm.org/show_bug.cgi?id=34449 **Problem:** Clang-tidy check misc-unused-parameters comments out parameter name omitting following characters (e.g. square brackets) what results in its complete removal. Compilation errors might occur after clang-tidy fix as well. **Patch description:** Changed removal range. The range should end after parameter name, not after whole parameter declarator (which might be followed by e.g. square brackets). Reviewers: alexfh Reviewed By: alexfh Subscribers: JDevlieghere, xazax.hun, cfe-commits Tags: #clang-tools-extra Patch by Pawel Maciocha! Differential Revision: https://reviews.llvm.org/D37846 llvm-svn: 313355
* [clang-format] New flag - BraceWrapping.AfterExternBlockKrasimir Georgiev2017-09-156-13/+87
| | | | | | | | | | | | | | | | | | | | | | | | | Summary: Bug: https://bugs.llvm.org/show_bug.cgi?id=34016 - **"extern C part"** **Problem:** Due to the lack of "brace wrapping extern" flag, clang format does parse the block after **extern** keyword moving the opening bracket to the header line always! **Patch description:** A new style added, new configuration flag - **BraceWrapping.AfterExternBlock** that allows us to decide whether we want a break before brace or not. Reviewers: djasper, krasimir Reviewed By: krasimir Subscribers: klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D37845 Contributed by @PriMee! llvm-svn: 313354
* [X86][SSE] Add test cases vector for integer multipliesSimon Pilgrim2017-09-151-0/+800
| | | | | | Mainly inspired by PR34474 / D37896 llvm-svn: 313353
* Revert "[SLPVectorizer] Failure to beneficially vectorize 'copyable' ↵Ilya Biryukov2017-09-152-385/+274
| | | | | | | | | elements in integer binary ops." This reverts commit r313348. Reason: it caused buildbot failures. llvm-svn: 313352
* [AArch64] allow v8f16 types when FullFP16 is supportedSjoerd Meijer2017-09-153-180/+461
| | | | | | | | | | | This adds support for allowing v8f16 vector types, thus avoiding conversions from/to single precision for these types. This is a follow up patch of commits r311154 and r312104, which added support for scalars and v4f16 types, respectively. Differential Revision: https://reviews.llvm.org/D37802 llvm-svn: 313351
* [ubsan] Extract GetStackTraceWithPcBpAndContext similar to asan versionVitaly Buka2017-09-152-8/+16
| | | | llvm-svn: 313350
* Recommit "[RegAlloc] Make sure live-ranges reflect the state of the IR whenJonas Paulsson2017-09-152-2/+8
| | | | | | | | | | | | | removing them" This was temporarily reverted, but now that the fix has been commited (r313197) it should be put back in place. https://bugs.llvm.org/show_bug.cgi?id=34502 This reverts commit 9ef93d9dc4c51568e858cf8203cd2c5ce8dca796. llvm-svn: 313349
* [SLPVectorizer] Failure to beneficially vectorize 'copyable' elements in ↵Dinar Temirbulatov2017-09-152-274/+385
| | | | | | | | | | | | | | | | | | | | | | integer binary ops. Patch tries to improve vectorization of the following code: void add1(int * __restrict dst, const int * __restrict src) { *dst++ = *src++; *dst++ = *src++ + 1; *dst++ = *src++ + 2; *dst++ = *src++ + 3; } Allows to vectorize even if the very first operation is not a binary add, but just a load. Reviewers: spatel, mzolotukhin, mkuper, hfinkel, RKSimon, filcab, ABataev, davide Subscribers: llvm-commits, RKSimon Differential Revision: https://reviews.llvm.org/D28907 llvm-svn: 313348
* tsan: respect LDFLAGS when build Go testDmitry Vyukov2017-09-151-1/+1
| | | | | | | | | | Reported at: https://bugs.llvm.org/show_bug.cgi?id=27597 Some platforms need additional LDFLAGS when building the test (e.g. -no-pie). Respect LDFLAGS. llvm-svn: 313347
* [ORC] Fix a typo.Lang Hames2017-09-151-1/+1
| | | | llvm-svn: 313346
* [libc++] Remove unnecessary struct tagShoaib Meenai2017-09-151-1/+1
| | | | | | It causes warnings about mismatched tags, and it's not needed. llvm-svn: 313345
* typeinfo: provide a partial implementation for Win32Saleem Abdulrasool2017-09-153-10/+99
| | | | | | | | | | | | | | | | | The RTTI structure is different on Windows when building under MS ABI. Update the definition to reflect this. The structure itself contains an area for caching the undecorated name (which is 0-initialized). The decorated name has a bitfield followed by the linkage name. When std::type_info::name is invoked for the first time, the runtime should undecorate the name, cache it, and return the undecorated name. This requires access to an implementation of __unDName. For now, return the raw name. This uses the fnv-1a hash to hash the name of the RTTI. We could use an alternate hash (murmur? city?), but, this was the quickest to throw together. llvm-svn: 313344
* [X86] PR32755 : Improvement in CodeGen instruction selection for LEAs.Jatin Bhateja2017-09-1518-176/+612
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: 1/ Operand folding during complex pattern matching for LEAs has been extended, such that it promotes Scale to accommodate similar operand appearing in the DAG. e.g. T1 = A + B T2 = T1 + 10 T3 = T2 + A For above DAG rooted at T3, X86AddressMode will no look like Base = B , Index = A , Scale = 2 , Disp = 10 2/ During OptimizeLEAPass down the pipeline factorization is now performed over LEAs so that if there is an opportunity then complex LEAs (having 3 operands) could be factored out. e.g. leal 1(%rax,%rcx,1), %rdx leal 1(%rax,%rcx,2), %rcx will be factored as following leal 1(%rax,%rcx,1), %rdx leal (%rdx,%rcx) , %edx 3/ Aggressive operand folding for AM based selection for LEAs is sensitive to loops, thus avoiding creation of any complex LEAs within a loop. Reviewers: lsaba, RKSimon, craig.topper, qcolombet Reviewed By: lsaba Subscribers: spatel, igorb, llvm-commits Differential Revision: https://reviews.llvm.org/D35014 llvm-svn: 313343
* [sanitizer] Simplify checks in allow_user_segv.ccVitaly Buka2017-09-151-6/+6
| | | | llvm-svn: 313342
* [SLPVectorizer] Remove duplicated functionality code in initScheduleData ↵Dinar Temirbulatov2017-09-151-6/+0
| | | | | | function, NFCI. llvm-svn: 313341
* [XRay] fix and clarify comments in the log file decoderMartin Pelikan2017-09-151-30/+24
| | | | | | | | | | | | | | | | | | | Summary: For readers unfamiliar with the XRay code base, reference the compiler-rt implementation even though we're not allowed to share any code and explain our little-endian views more clearly. For code clarity either get rid of obvious comments or explain their intentions, fix typos, correct coding style according to LLVM's standards and manually CSE long expressions to point out it is the same expression. Reviewers: dberris Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D34339 llvm-svn: 313340
* [sanitizer] Use __sanitizer:: in CHECK_IMPL on both sides of assignmentVitaly Buka2017-09-151-2/+2
| | | | llvm-svn: 313338
* [Object] Fix missing arguments to getType and getSymbol in Elf_Rel_ImplPetr Hosek2017-09-151-4/+4
| | | | | | | | | | | | | Somehow this was compiling without these methods having their arguments passed to them. I used these methods in some code I wrote and it raised an error on me. It appears no one else has used these methods let (LLD uses setSymbolAndType however). This change resolves the issue. Patch by Jake Ehrlich Differential Revision: https://reviews.llvm.org/D35100 llvm-svn: 313336
* Revert "[lit] Force site configs to run before source-tree configs"Zachary Turner2017-09-1523-186/+790
| | | | | | | | This patch is still breaking several multi-stage compiler-rt bots. I already know what the fix is, but I want to get the bots green for now and then try re-applying in the morning. llvm-svn: 313335
* merge-request.sh: Update to use new "Fixed by Commit(s)" fieldTom Stellard2017-09-151-40/+50
| | | | | | | | | | | | | | | | | | Summary: This will be used instead of the url field to track which commits need to be merged. This patch also drops support for version 1.x of the bugzilla CLI tool. Reviewers: hansw, hans Reviewed By: hans Subscribers: hans, llvm-commits Differential Revision: https://reviews.llvm.org/D37786 llvm-svn: 313334
* Don't make _gp absolute.Rafael Espindola2017-09-1512-24/+13
| | | | | | | | _gp points to a position in the file, so it is not really absolute. It is also simpler to not force it to be absolute, so if there is no strong ABI requirement we should not do it. llvm-svn: 313333
* Fix syntax in lldb lit.cfgReid Kleckner2017-09-151-1/+1
| | | | llvm-svn: 313332
* [cmake] Fix a variable shadowing bugReid Kleckner2017-09-151-0/+1
| | | | llvm-svn: 313331
* [COFF] Remove unused variable NFCReid Kleckner2017-09-151-1/+0
| | | | llvm-svn: 313330
* [codeview] Use a type index of zero for static method "this" typesReid Kleckner2017-09-152-4/+40
| | | | | | | Otherwise VS won't show anything in the autos or watch window of static methods. llvm-svn: 313329
* [lit] Revert "Add a lit.llvm module that all llvm projects can use"Zachary Turner2017-09-156-164/+157
| | | | | | | This is breaking due to some changes I forgot to merge in, so I'm temporarily reverting them until I can re-test that this works. llvm-svn: 313328
* Wire up the breakpoint name help string.Jim Ingham2017-09-157-12/+69
| | | | llvm-svn: 313327
* [lit] Remove some code that I forgot to remove.Zachary Turner2017-09-151-8/+0
| | | | llvm-svn: 313326
* [lit] Add a lit.llvm module that all test suites can use.Zachary Turner2017-09-156-157/+172
| | | | | | | | | | | | | | To further reduce duplicate code, this patch introduces a module that configs can simply import and get access to a lot of useful functionality such as setting up paths, adding features that are useful across all projects, and other utility-type functions. For now this only updates llvm's suite to use this new library, but subsequent patches will update other projects. Differential Revision: https://reviews.llvm.org/D37778 llvm-svn: 313325
* Fix accidental ADL in std::allocator_traits meta-programming.Eric Fiselier2017-09-159-6/+90
| | | | | | | | | | | There were a number of cases where __double_underscore functions, for example __has_construct_test, were called without being qualified, causing ADL to occur. This patch qualifies those calls to avoid this problem. Thanks to David L. Jones for point out the issue initially. llvm-svn: 313324
* [Sema] Correct typos in LHS, RHS before building a binop expression.Volodymyr Sapsai2017-09-153-15/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Specifically, typo correction should be done before dispatching between different kinds of binary operations like pseudo-object assignment, overloaded binary operation, etc. Without this change we hit an assertion Assertion failed: (!LHSExpr->hasPlaceholderType(BuiltinType::PseudoObject)), function CheckAssignmentOperands when in Objective-C we reference a property without `self` and there are 2 equally good typo correction candidates: ivar and a class name. In this case LHS expression in `BuildBinOp` is CXXDependentScopeMemberExpr `-TypoExpr and instead of handling Obj-C property assignment as pseudo-object assignment, we call `CreateBuiltinBinOp` which corrects typo to ObjCPropertyRefExpr '<pseudo-object type>' but cannot handle pseudo-objects and asserts about it (indirectly, through `CheckAssignmentOperands`). rdar://problem/33102722 Reviewers: rsmith, ahatanak, majnemer Reviewed By: ahatanak Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D37322 llvm-svn: 313323
OpenPOWER on IntegriCloud