- Jun 03, 2020
-
-
Vitaly Buka authored
Summary: This removes two analyses from pipeline. Depends on D80771. Reviewers: eugenis Reviewed By: eugenis Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D80780
-
Wei Mi authored
When sampleFDO is enabled, people may expect they can use -fno-profile-sample-use to opt-out using sample profile for a certain file. That could be either for debugging purpose or for performance tuning purpose. However, when thinlto is enabled, if a function in file A compiled with -fno-profile-sample-use is imported to another file B compiled with -fprofile-sample-use, the inlined copy of the function in file B may still get its profile annotated. The inconsistency may even introduce profile unused warning because if the target is not compiled with explicit debug information flag, the function in file A won't have its debug information enabled (debug information will be enabled implicitly only when -fprofile-sample-use is used). After it is imported into file B which is compiled with -fprofile-sample-use, profile annotation for the outline copy of the function will fail because the function has no debug information, and that will trigger profile unused warning. We add a new attribute use-sample-profile to control whether a function will use its sample profile no matter for its outline or inline copies. That will make the behavior of -fno-profile-sample-use consistent. Differential Revision: https://reviews.llvm.org/D79959
-
Adrian Prantl authored
This has no effect on the testsuite and was only needed in an early prototype from before debugserver was able to report the correct platform.
-
Jonas Devlieghere authored
Don't use the environment to pass values to the builder. Use the configuration instead.
-
Jonas Devlieghere authored
The Darwin builder is passing some of the make arguments trough the environment instead of the command line. Update the dsym builder to do the same as the other variants.
-
Thomas Raoux authored
Stack variable was being used beyond its lifetime. Differential Revision: https://reviews.llvm.org/D80948
-
Thomas Raoux authored
Scope, rows and columns need to be encoded in a separate constant operation. Differential Revision: https://reviews.llvm.org/D80852
-
Guozhi Wei authored
As shown in http://lists.llvm.org/pipermail/llvm-dev/2020-May/141854.html, widen load can also cause stall. Add a flag to guard the widening code, so users can disable it and evaluate its performance impact. Differential Revision: https://reviews.llvm.org/D80943
-
Jonas Devlieghere authored
Don't use the environment to pass values to the builder that are present in the dotest configuration module. A subsequent patch will pass the remaining values through the configuration instead of the environment.
-
Vitaly Buka authored
This lets us to remove !stack-safe metadata and better controll when to perform StackSafety analysis. Reviewers: eugenis Subscribers: hiraditya, steven_wu, dexonsmith, cfe-commits, llvm-commits Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D80771
-
Vitaly Buka authored
-
Jan Korous authored
-
Nick Desaulniers authored
Summary: An upgrade of LLVM for CrOS [0] containing [1] triggered a bunch of errors related to writing to reserved registers for a Linux kernel's arm64 compat vdso (which is a aarch32 image). After a discussion on LKML [2], it was determined that -f{no-}omit-frame-pointer was not being specified. Comparing GCC and Clang [3], it becomes apparent that GCC defaults to omitting the frame pointer implicitly when optimizations are enabled, and Clang does not. ie. setting -O1 (or above) implies -fomit-frame-pointer. Clang was defaulting to -fno-omit-frame-pointer implicitly unless -fomit-frame-pointer was set explicitly. Why this becomes a problem is that the Linux kernel's arm64 compat vdso contains code that uses r7. r7 is used sometimes for the frame pointer (for example, when targeting thumb (-mthumb)). See useR7AsFramePointer() in llvm/llvm-project/llvm/lib/Target/ARM/ARMSubtarget.h. This is mostly for legacy/compatibility reasons, and the 2019 Q4 revision of the ARM AAPCS looks to standardize r11 as the frame pointer for aarch32, though this is not yet implemented in LLVM. Users that are reliant on the implicit value if unspecified when optimizations are enabled should explicitly choose -fomit-frame-pointer (new behavior) or -fno-omit-frame-pointer (old behavior). [0] https://bugs.chromium.org/p/chromium/issues/detail?id=1084372 [1] https://reviews.llvm.org/D76848 [2] https://lore.kernel.org/lkml/20200526173117.155339-1-ndesaulniers@google.com/ [3] https://godbolt.org/z/0oY39t Reviewers: kristof.beyls, psmith, danalbert, srhines, MaskRay, ostannard, efriedma Reviewed By: psmith, danalbert, srhines, MaskRay, efriedma Subscribers: efriedma, olista01, MaskRay, vhscampos, cfe-commits, llvm-commits, manojgupta, llozano, glider, hctim, eugenis, pcc, peter.smith, srhines Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D80828 -
Diego Caballero authored
This patch enables affine loop fusion for loops with affine vector loads and stores. For that, we only had to use affine memory op interfaces in LoopFusionUtils.cpp and Utils.cpp so that vector loads and stores are also taken into account. Reviewed By: andydavis1, ftynse Differential Revision: https://reviews.llvm.org/D80971
-
Jez Ng authored
It appears that MSVC doesn't resize the enum properly to fit the constants.
-
Eric Christopher authored
later.
-
Nicolas Vasilache authored
-
Richard Smith authored
-
Craig Topper authored
Add a MadeChange flag so we don't call RemoveDeadNodes unless something changed.
-
Reid Kleckner authored
Previously, the SpecificAllocator was a static local in the `make<T>` function template. Using static locals is nice because they are only constructed and registered if they are accessed. However, if there are multiple calls to make<> with different constructor parameters, we would get multiple static local variable instances. This is undesirable and leads to extra memory allocations. I noticed there were two sources of DefinedRegular allocations while checking heap profiles.
-
Craig Topper authored
-Fix one place where we had a X86vzload64 but should have had X86vzload32. -Make sure all patterns that have scalar_to_vector+loadi64 also have scalar_to_vector+f64 to match 32-bit codegen. -Add some bitcasts that were missing from patterns. -Make sure that if we have a scalar_to_vector+load pattern we also have a vzload pattern. We probably need some better canonicalization to avoid having so many patterns.
-
Richard Smith authored
parameters with default arguments. Directly follow the wording by relaxing the AST invariant that all parameters after one with a default arguemnt also have default arguments, and removing the diagnostic on missing default arguments on a pack-expanded parameter following a parameter with a default argument. Testing also revealed that we need to special-case explicit specializations of templates with a pack following a parameter with a default argument, as such explicit specializations are otherwise impossible to write. The standard wording doesn't address this case; a issue has been filed. This exposed a bug where we would briefly consider a parameter to have no default argument while we parse a delay-parsed default argument for that parameter, which is also fixed. Partially incorporates a patch by Raul Tambre.
-
Kadir Cetinkaya authored
-
LLVM GN Syncbot authored
-
Paula Toth authored
Summary: This is failing on the asan build because we use `-nostdlib`. I also took this opportunity to make the target name match the naming structure we've been using. Reviewers: sivachandra Reviewed By: sivachandra Subscribers: mgorny, tschuett, ecnelises, libc-commits Tags: #libc-project Differential Revision: https://reviews.llvm.org/D81029
-
HazemAbdelhafez authored
This commit adds basic matrix type support to the SPIR-V dialect including type definition, IR assembly, parsing, printing, and (de)serialization. Differential Revision: https://reviews.llvm.org/D80594
-
Eric Christopher authored
-
Amy Kwan authored
This patch implements a target independent DAG combine to produce multiply-high instructions from shifts. This DAG combine will combine shifts for any type as long as the MULH on the narrow type is legal. For now, it is enabled on PowerPC as PowerPC is the only target that has an implementation of the isMulhCheaperThanMulShift TLI hook introduced in D78271. Moreover, this DAG combine focuses on catching the pattern: (shift (mul (ext <narrow_type>:$a to <wide_type>), (ext <narrow_type>:$b to <wide_type>)), <narrow_width>) to produce mulhs when we have a sign-extend, and mulhu when we have a zero-extend. The patch performs the following checks: - Operation is a right shift arithmetic (sra) or logical (srl) - Input to the shift is a multiply - Both operands to the shift are sext/zext nodes - The extends into the multiply are both the same - The narrow type is half the width of the wide type - The shift amount is the width of the narrow type - The respective mulh operation is legal Differential Revision: https://reviews.llvm.org/D78272
-
Fangrui Song authored
Reviewed By: dblaikie, echristo Differential Revision: https://reviews.llvm.org/D80883
-
Nathan James authored
-
Jez Ng authored
My test refactoring in D80217 seems to have caused yaml2obj to emit unaligned nlist_64 structs, causing ASAN'd lld to be unhappy. I don't think this is an issue with yaml2obj though -- llvm-mc also seems to emit unaligned nlist_64s. This diff makes lld able to safely do aligned reads under ASAN builds while hopefully creating no overhead for regular builds on architectures that support unaligned reads. Reviewed By: thakis Differential Revision: https://reviews.llvm.org/D80414
-
Jez Ng authored
For consistency. The no-id-dylib test was originally referencing the Inputs/ folder via a relative path. Instead of updating that path, I decided to make the test self-contained. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D80217
-
Jez Ng authored
That's what ld64 uses for 64-bit targets. I figured it's best to make this change sooner rather than later since a bunch of our tests are relying on hardcoded addresses that depend on this value. Reviewed By: smeenai Differential Revision: https://reviews.llvm.org/D80177
-
Jez Ng authored
... instead of silently emitting a reference to the zero address. Reviewed By: smeenai Differential Revision: https://reviews.llvm.org/D80169
-
Jez Ng authored
I considered making a `Target::validate()` method, but I wasn't sure how I felt about the overhead of doing yet another switch-dispatch on the relocation type, so I put the validation in `relocateOne` instead... might be a bit of a micro-optimization, but `relocateOne` does assume certain things about the relocations it gets, and this error handling makes that explicit, so it's not a totally unreasonable code organization. Reviewed By: smeenai Differential Revision: https://reviews.llvm.org/D80049
-
Douglas Yung authored
Commit 301a6da8 changed the test and modified a CHECK line that is inconsisent with similar lines elsewhere in the file and was causing failures when run in slightly different configurations. This change makes the line more consistent and should fix the bot failure. Failure link: http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast/builds/68593
-
Thomas Lively authored
Summary: Jump tables for most targets cannot handle out of range indices by themselves, so LLVM emits range checks to guard the jump tables. WebAssembly, on the other hand, implements jump tables using the br_table instruction, which takes a default branch target as an operand, making the range checks redundant. This patch introduces a new MachineFunction pass in the WebAssembly backend to find and eliminate the redundant range checks. Reviewers: aheejin, dschuff Subscribers: mgorny, sbc100, jgravelle-google, hiraditya, sunfish, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D80863
-
Jan Korous authored
isRefCountable asserts that the record passed as an argument has a definition available. Fixes: https://bugs.llvm.org/show_bug.cgi?id=46142 Differential Revision: https://reviews.llvm.org/D81017
-
kamlesh kumar authored
Provides an assembly implementation of muldi3 for RISC-V, to solve bug 43388. Since the implementation is the same as for mulsi3, that code was moved to `riscv/int_mul_impl.inc` and is now reused by both `mulsi3.S` and `muldi3.S`. Differential Revision: https://reviews.llvm.org/D80465
-
Thomas Lively authored
Summary: The shuffle intrinsic macros did not parenthesize usages of their constant parameters, which could lead to incorrect results due to operator precedence issues. This patch fixes the problem by adding the missing paretheses. Reviewers: aheejin Subscribers: dschuff, sbc100, jgravelle-google, sunfish, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D80968
-