- Jul 28, 2020
-
-
Florian Hahn authored
Increase test coverage for upcoming changes to how SCEV deals with LCSSA phis.
-
Camille Coti authored
When the f18 frontend calls the link editor, put the libraries and object files in the correct order. Fixes the issues reported here https://github.com/flang-compiler/flang/issues/897 Reviewed By: sscalpone, AlexisPerry Differential Revision: https://reviews.llvm.org/D84340
-
Xing GUO authored
This patch renames checkListEntryOperands() to checkOperandCount(), so that we are able to check DWARF expression operands using the same function. Reviewed By: jhenderson, labath Differential Revision: https://reviews.llvm.org/D84624
-
Sander de Smalen authored
While deallocating the stackframe, the offset used to reload the callee-saved registers was not pointing to the SVE callee-saves, but rather to the whole SVE area. +--------------+ | GRP callee | | saves | +--------------+ <- FP | SVE callee | | saves | +--------------+ <- Should restore SVE callee saves from here | SVE Spills | | and Locals | +--------------+ <- instead of from here. | | : : | | +--------------+ <- SP Reviewed By: paulwalker-arm Differential Revision: https://reviews.llvm.org/D84539
-
Sander de Smalen authored
Instead of aligning the last callee-saved-register slot to the stack alignment (16 bytes), just align the SVE callee-saved block. This also simplifies the code that allocates space for the callee-saves. This change is needed to make sure the offset to which the callee-saved register is spilled, corresponds to the offset used for e.g. unwind call frame instructions. Reviewers: efriedma, paulwalker-arm, david-arm, rengolin Reviewed By: efriedma Differential Revision: https://reviews.llvm.org/D84042
-
Sander de Smalen authored
Fixed stack objects are preallocated and defined to be allocated before any of the regular stack objects. These are normally used to model stack arguments. The AAPCS does not support passing SVE registers on the stack by value (only by reference). The current layout also doesn't place them before all stack objects, but rather before all SVE objects. Removing this simplifies the code that emits the allocation/deallocation around callee-saved registers (D84042). This patch also removes all uses of fixedStack from from framelayout-sve.mir, where this was used purely for testing purposes. Reviewers: paulwalker-arm, efriedma, rengolin Reviewed By: paulwalker-arm Differential Revision: https://reviews.llvm.org/D84538
-
Bruno Ricci authored
As explained in eb10b065, sending a NamedDecl* in a diagnostic should generally be preferred over sending the DeclarationName from getDeclName(). Let's document that.
-
Bruno Ricci authored
-
Christian Sigg authored
Do not return error code, instead return created resource handles or void. Error reporting is done by the library function. Reviewed By: herhut Differential Revision: https://reviews.llvm.org/D84660
-
Xing GUO authored
This patch adds support for emitting custom range list content. We are able to handcraft a custom range list via the following syntax. ``` debug_rnglists: - Lists: - Entries: - Operator: DW_RLE_startx_endx Values: [ 0x1234, 0x1234 ] - Content: '1234567890abcdef' - Content: 'abcdef1234567890' ``` Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D84618
-
Jinsong Ji authored
This reverts commit bf544fa1. Fixed the typo in PPCInstrInfo.cpp.
-
Nathan James authored
-
Georgii Rymar authored
This adds the `ShType` key similar to others `Sh*` keys we have. My use case is the following. Imagine we have a `SHT_SYMTAB_SHNDX` section and want to hide it from a dumper. The natural way would be to do something like: ``` - Name: .symtab_shndx Type: [[TYPE=SHT_SYMTAB_SHNDX]] Entries: [ 0, 1 ] ``` and then change the TYPE from `SHT_SYMTAB_SHNDX` to something else, for example to `SHT_PROGBITS`. But we have a problem: regular sections does not have `Entries` key, so yaml2obj will be unable to produce a section. The solution is to introduce a `ShType` key to override the final type. This is not the first time I am facing the need to change the type. I was able to invent workarounds or solved issues differently in the past, but finally came to conclusion that we just should support the `ShType`. Differential revision: https://reviews.llvm.org/D84738
-
Joel E. Denny authored
On runtime failures, D83963 causes the runtime to abort instead of merely exiting with a non-zero value, but many tests in the libomptarget test suite still expect the former behavior. This patch updates the test suite and was discussed in post-commit comments on D83963 and D84557.
-
Evgeniy Brevnov authored
There is a silly mistake where release() is used instead of reset() for free resources of unique pointer. Reviewed By: ebrevnov Differential Revision: https://reviews.llvm.org/D84747
-
Tim Northover authored
Many Thumb1 instructions are defined to set CPSR if executed outside an IT block, but leave it alone from inside one. In MachineIR this is represented by whether an optional register is CPSR or NoReg (0), and affects how the instructions are printed. This sets the instruction to the appropriate form during if-conversion.
-
Stephan Herhut authored
The current transformation to shape.reduce does not support tensor values. This adds the required changes to make that work, including fixing the builder for shape.reduce. Differential Revision: https://reviews.llvm.org/D84744
-
Anirudh Prasad authored
This patch refactors the llvm tools namely, llvm-stress and sancov, as well as the llvm TableGen utility, to use the new InitLLVM interface which encapsulates PrettyStackTrace. This is from https://reviews.llvm.org/D70702, but only for LLVM. Reviewed-by: Kai Differential Revision: https://reviews.llvm.org/D83484
-
Luofan Chen authored
The print() function in the `AbstractAttribute` structure overrides the function in the `AADepGraphNode`, so we need to mark it as override. This should fix a buildbot failure introduced by 5ee07dc5.
-
Rainer Orth authored
Neither the Illumos `ld` nor the Solaris 11.3 one support the `--version-script` and `z gnu-linker-script-compat` options, which breaks the `compiler-rt` build. This patch checks for both options instead of hardcoding their use. Tested on `amd-pc-solaris2.11` (all of Solaris 11.4, 11.3, and Illumos). Differential Revision: https://reviews.llvm.org/D84559
-
Stefan Pintilie authored
Currently the instruction paddi always takes s34imm as the type for the 34 bit immediate. However, the PC Relative form of the instruction should not produce the same fixup as the non PC Relative form. This patch splits the s34imm type into s34imm and s34imm_pcrel so that two different fixups can be emitted. Reviewed By: nemanjai, #powerpc, kamaub Differential Revision: https://reviews.llvm.org/D83255
-
Evgeniy Brevnov authored
In order to facilitate review of D79485 here is a small NFC change which restructures code around handling of SCCs in BPI. Reviewed By: davidxl Differential Revision: https://reviews.llvm.org/D84514
-
Kai Nacke authored
The function setLastAccessAndModificationTime() uses function futimens() or futimes() by default. Both functions are not available in z/OS, therefore functionality is implemented using __fchattr() on z/OS. Reviews by: abhina.sreeskantharajan Differential Revision: https://reviews.llvm.org/D83945
-
lorenzo chelini authored
- replace DotOp, now that DRR rules have been dropped. - Capture arguments mismatch in the parser. The number of parsed arguments must equal the number of expected arguments. Reviewed By: ftynse, nicolasvasilache Differential Revision: https://reviews.llvm.org/D82952
-
Hans Wennborg authored
make_unique is a C++14 feature, and this prevents us from building on Ubuntu Trusty. While we do use a C++14 compatible toolchain for building in general, we fall back to the system toolchain for building the compiler-rt tests. The reason is that those tests get cross-compiled for e.g. 32-bit and 64-bit x86, and while the toolchain provides libstdc++ in those flavours, the resulting compiler-rt test binaries don't get RPATH set and so won't start if they're linked with that toolchain. We've tried linking the test binaries against libstdc++ statically, by passing COMPILER_RT_TEST_COMPILER_CFLAGS=-static-libstdc++. That mostly works, but some test targets append -lstdc++ to the compiler invocation. So, after spending way too much time on this, let's just avoid C++14 here for now.
-
Georgii Rymar authored
This will allow to extend them (needed for D84651).
-
Mikhail Kalashnikov authored
Stop using static variables for keeping track of symbol indices. Bugfix for: https://bugs.llvm.org/show_bug.cgi?id=46777 Differential revision: https://reviews.llvm.org/D84606
-
Haojian Wu authored
Reviewed By: nridge Differential Revision: https://reviews.llvm.org/D84461
-
Luofan Chen authored
This patch added dependency graph to the attributor so that we can dump the dependencies between AAs more easily. We can also apply general graph algorithms to the graph, making it easier for us to create deep wrappers. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D78861
-
Bruno Ricci authored
-
Serge Pavlov authored
This is recommit of f51bc4fb, reverted in 8577595e, because the function `flock` is not available on Solaris. In this variant `flock` was replaced with `fcntl`, which is a POSIX function. New functions `lockFile`, `tryLockFile` and `unlockFile` implement simple file locking. They lock or unlock entire file. This must be enough to support simulataneous writes to log files in parallel builds. Differential Revision: https://reviews.llvm.org/D78896
-
Bruno Ricci authored
Background: ----------- There are two related argument types which can be sent into a diagnostic to display the name of an entity: DeclarationName (ak_declarationname) or NamedDecl* (ak_nameddecl) (there is also ak_identifierinfo for IdentifierInfo*, but we are not concerned with it here). A DeclarationName in a diagnostic will just be streamed to the output, which will directly result in a call to DeclarationName::print. A NamedDecl* in a diagnostic will also ultimately result in a call to DeclarationName::print, but with two customisation points along the way: The first customisation point is NamedDecl::getNameForDiagnostic which is overloaded by FunctionDecl, ClassTemplateSpecializationDecl and VarTemplateSpecializationDecl to print the template arguments, if any. The second customisation point is NamedDecl::printName. By default it just streams the stored DeclarationName into the output but it can be customised to provide a user-friendly name for an entity. It is currently overloaded by DecompositionDecl and MSGuidDecl. What this patch does: --------------------- For many diagnostics a DeclarationName is used instead of the NamedDecl*. This bypasses the two customisation points mentioned above. This patches fix this for diagnostics in Sema.cpp, SemaCast.cpp, SemaChecking.cpp, SemaDecl.cpp, SemaDeclAttr.cpp, SemaDecl.cpp, SemaOverload.cpp and SemaStmt.cpp. I have only modified diagnostics where I could construct a test-case which demonstrates that the change is appropriate (either with this patch or the next one). Reviewed By: erichkeane, aaron.ballman Differential Revision: https://reviews.llvm.org/D84656
-
Bruno Ricci authored
The underlying ABI forces FormatToken to have a lot of padding. Currently (on x86-64 linux) `sizeof(FormatToken) == 288`. After this patch `sizeof(FormatToken) == 232`. No functional changes. Reviewed By: MyDeveloperDay Differential Revision: https://reviews.llvm.org/D84306
-
Joachim Protze authored
Also add $BUILD/lib to the LIBRARY_PATH to fix https://bugs.llvm.org/show_bug.cgi?id=46836. Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D84557
-
Simon Pilgrim authored
An initial backend patch towards fixing the various poor HADD combines (PR34724, PR41813, PR45747 etc.). This extends isHorizontalBinOp to check if we have per-element horizontal ops (odd+even element pairs), but not in the expected serial order - in which case we build a "post shuffle mask" that we can apply to the HOP result, assuming we have fast-hops/optsize etc. The next step will be to extend the SHUFFLE(HOP(X,Y)) combines as suggested on PR41813 - accepting more post-shuffle masks even on slow-hop targets if we can fold it into another shuffle. Differential Revision: https://reviews.llvm.org/D83789
-
serge-sans-paille authored
All analysis are preserved if there's no local change, and thanks to 3667d87a this property is enforced for all passes. Skipping the dependency computation improves the performance when there's a lot of small functions, where only a few change happen. Thanks to Nikita Popov who provided this numbers (extract below) https://llvm-compile-time-tracker.com/compare.php?from=183342c0a9850e60dd7a004b651c83dfb3a7d25e&to=f2f91e6a2743070471cc9471e4e8c646e50c653c&stat=instructions O3: (number of instructions) Benchmark Old New kimwitu++ 60783M 59968M (-1.34%) sqlite3 73200M 73083M (-0.16%) consumer-typeset 52776M 52712M (-0.12%) Bullet 133709M 132940M (-0.58%) tramp3d-v4 123864M 123186M (-0.55%) mafft 55534M 55477M (-0.10%) ClamAV 76292M 76164M (-0.17%) lencod 103190M 103061M (-0.13%) SPASS 64068M 63713M (-0.55%) 7zip 197332M 196308M (-0.52%) geomean 85750M 85389M (-0.42%) Differential Revision: https://reviews.llvm.org/D80707
-
Georgii Rymar authored
Currently, when dumping section headers, llvm-readelf prints "RELR" for SHT_ANDROID_RELR/SHT_RELR sections. The behavior was introduced in D47919 and revealed in D84330. But "SHT_ANDROID_RELR" has a different value from "SHT_RELR". Also, "SHT_ANDROID_REL/SHT_ANDROID_RELA" are printed as "ANDROID_REL/ANDROID_RELA", what makes the handling of the "SHT_ANDROID_RELR" inconsistent. This patch makes llvm-readelf to print "ANDROID_RELR" instead of "RELR". Differential revision: https://reviews.llvm.org/D84393
-
Kristina Bessonova authored
[clang][cmake] Force CMAKE_LINKER for multistage build in case of BOOTSTRAP_LLVM_ENABLE_LLD and MSVC The issue with LLVM_ENABLE_LLD is that it just passes -fuse-ld=lld to compiler/linker options which makes sense only for those platforms where cmake invokes a compiler driver for linking. On Windows (MSVC) cmake invokes the linker directly and requires CMAKE_LINKER to be specified otherwise it defaults CMAKE_LINKER to be link.exe. This patch allows BOOTSTRAP_LLVM_ENABLE_LLD to set CMAKE_LINKER in two cases: * if building for host Windows, * if crosscompiling for target Windows. It also skips adding '-fuse-ld=lld' to make lld-link not warning about 'unknown argument'. This fixes build with `clang/cmake/caches/DistributionExample.cmake` on Windows. Reviewed By: phosek Differential Revision: https://reviews.llvm.org/D80873
-
Chen Zheng authored
-
Roman Lebedev authored
While this doesn't appear to help with the perf issue being exposed by D84108, the function as-is is very weird, convoluted, and what's worse, recursive. There was no need for `SpeculativelyAvaliableAndUsedForSpeculation`, tri-state choice is enough. We don't even ever check for that state. The basic idea here is that we need to perform a depth-first traversal of the predecessors of the basic block in question, either finding a preexisting state for the block in a map, or inserting a "placeholder" `SpeculativelyAvaliable`, If we encounter an `Unavaliable` block, then we need to give up search, and back-propagate the `Unavaliable` state to the each successor of said block, more specifically to the each `SpeculativelyAvaliable` we've just created. However, if we have traversed entirety of the predecessors and have not encountered an `Unavaliable` block, then it must mean the value is fully available. We could update each inserted `SpeculativelyAvaliable` into a `Avaliable`, but we don't need to, as assertion excersizes, because we can assume that if we see an `SpeculativelyAvaliable` entry, it is actually `Avaliable`, because during the time we've produced it, if we would have found that it has an `Unavaliable` predecessor, we would have updated it's successors, including this block, into `Unavaliable` Reviewed By: fhahn Differential Revision: https://reviews.llvm.org/D84181
-