- Dec 22, 2020
-
-
Quentin Chateau authored
clangd actions have various naming schemes, the most common being PascalCase. This commit applies PascalCase to all clangd actions, and fix the status rendering in `renderTUAction` to look more consistent. Reviewed By: sammccall Differential Revision: https://reviews.llvm.org/D93546
-
Nikita Popov authored
byval arguments should mostly get the same treatment as noalias arguments in alias analysis. This was not the case for the isIdentifiedFunctionLocal() function. Marking byval arguments as identified function local means that they cannot alias with other arguments, which I believe is correct. Differential Revision: https://reviews.llvm.org/D93602
-
Hafiz Abid Qadeer authored
This commit replace 'master' with 'main' in llvm/docs. Reviewed By: sammccall, kristof.beyls Differential Revision: https://reviews.llvm.org/D92831
-
Peter Collingbourne authored
Kernel support for MTE has been released in Linux 5.10. This means that it is a stable API and we no longer need to make the support conditional on a macro. We do need to provide conditional definitions of the new macros though in order to avoid a dependency on new kernel headers. Differential Revision: https://reviews.llvm.org/D93513
-
Michael Liao authored
-
Dmitry Preobrazhensky authored
Corrected to fix sanitizer error introduced by 8ab5770a
-
Dmitry Preobrazhensky authored
See bug 48515 (https://bugs.llvm.org/show_bug.cgi?id=48515) Reviewers: rampitec Differential Revision: https://reviews.llvm.org/D93548
-
Dmitry Preobrazhensky authored
See bug 48513 Reviewers: rampitec Differential Revision: https://reviews.llvm.org/D93550
-
Thomas Raoux authored
Transfer_ops can now work on both buffers and tensor. Right now, lowering of the tensor case is not supported yet. Differential Revision: https://reviews.llvm.org/D93500
-
David Spickett authored
b2ba6867 was landed with updated error messages in the example file but not in the test file.
-
Fangrui Song authored
For x86-64, D33100 added a diagnostic for local-exec TLS relocations referencing a preemptible symbol. This patch generalizes it to non-preemptible symbols (see `-Bsymbolic` in `tls.s`) on all targets. Local-exec TLS relocations resolve to offsets relative to a fixed point within the static TLS block, which are only meaningful for the executable. With this change, `clang -fpic -shared -fuse-ld=bfd a.c` on the following example will be flagged for AArch64/ARM/i386/x86-64/RISC-V ``` static __attribute__((tls_model("local-exec"))) __thread long TlsVar = 42; long bump() { return ++TlsVar; } ``` Note, in GNU ld, at least arm, riscv and x86's ports have the similar diagnostics, but aarch64 and ppc64 do not error. Differential Revision: https://reviews.llvm.org/D93331 -
Fangrui Song authored
Alternative to D91611. The TLS General Dynamic/Local Dynamic code sequences need to mark `__tls_get_addr` with R_PPC64_TLSGD or R_PPC64_TLSLD, e.g. ``` addis r3, r2, x@got@tlsgd@ha # R_PPC64_GOT_TLSGD16_HA addi r3, r3, x@got@tlsgd@l # R_PPC64_GOT_TLSGD16_LO bl __tls_get_addr(x@tlsgd) # R_PPC64_TLSGD followed by R_PPC64_REL24 nop ``` However, there are two deviations form the above: 1. direct call to `__tls_get_addr`. This is essential to implement ld.so in glibc/musl/FreeBSD. ``` bl __tls_get_addr nop ``` This is only used in a -shared link, and thus not subject to the GD/LD to IE/LE relaxation issue below. 2. Missing R_PPC64_TLSGD/R_PPC64_TLSGD for compiler generated TLS references According to Stefan Pintille, "In the early days of the transition from the ELFv1 ABI that is used for big endian PowerPC Linux distributions to the ELFv2 ABI that is used for little endian PowerPC Linux distributions, there was some ambiguity in the specification of the relocations for TLS. The GNU linker has implemented support for correct handling of calls to __tls_get_addr with a missing relocation. Unfortunately, we didn't notice that the IBM XL compiler did not handle TLS according to the updated ABI until we tried linking XL compiled libraries with LLD." In short, LLD needs to work around the old IBM XL compiler issue. Otherwise, if the object file is linked in -no-pie or -pie mode, the result will be incorrect because the 4 instructions are partially rewritten (the latter 2 are not changed). Work around the compiler bug by disable General Dynamic/Local Dynamic to Initial Exec/Local Exec relaxation. Note, we also disable Initial Exec to Local Exec relaxation for implementation simplicity, though technically it can be kept. ppc64-tls-missing-gdld.s demonstrates the updated behavior. Reviewed By: #powerpc, stefanp, grimar Differential Revision: https://reviews.llvm.org/D92959
-
- Dec 21, 2020
-
-
Paul C. Anagnostopoulos authored
This reverts commit 3a675c77.
-
Michael Forster authored
Differential Revision: https://reviews.llvm.org/D93635
-
Simon Pilgrim authored
[AggressiveInstCombine] Generalize foldGuardedRotateToFunnelShift to generic funnel shifts (REAPPLIED) The fold currently only handles rotation patterns, but with the maturation of backend funnel shift handling we can now realistically handle all funnel shift patterns. This should allow us to begin resolving PR46896 et al. Ensure we block poison in a funnel shift value - similar to rG0fe91ad4 Reapplied with fix for PR48068 - we weren't checking that the shift values could be hoisted from their basicblocks. Differential Revision: https://reviews.llvm.org/D90625
-
Paul C. Anagnostopoulos authored
Update the documentation and add a test. Differential Revision: https://reviews.llvm.org/D93419
-
Sanjay Patel authored
https://llvm.org/PR48559 This could be part of a larger ValueTracking API, but I don't see that currently. https://rise4fun.com/Alive/gR0 Name: and Pre: C1 == ~C2 %sub = add i8 %x, C1 %sub1 = sub i8 C2, %x %r = and i8 %sub, %sub1 => %r = 0 Name: or Pre: C1 == ~C2 %sub = add i8 %x, C1 %sub1 = sub i8 C2, %x %r = or i8 %sub, %sub1 => %r = -1 Name: xor Pre: C1 == ~C2 %sub = add i8 %x, C1 %sub1 = sub i8 C2, %x %r = xor i8 %sub, %sub1 => %r = -1
-
Sanjay Patel authored
-
Kazushi (Jam) Marukawa authored
VE used to allocate VM1, VM2, VMP2 (VM4+VM5), and VM3. This patch corrects to allocate VM1, VM2, VMP2 (VM4+VM5), and VM6. Also add a regression test. Reviewed By: simoll Differential Revision: https://reviews.llvm.org/D93570
-
Florian Hahn authored
This patch makes VPRecipeBase a direct subclass of VPDef, moving the SubclassID to VPDef. Reviewed By: gilr Differential Revision: https://reviews.llvm.org/D90564
-
Denis Antrushin authored
Currently we lower invokes the same way as usual calls, e.g.: V1 = STATEPOINT ... V (tied-def 0) But this is incorrect is V1 is used on exceptional path. By LLVM rules V1 neither dominates its uses in landing pad, nor its live range is live on entry to landing pad. So compiler is allowed to do various weird transformations like splitting live range after statepoint and use split LR in catch block. Until (and if) we find better solution to this problem, let's use old lowering (spilling) for those values which are used on exceptional path and allow VReg lowering for values used only on normal path. Differential Revision: https://reviews.llvm.org/D93449
-
Yafei Liu authored
Make the example compile and the test case pass.
-
Kazushi (Jam) Marukawa authored
Change to optimize references of elements of aggregate data. Also add regression tests. Reviewed By: simoll Differential Revision: https://reviews.llvm.org/D93627
-
Jan Svoboda authored
Switch to the LLVM naming convention. Reviewed By: dexonsmith Differential Revision: https://reviews.llvm.org/D93527
-
Jan Svoboda authored
This simplifies the code a bit. No functionality change. Reviewed By: dexonsmith Differential Revision: https://reviews.llvm.org/D93526
-
Andrzej Warzynski authored
Using files with identical names leads to unexpected failures when tests are run in parallel. This is tricky to reproduce, but has been happening on some buildbots since merging https://reviews.llvm.org/D92854. In that patch I added a unit test with a non-unique test file. This patch fixes that.
-
Kazushi (Jam) Marukawa authored
Change to use default expanded code. Add regression tests also. Reviewed By: simoll Differential Revision: https://reviews.llvm.org/D93539
-
Kazushi (Jam) Marukawa authored
Implement RETURNADDR for VE. Add a regression test also. Reviewed By: simoll Differential Revision: https://reviews.llvm.org/D93545
-
Florian Hahn authored
This patch turns updates VPInterleaveRecipe to manage the values it defines using VPDef. The VPValue is used during VPlan construction and codegeneration instead of the plain IR reference where possible. Reviewed By: gilr Differential Revision: https://reviews.llvm.org/D90562
-
Simon Moll authored
-
Jan Svoboda authored
`LangOptions::SYCLVersion` can only have two values. This patch introduces an enum that allows us to reduce the member size from 32 bits to 1 bit. Consequently, this also makes marshalling of this option fit into our model for enums: D84674. Reviewed By: bader Differential Revision: https://reviews.llvm.org/D93540
-
Jan Svoboda authored
Before this patch, you needed to use `AutoNormalizeEnumJoined` whenever you wanted to **de**normalize joined enum. Besides the naming confusion, this means the fact the option is joined is specified in two places: in the normalization multiclass and in the `Joined<["-"], ...>` multiclass. This patch makes this work automatically, taking into account the `OptionClass` of options. Also, the enum denormalizer now just looks up the spelling of the present enum case in a table and forwards it to the string denormalizer. I also added more tests that exercise this. Reviewed By: dexonsmith Original patch by Daniel Grumberg. Differential Revision: https://reviews.llvm.org/D84189
-
Jan Svoboda authored
This replaces the existing `MarshallingInfoFlag<...>, IsNegative` with simpler `MarshallingInfoNegativeFlag`. Reviewed By: dexonsmith Original patch by Daniel Grumberg. Differential Revision: https://reviews.llvm.org/D84675
-
David Sherwood authored
An earlier patch introduced asserts that the InstructionCost is valid because at that time the ReuseShuffleCost variable was an unsigned. However, now that the variable is an InstructionCost instance the asserts can be removed. See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2020-November/146408.html See this patch for the introduction of the type: https://reviews.llvm.org/D91174
-
George Mitenkov authored
This patch addresses two issues: 1. Not supported ops are updated to pick up the changes in the SPIR-V dialect. 2. Conversion on `spv.ExecutionMode` is updated. Reviewed By: antiagainst Differential Revision: https://reviews.llvm.org/D91881
-
Fangrui Song authored
-
Fangrui Song authored
Errors from MCAssembler, MCObjectStreamer and *ObjectWriter typically cause a crash: ``` % cat c.c int bar; extern int foo __attribute__((alias("bar"))); % clang -c -fcommon c.c fatal error: error in backend: Common symbol 'bar' cannot be used in assignment expr PLEASE submit a bug report to ... Stack dump: ... ``` `LLVMTargetMachine::addPassesToEmitFile` constructs `MachineModuleInfoWrapperPass` which creates a MCContext without SourceMgr. `MCContext::reportError` calls `report_fatal_error` which gets captured by Clang `LLVMErrorHandler` and gets translated to the output above. Since `MCContext::reportError` errors indicate user errors, such a crashing style error is inappropriate. So this patch changes `report_fatal_error` to `SourceMgr().PrintMessage`. ``` % clang -c -fcommon c.c <unknown>:0: error: Common symbol 'bar' cannot be used in assignment expr ``` Ideally we should at least recover the original filename (the line information is generally lost). That requires general improvement to MC diagnostics, because currently in many cases SMLoc information is lost. -
Pushpinder Singh authored
Fast register allocator skips bundled MIs, as the main assignment loop uses MachineBasicBlock::iterator (= MachineInstrBundleIterator) This was causing SIInsertWaitcnts to crash which expects all instructions to have registers assigned. This patch makes sure to set everything inside bundle to the same assignments done on BUNDLE header. Reviewed By: qcolombet Differential Revision: https://reviews.llvm.org/D90369
-
Monk Chiang authored
This patch base on D93366, and define vector fixed-point intrinsics. 1. vaaddu/vaadd/vasubu/vasub 2. vsmul 3. vssrl/vssra 4. vnclipu/vnclip We work with @rogfer01 from BSC to come out this patch. Authored-by:Roger Ferrer Ibanez <rofirrim@gmail.com> Co-Authored-by:
ShihPo Hung <shihpo.hung@sifive.com> Differential Revision: https://reviews.llvm.org/D93508
-
Jian Cai authored
Currently the integrated assembler only allows commas as the separator between string arguments in .ascii. This patch adds support to using space as separators and make IAS consistent with GNU assembler. Link: https://github.com/ClangBuiltLinux/linux/issues/1196 Reviewed By: nickdesaulniers, jrtc27 Differential Revision: https://reviews.llvm.org/D91460
-