- Jun 14, 2020
-
-
Uday Bondhugula authored
Add a few more commonly used ops and missing keywords.
-
njames93 authored
-
Simon Pilgrim authored
Ensure codegen is still reasonable - ideally we'd make use of MOVMSK for this.
-
Xing GUO authored
[NFC] mv llvm/test/tools/obj2yaml/macho-DWARF-debug-ranges.yaml llvm/test/ObjectYAML/MachO/DWARF-debug_ranges.yaml
-
Xing GUO authored
This patch adds a new field `bool Is64bit` in `DWARFYAML::Data` to indicate the address size of target. It's helpful for inferring the `AddrSize` in some DWARF sections. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D81709
-
Fangrui Song authored
[IteratedDominanceFrontier] Decrease number of SmallPtrSet::insert and delete unneeded SmallVector::clear Also, fix the argument name to be consistent with the declaration.
-
Craig Topper authored
[X86] Add mayLoad flag to FARCALL*m/FARJMP memory instrutions. Add 'm' to the end of FARJMP64/FARCALL64 instruction names. We never codegen them so this doesn't matter in practice. But sometimes someone comes along and tries to use these flags for something else. LIke the Load Value Inject inline assembly handling.
-
Craig Topper authored
Previously, the X86AsmParser would issue a warning whenever a ret instruction is encountered. This patch changes the behavior to automatically transform each ret instruction in an inline assembly stream into: shlq $0, (%rsp) lfence ret which is secure, according to https://software.intel.com/security-software-guidance/insights/deep-dive-load-value-injection#specialinstructions. Patch by Scott Constable with some minor changes by Craig Topper.
-
Craig Topper authored
If the input to the bitcast is a sign bit test, it makes sense to directly use vpmovmskb or vmovmskps/pd. This removes the need to copy the sign bits to a k-register and then to a GPR. Fixes PR46200. Differential Revision: https://reviews.llvm.org/D81327
-
Craig Topper authored
[X86] Move -x86-use-vzeroupper command line flag into runOnMachineFunction for the pass itself rather than the pass pipeline construction This pass has no dependencies on other passes so conditionally including it in the pipeline doens't do much. Just move it the pass itself to keep it isolated.
-
Roman Lebedev authored
-
Vladimir Vereschaka authored
This reverts commit 3ea9450b. The commit fails the remote library tests on the toolchain builders: http://lab.llvm.org:8011/builders/llvm-clang-win-x-armv7l http://lab.llvm.org:8011/builders/llvm-clang-win-x-aarch64
-
Florian Hahn authored
isOverwrite expects the later location as first argument and the earlier result later. The adjusted call is intended to check whether CC overwrites DefLoc.
-
Craig Topper authored
A lot of what EVEX->VEX does is equivalent to what the prioritization in the assembly parser does. When an AVX mnemonic is used without any EVEX features or XMM16-31, the parser will pick the VEX encoding. Since codegen doesn't go through the parser, we should also use VEX instructions when we can so that the code coming out of integrated assembler matches what you'd get from outputing an assembly listing and parsing it. The pass early outs if AVX isn't enabled and uses TSFlags to check for EVEX instructions before doing the more costly table lookups. Hopefully that's enough to keep this from impacting -O0 compile times.
-
Craig Topper authored
relocImm was a complexPattern that handled both ConstantSDNode and X86Wrapper. But it was only applied selectively because using it would cause patterns to be not importable into FastISel or GlobalISel. So it only got applied to flag setting instructions, stores, RMW arithmetic instructions, and rotates. Most of the test changes are a result of making patterns available to GlobalISel or FastISel. The absolute-cmp.ll change is due to this fixing a pattern ordering issue to make an absolute symbol match to an 8-bit immediate before trying a 32-bit immediate. I tried to use PatFrags to reduce the repetition, but I was getting errors from TableGen.
-
- Jun 13, 2020
-
-
Amanieu d'Antras authored
Summary: Bugzilla: https://bugs.llvm.org/show_bug.cgi?id=46060 I've also added the Extra_IsConvergent flag which was missing from FastISel. Reviewers: echristo Reviewed By: echristo Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D80759
-
Xing GUO authored
-
Bruno Ricci authored
This saves sizeof(void *) bytes per LambdaExpr. Review-after-commit since this is a straightforward change similar to the work done on other nodes. NFC.
-
mydeveloperday authored
Summary: This patch fixes bug #44192 When clang-format is run with option AllowShortBlocksOnASingleLine, it is expected to either succeed in putting the short block with its control statement on a single line or fail and leave the block as is. When brace wrapping after control statement is activated, if the block + the control statement length is superior to column limit but the block alone is not, clang-format puts the block in two lines: one for the control statement and one for the block. This patch removes this unexpected behaviour. Current unittests are updated to check for this behaviour. Patch By: Bouska Reviewed By: MyDeveloperDay Differential Revision: https://reviews.llvm.org/D71512
-
Bruno Ricci authored
This test illustrate the bug fixed in D81787.
-
Bruno Ricci authored
...as done. This is a NAD which has always been implemented correctly.
-
Bruno Ricci authored
...lambda-expression) as done. They have been allowed since at least clang 3.3.
-
Xing GUO authored
-
Nikita Popov authored
This was reverted due to a reported memory usage increase. However, a test case was never provided, and I wasn't able to reproduce it myself. Relative to the original patch, I have moved the block cache structure behind a unique_ptr, to avoid storing a huge structure inside a DenseMap. --- Variant on D70103 to fix https://bugs.llvm.org/show_bug.cgi?id=43909. The caching is switched to always use a BB to cache entry map, which then contains per-value caches. A separate set contains value handles with a deletion callback. This allows us to properly invalidate overdefined values. A possible alternative would be to always cache by value first and have per-BB maps/sets in the each cache entry. In that case we could use a ValueMap and would avoid the separate value handle set. I went with the BB indexing at the top level to make it easier to integrate D69914, but possibly that's not the right choice. Differential Revision: https://reviews.llvm.org/D70376
-
Amanieu d'Antras authored
Summary: This allows unwinding to work across signal handler frames where the IP of the previous frame is not the same as the current value of the RA register. This is particularly useful for acquiring backtraces from signal handlers. I kept the size of the context structure the same to avoid ABI breakage; the PC is stored in the previously unused slot for register 0. Reviewers: #libunwind, mhorne, lenary, luismarques, arichardson, compnerd Reviewed By: #libunwind, mhorne, lenary, compnerd Subscribers: kamleshbhalui, jrtc27, bsdjhb, arichardson, compnerd, simoncook, kito-cheng, shiva0217, rogfer01, rkruppe, psnobl, benna, Jim, s.egerton, sameer.abuasal, evandro, llvm-commits, libcxx-commits Tags: #libunwind, #llvm Differential Revision: https://reviews.llvm.org/D78931
-
Jonas Devlieghere authored
-
Jonas Devlieghere authored
Remove unused argument, simply code and reformat.
-
Craig Topper authored
Brand index was a feature some Pentium III and Pentium 4 CPUs. It provided an index into a software lookup table to provide a brand name for the CPU. This is separate from the family/model. It's unclear to me why this index being non-zero was used to block checking family/model. I think the effect of this is that -march=native was not working correctly on the CPUs that have a non-zero brand index. They are all about 20 years old so this probably hasn't affected many users.
-
Craig Topper authored
Brand index was a feature some Pentium III and Pentium 4 CPUs. It provided an index into a software lookup table to provide a brand name for the CPU. This is separate from the family/model. It's unclear to me why this index being non-zero was used to block checking family/model. None of the CPUs that had a non-zero brand index are supported by __builtin_cpu_is or target multi-versioning so this should have no real effect.
-
Mehdi Amini authored
GCC5 errors out with: llvm/lib/Analysis/StackSafetyAnalysis.cpp:935:21: error: use of 'KV' before deduction of 'auto' for (auto &KV : KV.second.Params) { ^ -
Dan Gohman authored
Implement the `hasProtectedVisibility()` hook to indicate that, like Darwin, WebAssembly doesn't support "protected" visibility. On ELF, "protected" visibility is intended to be an optimization, however in practice it often [isn't], and ELF documentation generally ranges from [not mentioning it at all] to [strongly discouraging its use]. [isn't]: https://www.airs.com/blog/archives/307 [not mentioning it at all]: https://gcc.gnu.org/wiki/Visibility [strongly discouraging its use]: https://www.akkadia.org/drepper/dsohowto.pdf While here, also mention the new Reactor support in the release notes.
-
Craig Topper authored
[X86] Combine the three feature variables in getHostCPUName into an array and pass it around as an array reference. This makes the setting and clearing of bits simpler.
-
Craig Topper authored
[X86] Combine to two feature variables in __cpu_indicator_init into an array and pass them around as pointer we can treat as an array. This simplifies the indexing code to set and test bits.
-
Craig Topper authored
Seems like this may be needed in order for the linker to find the symbol. At least on my Mac.
-
Vitaly Buka authored
Summary: ThinLTO linking runs dataflow processing on collected function parameters. Then StackSafetyGlobalInfoWrapperPass in ThinLTO backend will run as usual looking up to external symbol in the summary if needed. Depends on D80985. Reviewers: eugenis, pcc Reviewed By: eugenis Subscribers: inglorion, hiraditya, steven_wu, dexonsmith, cfe-commits, llvm-commits Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D81242
-
Vitaly Buka authored
-
Eric Schweitz authored
[flang] Add the helper class for building fir.do_loop operations. A fir.do_loop models the semantics of a Fortran DO loop construct. One can use this operation to explicitly capture a DO loop for passing into the high-level optimizer. Differential revision: https://reviews.llvm.org/D81692
-
George Mitenkov authored
This patch has shift ops conversion implementation. In SPIR-V dialect, `Shift` and `Base` may have different bit width. On the contrary, in LLVM dialect both `Base` and `Shift` have to be of the same bit width. This leads to the following cases: - if `Base` has the same bit width as `Shift`, the conversion is straightforward. - if `Base` has a greater bit width than `Shift`, shift is sign/zero extended first. Then the extended value is passed to the shift. - otherwise the conversion is considered to be illegal. Differential Revision: https://reviews.llvm.org/D81546
-