- Jan 16, 2020
-
-
Reid Kleckner authored
Doesn't really fix PR44491, but it avoids treating it as an input.
-
Amy Huang authored
This reverts commit 921f871a because it causes libc++ code to trigger __warn_memset_zero_len. See https://reviews.llvm.org/D71082.
-
Jonas Devlieghere authored
Make it clear form the method names whether they are synchronous or asynchronous.
-
Alexey Bataev authored
This reverts commit 23058f9d. It breaks builds of cuda code somehow in some cases.
-
Eric Fiselier authored
Specifically, add a space between >> when closing templates.
-
Eric Fiselier authored
This change optimizes the operator=() assignment for short strings by direcly copying the raw data from the source into the current instance. This creates an optimized / inlined mempcy up to over 2X faster for short string assignments. With inlining enabled for operator=, performance is up to 6X faster. Benchmarks 'as is': name old time/op new time/op delta BM_StringAssignStr_Empty_Opaque 6.05ns ± 2% 3.59ns ± 0% -40.67% BM_StringAssignStr_Empty_Transparent 5.15ns ± 0% 3.08ns ± 0% -40.12% BM_StringAssignStr_Small_Opaque 7.71ns ± 0% 3.59ns ± 0% -53.45% BM_StringAssignStr_Small_Transparent 7.66ns ± 0% 3.09ns ± 0% -59.66% BM_StringAssignStr_Large_Opaque 24.1ns ± 0% 24.9ns ± 0% +3.22% BM_StringAssignStr_Large_Transparent 22.2ns ± 0% 22.8ns ± 0% +2.77% BM_StringAssignStr_Huge_Opaque 315ns ± 6% 320ns ± 5% ~ BM_StringAssignStr_Huge_Transparent 318ns ± 5% 321ns ± 4% ~ Benchmarks with partial inlining operator=(): name old time/op new time/op delta BM_StringAssignStr_Empty_Opaque 5.94ns ± 2% 1.95ns ± 0% -67.21% BM_StringAssignStr_Empty_Transparent 5.14ns ± 0% 1.04ns ± 1% -79.73% BM_StringAssignStr_Small_Opaque 7.69ns ± 0% 1.96ns ± 0% -74.48% BM_StringAssignStr_Small_Transparent 7.65ns ± 0% 1.04ns ± 0% -86.40% BM_StringAssignStr_Large_Opaque 24.1ns ± 0% 24.5ns ± 0% +1.61% BM_StringAssignStr_Large_Transparent 22.2ns ± 0% 21.1ns ± 0% -4.70% BM_StringAssignStr_Huge_Opaque 317ns ± 5% 323ns ± 4% ~ BM_StringAssignStr_Huge_Transparent 318ns ± 5% 320ns ± 5% ~ Patch by Martijn Vels (mvels@google.com) Reviewed as https://reviews.llvm.org/D72704
-
Vedant Kumar authored
This should fix a failure on the clang-cmake-armv7-quick bot.
-
Vedant Kumar authored
This cleanup was suggested by Djordje in D72489.
-
Fedor Sergeev authored
It appears to be rather useful when analyzing Loops with multiple deoptimizing exits, perhaps merged ones. For now it is used in LoopPredication, will be adding more uses in other loop passes. Reviewers: asbirlea, fhahn, skatkov, spatel, reames Reviewed By: reames Tags: #llvm Differential Revision: https://reviews.llvm.org/D72754
-
Eric Fiselier authored
The GCC build failures have been addressed, and the LLDB failures were fixed by LLDB. I have also verified that the apple-clang 9.0 segfault no longer occurs. Original Message: The external instantiation of std::string is a problem for libc++. Additions and removals of inline functions in string can cause ABI breakages, including introducing new symbols. This patch aims to: (1) Make clear which functions are explicitly instatiated. (2) Prevent new functions from being accidentally instantiated. (3) Allow a migration path for adding or removing functions from the explicit instantiation over time. Although this new formulation is uglier, it is preferable from a maintainability and readability standpoint because it explicitly enumerates the functions we've chosen to expose in our ABI. Changing this list is non-trivial and requires thought and planning. (3) is achieved by making it possible to control the extern template declaration separately from it's definition. Meaning we could add a new definition to the dylib, wait for it to roll out, then add the extern template declaration to the header. Similarly, we could remove existing extern template declarations while still keeping the definition to prevent ABI breakages. -
Eric Fiselier authored
visibility. This ensures that the version compiled into the library isn't accidentally hidden.
-
Eric Fiselier authored
This patch is needed in order to work around a GCC bug that fails to explicitly instantiate a non-template function of a class template when there is another overload that's a function template. (See https://godbolt.org/z/4bUQ_b) This patch SFINAE's away the function templates when the argument is a basic_string.
-
Vedant Kumar authored
See https://bugs.llvm.org/show_bug.cgi?id=44561, these tests are failing on an aarch64/Linux bot: http://lab.llvm.org:8011/builders/lldb-aarch64-ubuntu/builds/655 For some reason the backtrace the tests are expecting to find is incomplete.
-
Jinsong Ji authored
https://reviews.llvm.org/D72706 tried to reduce reordering due to mem op clustering. This patch avoid doing the swap when we can't cluster. Reviewed By: rampitec Differential Revision: https://reviews.llvm.org/D72800
-
Mircea Trofin authored
Summary: InlineResult is used both in APIs assessing whether a call site is inlinable (e.g. llvm::isInlineViable) as well as in the function inlining utility (llvm::InlineFunction). It means slightly different things (can/should inlining happen, vs did it happen), and the implicit casting may introduce ambiguity (casting from 'false' in InlineFunction will default a message about hight costs, which is incorrect here). The change renames the type to a more generic name, and disables implicit constructors. Reviewers: eraman, davidxl Reviewed By: davidxl Subscribers: kerbowa, arsenm, jvesely, nhaehnle, eraman, hiraditya, haicheng, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D72744
-
Jacques Pienaar authored
Summary: * Add shaped container type interface which allows infering the shape, element type and attribute of shaped container type separately. Show usage by way of tensor type inference trait which combines the shape & element type in infering a tensor type; - All components need not be specified; - Attribute is added to allow for layout attribute that was previously discussed; * Expand the test driver to make it easier to test new creation instances (adding new operands or ops with attributes or regions would trigger build functions/type inference methods); - The verification part will be moved out of the test and to verify method instead of ops implementing the type inference interface in a follow up; * Add MLIRContext as arg to possible to create type for ops without arguments, region or location; * Also move out the section in OpDefinitions doc to separate ShapeInference doc where the shape function requirements can be captured; - Part of this would move to the shape dialect and/or shape dialect ops be included as subsection of this doc; * Update ODS's variable usage to match camelBack format for builder, state and arg variables; - I could have split this out, but I had to make some changes around these and the inconsistency bugged me :) Differential Revision: https://reviews.llvm.org/D72432 -
Zhongduo Lin authored
Summary: Duplicate code in widenWithVariantLoadUseCodegen is removed and also use assert to check unknown extension type as it should be filtered out by the pre condition check before calling this function. Reviewers: az, sanjoy, sebpop, efriedma, javed.absar, sanjoy.google Reviewed By: efriedma Subscribers: hiraditya, llvm-commits, amehsan Tags: #llvm Differential Revision: https://reviews.llvm.org/D72652
-
Richard Smith authored
PR17164: Change clang's default behavior from -flax-vector-conversions=all to -flax-vector-conversions=integer. Summary: See proposal on cfe-dev: http://lists.llvm.org/pipermail/cfe-dev/2019-April/062030.html Reviewers: SjoerdMeijer, eli.friedman Subscribers: kristof.beyls, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D67678
-
Richard Smith authored
Work around PR43337: don't try to use the vec_sel overloads for vector long long, since clang's <altivec.h> doesn't provide it yet!
-
Vedant Kumar authored
Factor out the logic needed to update debug locations contained within MD_loop metadata. This refactor is preparation for a future change that also needs to rewrite MD_loop metadata. rdar://45507940
-
Vedant Kumar authored
This reverts D53469, which changed llvm's DWARF emission to emit DW_AT_call_return_pc as a function-local offset. Such an encoding is not compatible with post-link block re-ordering tools and isn't standards- compliant. In addition to reverting back to the original DW_AT_call_return_pc encoding, teach lldb how to fix up DW_AT_call_return_pc when the address comes from an object file pointed-to by a debug map. While doing this I noticed that lldb's support for tail calls that cross a DSO/object file boundary wasn't covered, so I added tests for that. This latter case exercises the newly added return PC fixup. The dsymutil changes in this patch were originally included in D49887: the associated test should be sufficient to test DW_AT_call_return_pc encoding purely on the llvm side. Differential Revision: https://reviews.llvm.org/D72489
-
Lang Hames authored
This updates the discussion of lazy reexports, fixes a TBD for a usage example, and adds a reference to the fully worked lazy reexports example that was added in e9e26c01.
-
Nico Weber authored
-
Nico Weber authored
-
Nico Weber authored
-
Craig Topper authored
I believe the generated code here can suffer from double rounding. So I wanted to capture the existing codegen so we can make decisions about how to fix it.
-
Lang Hames authored
Based on Don Hinton's patch in https://reviews.llvm.org/D72406. This feature was accidentally left out of e9e26c01, and would have pessimized concurrent compilation in the default case. Thanks for spotting this Don!
-
Amara Emerson authored
Revert "Revert rG6078f2fe - "[AArch64][GlobalISel]: Support @llvm.{return,frame}address selection."" The original change wasn't constraining the operand regclasses which broke EXPENSIVE_CHECKS.
-
Nico Weber authored
Ran `git ls-files '*.gn' '*.gni' | xargs llvm/utils/gn/gn.py format`. The motivation is to reformat them with trunk gn again right after. Trunk gn changed formatting of some single-element lists.
-
Nico Weber authored
Flags are clang's default UI is flags. We can have an env var in addition to that, but in D69825 nobody has yet mentioned why this needs an env var, so omit it for now. If someone needs to set the flag via env var, the existing CCC_OVERRIDE_OPTIONS mechanism works for it (set CCC_OVERRIDE_OPTIONS=+-fno-integrated-cc1 for example). Also mention the cc1-in-process change in the release notes. Also spruce up the test a bit so it actually tests something :) Differential Revision: https://reviews.llvm.org/D72769
-
Mark Murray authored
Summary: Add VMINAQ, VMINNMAQ, VMAXAQ, VMAXNMAQ intrinsics and unit tests. Reviewers: simon_tatham, miyuki, dmgreen Subscribers: kristof.beyls, hiraditya, cfe-commits, llvm-commits Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D72761
-
Kadir Cetinkaya authored
-
Benjamin Kramer authored
This reverts commit 4624a1e8. Causing problems downstream.
-
Teresa Johnson authored
I noticed one bot failure due to 24a00ef2 because the wildcard matching was not working as intended, fixed it to act similar to other checks of CGSCCToFunctionPassAdaptor.
-
evgeny authored
This patch imports constant variables even when they can't be internalized (which results in promotion). This offers some extra constant folding opportunities. Differential revision: https://reviews.llvm.org/D70404
-
Arkady Shlykov authored
Summary: Current peeling implementation bails out in case of loop nests. The patch introduces a field in TargetTransformInfo structure that certain targets can use to relax the constraints if it's profitable (disabled by default). Also additional option is added to enable peeling manually for experimenting and testing purposes. Reviewers: fhahn, lebedev.ri, xbolva00 Reviewed By: xbolva00 Subscribers: xbolva00, hiraditya, zzheng, llvm-commits Differential Revision: https://reviews.llvm.org/D70304
-
Sanjay Patel authored
As discussed in the motivating PR44509: https://bugs.llvm.org/show_bug.cgi?id=44509 ...we can end up with worse code using fast-math than without. This is because the reassociate pass greedily transforms fsub into fneg/fadd and apparently (based on the regression tests seen here) expects instcombine to clean that up if it wasn't profitable. But we were missing this fold: (X - Y) - Z --> X - (Y + Z) There's another, more specific case that I think we should handle as shown in the "fake" fneg test (but missed with a real fneg), but that's another patch. That may be tricky to get right without conflicting with existing transforms for fneg. Differential Revision: https://reviews.llvm.org/D72521
-
Nicolas Vasilache authored
-
Nicolas Vasilache authored
Summary: This diff moves the conversion pass declaration closer to its definition and makes the namespacing of passes consistent with the rest of the infrastructure (i.e. `mlir::linalg::createXXXPass` -> `mlir::createXXXPass`). Reviewers: ftynse, jpienaar, mehdi_amini Subscribers: rriddle, burmako, shauheen, antiagainst, arpith-jacob, mgester, lucyrfox, aartbik, liufengdb, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D72766
-
Lang Hames authored
This patch makes the target triple available via the LLJIT interface, and moves the IRTransformLayer from LLLazyJIT down into LLJIT. Together these changes make it easier to use the lazyReexports utility with LLJIT, and to apply IR transforms to code as it is compiled in LLJIT (rather than requiring transforms to be applied manually before code is added). An code example is added in llvm/examples/LLJITExamples/LLJITWithLazyReexports
-