- Jan 16, 2020
-
-
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
-
Lang Hames authored
A bug in the existing implementation meant that lazyReexports would not work if the aliased name differed from the alias's name, i.e. all lazy reexports had to be of the form (lib1, name) -> (lib2, name). This patch fixes the issue by capturing the alias's name in the NotifyResolved callback. To simplify this capture, and the LazyCallThroughManager code in general, the NotifyResolved callback is updated to use llvm::unique_function rather than a custom class. No test case yet: This can only be tested at runtime, and the only in-tree client (lli) always uses aliases with matching names. I will add a new LLJIT example shortly that will directly test the lazyReexports API and the non-trivial alias use case.
-
- Jan 15, 2020
-
-
Hubert Tong authored
Summary: This patch implements `formatv()` formatting for `dwarf::LineNumberOps` and makes use of it for the `llvm-dwarfdump --debug-line` dump. Previously, unknown line number standard opcodes would lead to undefined behaviour. The code would attempt to format the data pointer of an empty `StringRef` (a null pointer) using `%s`. According to the description for `format()`, use of that interface carries the "risk of `printf`". Passing a null pointer in place of an array to a C library function results in undefined behaviour. Reviewers: jhenderson, daltenty, stevewan Reviewed By: jhenderson Subscribers: aprantl, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D72369
-
Hubert Tong authored
Summary: The IBM XL compiler uses `-qfuncsect` for `-ffunction-sections`. The comment about sanitizers and `-f[no-]function-sections` is corrected also, as it is pertinent to this patch. The sanitizer-related use of `-fno-function-sections` is associated with powerpc64le, a target for which there is an IBM XL compiler, so that use is updated in this patch to apply `-qnofuncsect` in case a build using the XL compiler is viable on that platform. This patch has been verified with the XL compiler on AIX only. Reviewers: daltenty, stevewan Reviewed By: daltenty Subscribers: mgorny, steven.zhang, #sanitizers, llvm-commits Tags: #sanitizers, #llvm Differential Revision: https://reviews.llvm.org/D72335
-
Nicolas Vasilache authored
-
Georgii Rymar authored
After recent changes (D71872) in yaml2obj, it is possible so cleanup testing of the SHT_RELR sections. Differential revision: https://reviews.llvm.org/D71874
-
Teresa Johnson authored
This restores 2af97be8 (reverted at 6288f86e), with all the fixes I had applied at the time, along with a new fix for non-determinism in the ordering of a couple of passes due to being accessed as parameters on the same call. I've also added --dump-input=fail to the new tests so I can more thoroughly fix any additional failures.
-
Kadir Cetinkaya authored
-