summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Add move-only types test to transform_reduce iter iter iter init op op.Billy Robert O'Neal III2018-01-051-0/+14
| | | | llvm-svn: 321849
* Add move-only types test for transform_reduce bop/uop.Billy Robert O'Neal III2018-01-051-0/+13
| | | | llvm-svn: 321848
* Fix nonstandard bits in transform_reduce_iter_iter_init_bop_uop.Billy Robert O'Neal III2018-01-051-43/+27
| | | | | | | | * _VSTD should be std. * <utility> is needed for forward. * unary_function is no longer standard (and unnecessary for this, a C++17-only test) llvm-svn: 321847
* Remove redundant testAdrian Prantl2018-01-051-8/+0
| | | | llvm-svn: 321846
* Debug Info: Support DW_AT_calling_convention on composite types.Adrian Prantl2018-01-052-1/+58
| | | | | | | | | | | | | | | | | | | | | | | | | This implements the DWARF 5 feature described at http://www.dwarfstd.org/ShowIssue.php?issue=141215.1 This allows a consumer to understand whether a composite data type is trivially copyable and thus should be passed by value instead of by reference. The canonical example is being able to distinguish the following two types: // S is not trivially copyable because of the explicit destructor. struct S { ~S() {} }; // T is a POD type. struct T { ~T() = default; }; <rdar://problem/36034993> Differential Revision: https://reviews.llvm.org/D41039 llvm-svn: 321845
* Debug Info: Support DW_AT_calling_convention on composite types.Adrian Prantl2018-01-057-3/+91
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This implements the DWARF 5 feature described at http://www.dwarfstd.org/ShowIssue.php?issue=141215.1 This allows a consumer to understand whether a composite data type is trivially copyable and thus should be passed by value instead of by reference. The canonical example is being able to distinguish the following two types: // S is not trivially copyable because of the explicit destructor. struct S { ~S() {} }; // T is a POD type. struct T { ~T() = default; }; This patch adds two new (DI)flags to LLVM metadata: TypePassByValue and TypePassByReference. <rdar://problem/36034922> Differential Revision: https://reviews.llvm.org/D41743 llvm-svn: 321844
* Revert r321838 -- It broke some of the builders.Lang Hames2018-01-058-831/+4
| | | | llvm-svn: 321842
* WholeProgramDevirt: Simplify ORE getter mechanism for old PM. NFCI.Peter Collingbourne2018-01-051-34/+17
| | | | llvm-svn: 321841
* remove unreferenced footnotesTim Hammerquist2018-01-051-1/+1
| | | | llvm-svn: 321840
* fix invalid footnote syntaxTim Hammerquist2018-01-051-3/+0
| | | | llvm-svn: 321839
* [ORC] Add new core ORC APIs (Core.h/Core.cpp): VSO, AsynchronousSymbolQuery andLang Hames2018-01-058-4/+831
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | SymbolSource. These new APIs are a first stab at tackling some current shortcomings of ORC, especially in performance and threading support. VSO (Virtual Shared Object) is a symbol table representing the symbol definitions of a set of modules that behave as if they had been statically linked together into a shared object or dylib. Symbol definitions, either pre-defined addresses or lazy definitions, can be added and queries for symbol addresses made. The table applies the same linkage strength rules that static linkers do when constructing a dylib or shared object: duplicate definitions result in errors, strong definitions override weak or common ones. This class should improve symbol lookup speed by providing centralized symbol tables (as compared to the findSymbol implementation in the in-tree ORC layers, which maintain one symbol table per object file / module added). AsynchronousSymbolQuery is a query for the addresses of a set of symbols. Query results are returned via a callback once they become available. Querying for a set of symbols, rather than one symbol at a time (as the current lookup scheme does) the JIT has the opportunity to make better use of available resources (e.g. by spawning multiple jobs to materialize the requested symbols if possible). Returning results via a callback makes queries asynchronous, so queries from multiple threads of JIT'd code can proceed simultaneously. SymbolSource represents a source of symbol definitions. It is used when adding lazy symbol definitions to a VSO. Symbol definitions can be materialized when needed or discarded if a stronger definition is found. Materializing on demand via SymbolSources should (eventually) allow us to remove the lazy materializers from JITSymbol, which will in turn allow the removal of many current error checks and reduce the number of RPC round-trips involved in materializing remote symbols. Adding a discard function allows sources to discard symbol definitions (or mark them as available_externally), reducing the amount of redundant code generated by the JIT for ODR symbols. llvm-svn: 321838
* [ORC] Actually compare pointer values as advertised (rather than comparing refLang Hames2018-01-051-1/+1
| | | | | | counts). Oops. llvm-svn: 321837
* [ORC] Add dereference operator to SymbolStringPtr.Lang Hames2018-01-052-0/+8
| | | | | | Dereference yields a StringRef. llvm-svn: 321836
* [DEBUG] Fix debug info test for NVPTX, NFC.Alexey Bataev2018-01-041-8/+8
| | | | llvm-svn: 321835
* Make attribute instantiation instantiate all attributes, not just the first ofRichard Smith2018-01-047-52/+97
| | | | | | | | | | | | | | | | | | | | each kind. Attribute instantiation would previously default to instantiating each kind of attribute only once. This was overridden by a flag whose intended purpose was to permit attributes from a prior declaration to be inherited onto a new declaration even if that new declaration had its own copy of the attribute. This is the wrong behavior: when instantiating attributes from a template, we should always instantiate all the attributes that were written on that template. This patch renames the flag in the Attr class (and TableGen sources) to more clearly identify what it's actually for, and removes the usage of the flag from template instantiation. I also removed the flag from AlignedAttr, which was only added to work around the incorrect suppression of duplicate attribute instantiation. llvm-svn: 321834
* [IRExecutionUnit] Remove broken/dead code.Davide Italiano2018-01-041-26/+2
| | | | llvm-svn: 321833
* Revert "[JumpThreading] Preservation of DT and LVI across the pass"Reid Kleckner2018-01-0412-919/+99
| | | | | | | This reverts r321825, it causes crashes in Chromium. Reproducer forthcoming. llvm-svn: 321832
* Fix some comments and formatting in kmp_dispatch.cppJonathan Peyton2018-01-041-8/+9
| | | | llvm-svn: 321831
* Use POSIX argument syntax in test rewrite-includes-messages.cHubert Tong2018-01-041-1/+1
| | | | | | | Invoke diff such that options precede operands. Not doing so leads to unspecified behaviour under the LSB. llvm-svn: 321830
* [DEBUG] Fix the test for NVPTX, NFC.Alexey Bataev2018-01-041-10/+10
| | | | llvm-svn: 321829
* Use backslash escape, replacing xargs -0 in test macro-multiline.cHubert Tong2018-01-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | Summary: xargs supports escaping of newline characters with backslash. xargs -0 is neither part of POSIX nor the LSB. This patch removes the -0 option and adjusts the input to xargs accordingly; that is, the input is a text file not ending in an incomplete line, and the newline of interest is preceded by a backslash. Note: The treatment of escaped newline characters is not as clearly specified by POSIX as for escaped blank characters; however, the same can be said for escaped backslashes. It is slightly more clear for the case where the -I option is used; however, -I is also of limited portability. Reviewers: bruno Reviewed By: bruno Subscribers: bruno, rcraik, cfe-commits Differential Revision: https://reviews.llvm.org/D41544 llvm-svn: 321828
* Fix trademarks found by scannerJonathan Peyton2018-01-046-28/+28
| | | | llvm-svn: 321827
* [X86] Add srem/udiv/urem by one combine testsSimon Pilgrim2018-01-043-0/+66
| | | | llvm-svn: 321826
* [JumpThreading] Preservation of DT and LVI across the passBrian M. Rzycki2018-01-0412-99/+919
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: See D37528 for a previous (non-deferred) version of this patch and its description. Preserves dominance in a deferred manner using a new class DeferredDominance. This reduces the performance impact of updating the DominatorTree at every edge insertion and deletion. A user may call DDT->flush() within JumpThreading for an up-to-date DT. This patch currently has one flush() at the end of runImpl() to ensure DT is preserved across the pass. LVI is also preserved to help subsequent passes such as CorrelatedValuePropagation. LVI is simpler to maintain and is done immediately (not deferred). The code to perfom the preversation was minimally altered and was simply marked as preserved for the PassManager to be informed. This extends the analysis available to JumpThreading for future enhancements. One example is loop boundary threading. Reviewers: dberlin, kuhar, sebpop Reviewed By: kuhar, sebpop Subscribers: hiraditya, llvm-commits Differential Revision: https://reviews.llvm.org/D40146 llvm-svn: 321825
* [AArch64] Improve code generation of vector buildEvandro Menezes2018-01-044-23/+107
| | | | | | | | | Instead of using, for example, `dup v0.4s, wzr`, which transfers between register files, use the more efficient `movi v0.4s, #0` instead. Differential revision: https://reviews.llvm.org/D41515 llvm-svn: 321824
* [X86] Add scalar undef sdiv/srem/udiv/urem combine testsSimon Pilgrim2018-01-044-0/+87
| | | | llvm-svn: 321823
* [DEBUG] Add initial tests for debug info for NVPTX target, NFC.Alexey Bataev2018-01-043-8/+854
| | | | llvm-svn: 321822
* [X86] Correct the execution domain for AVX1 VBROADCASTF128 to be FP instead ↵Craig Topper2018-01-042-101/+50
| | | | | | of integer. llvm-svn: 321821
* [OPENMP] Fix capturing of expressions in clauses.Alexey Bataev2018-01-042-53/+56
| | | | | | | | Patch fixes incorrect capturing of the expressions in clauses with expressions that must be captured for the combined constructs. Incorrect capturing may lead to compiler crash during codegen phase. llvm-svn: 321820
* Revert "[X86] Regenerate test"Amara Emerson2018-01-041-17/+4
| | | | | | This reverts r321814 as it was failing make check. llvm-svn: 321819
* [OPENMP] Fix casting in NVPTX support library.Alexey Bataev2018-01-043-72/+65
| | | | | | | | If the reduction required shuffle in the NVPTX codegen, we may need to cast the reduced value to the integer type. This casting was implemented incorrectly and may cause compiler crash. Patch fixes this problem. llvm-svn: 321818
* [asan] Fix build with Android NDK < 14.Evgeniy Stepanov2018-01-041-1/+1
| | | | | | | | | | | | NDK < 13 & API_LEVEL < 21 do not define struct mmsghdr. Newer NDK use unified headers and provide this definition for all api levels. Since we can not check for the NDK version, check the api level. This is more strict than absolutely necessary, but it does not really matter: it is only a sanity check. llvm-svn: 321817
* [OPENMP] Add debug info for generated functions.Alexey Bataev2018-01-045-118/+139
| | | | | | | Most of the generated functions for the OpenMP were generated with disabled debug info. Patch fixes this for better user experience. llvm-svn: 321816
* [llvm-cov] Refactor "export" command implementation and add support for SOURCES.Max Moroz2018-01-047-329/+453
| | | | | | | | | | | | | | Summary: Define an interface for Exporter + split JSON exporter into .h and .cpp. Reviewers: vsk, morehouse Reviewed By: vsk Subscribers: llvm-commits, Dor1s, kcc Differential Revision: https://reviews.llvm.org/D41600 llvm-svn: 321815
* [X86] Regenerate testSimon Pilgrim2018-01-041-4/+17
| | | | llvm-svn: 321814
* [DAGCombine] Ensure SDNode use iterator is incremented properly.Amara Emerson2018-01-041-2/+2
| | | | | | Fixes an ASAN bug found by oss-fuzz. llvm-svn: 321813
* [scudo] Attempt to re-enable the valloc test on armhfKostya Kortchinsky2018-01-041-1/+1
| | | | | | | | | | | | | | | | Summary: It used to fail on the bots, but I could not repro it locally. So turn it back on to try and see if it still fails and maybe get to the heart of it. Reviewers: alekseyshl, flowerhack Reviewed By: alekseyshl Subscribers: aemerson, srhines, kristof.beyls, llvm-commits, #sanitizers Differential Revision: https://reviews.llvm.org/D41707 llvm-svn: 321812
* [docs] Update Scudo documentationKostya Kortchinsky2018-01-041-9/+30
| | | | | | | | | | | | | | | | | | | Summary: The documentation has fallen a bit behind, update it with the latest evolution of the allocator: - clarify a couple of expectations regarding what is meant to be achieved; - update the header format; - document `-fsanitize=scudo`. Reviewers: alekseyshl, flowerhack Reviewed By: alekseyshl Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D41670 llvm-svn: 321811
* [X86] Add common CHECK prefix for tests without SSE/AVX codegenSimon Pilgrim2018-01-044-131/+65
| | | | llvm-svn: 321810
* Teach InlineCost about address spacesBjorn Pettersson2018-01-043-8/+92
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: I basically copied this patch from here: https://reviews.llvm.org/D1251 But I skipped some of the refactoring to make the patch more clean. The new outer3/inner3 test case in ptr-diff.ll triggers the following assert without this patch: lib/IR/Constants.cpp:1834: static llvm::Constant *llvm::ConstantExpr::getCompare(unsigned short, llvm::Constant *, llvm::Constant *, bool): Assertion `C1->getType() == C2->getType() && "Op types should be identical!"' failed. The other new test cases makes sure that there is code coverage for all modifications in InlineCost.cpp (getting different values due to not fetching sizes for address space zero). I only guarantee code coverage for those tests. The tests are not written in a way that they would break if not having the corrections in InlineCost.cpp. I found it quite hard to fine tune the tests into getting different results based on the pointer sizes (except for the test case where we hit an assert if not teaching InlineCost about address spaces). Reviewers: chandlerc, arsenm, haicheng Reviewed By: arsenm Subscribers: wdng, eraman, llvm-commits, haicheng Differential Revision: https://reviews.llvm.org/D40455 llvm-svn: 321809
* Regenerate broadcast constant commentSimon Pilgrim2018-01-041-1/+1
| | | | llvm-svn: 321808
* [X86] Show missed combine for X/X for SDIV/UDIV and X%X for SREM/UREMSimon Pilgrim2018-01-044-0/+284
| | | | llvm-svn: 321807
* StructurizeCFG: xfail one of the testcases from r321751Matt Arsenault2018-01-042-139/+78
| | | | | | | It fails with -verify-region-info. This seems to be a issue with RegionInfo itself which existed before. llvm-svn: 321806
* Add assertion on DT availability during LI update in UpdateAnalysisInformationAnna Thomas2018-01-041-0/+1
| | | | | | | | | | | | | This came up during discussions in llvm-commits for rL321653: Check for unreachable preds before updating LI in UpdateAnalysisInformation The assert provides hints to passes to require both DT and LI if we plan on updating LI through this function. Tests run: make check llvm-svn: 321805
* [Docs] Add Contributing page.Florian Hahn2018-01-043-0/+130
| | | | | | | | | | | | | | | | | | | | | | This new page acts as an entry point for (new) contributors to LLVM and provides information about * What to contribute * How to submit a patch * Where to start to learn more about LLVM's architecture and internals. This version of the page duplicates some information from the DeveloperPolicy and Phabricator pages. Subsequent changes should work towards moving information for new developers to this page, where it makes sense. Reviewers: reames, probinson, kristof.beyls, silvas, rengolin, asb Reviewed By: silvas Differential Revision: https://reviews.llvm.org/D41665 llvm-svn: 321804
* [scudo] s/unsigned long/size_t/ for __scudo_set_rss_limitKostya Kortchinsky2018-01-043-5/+10
| | | | | | | | | | | | | | | | | | | | Summary: `__scudo_set_rss_limit`'s `LimitMb` should really be a `size_t`. Update accordingly the prototype. To avoid the `NOLINT` and conform with the other Sanitizers, use the sanitizers types for the internal definition. This should have no functional change. Additionally, capitalize a variable name to follow the LLVM coding standards. Reviewers: alekseyshl, flowerhack Reviewed By: alekseyshl Subscribers: #sanitizers, llvm-commits Differential Revision: https://reviews.llvm.org/D41704 llvm-svn: 321803
* Look for external types in all clang modules imported by the current symbol ↵Adrian Prantl2018-01-0410-51/+137
| | | | | | | | | | | | | file. This fixes a bug in -gmodules DWARF handling when debugging without a .dSYM bundle that was particularly noticable when debugging LLVM itself. Debugging without clang modules and DWO handling should be unaffected by this patch. <rdar://problem/32436209> llvm-svn: 321802
* [InstCombine] safely create a constant of the right type (PR35794)Sanjay Patel2018-01-042-4/+20
| | | | llvm-svn: 321801
* [ARM] Fix endianness of Thumb .inst.w directiveOliver Stannard2018-01-042-8/+17
| | | | | | | | | Wide Thumb2 instructions should be emitted into the object file as pairs of 16-bit words of the appropriate endianness, not one 32-bit word. Differential revision: https://reviews.llvm.org/D41185 llvm-svn: 321799
* [Hexagon] Replace INSERTRP/EXTRACTRP with INSERT/EXTRACT in HexagonISDKrzysztof Parzyszek2018-01-043-41/+25
| | | | llvm-svn: 321798
OpenPOWER on IntegriCloud