- Feb 13, 2021
-
-
Fangrui Song authored
-
Serge Pavlov authored
Differential Revision: https://reviews.llvm.org/D96501
-
clementval authored
This reverts commit df1eeaa7. Buildbot failure.
-
Valentin Clement authored
This patch is a follow up of D96422 and move ComplexType to TableGen. Reviewed By: schweitz, mehdi_amini Differential Revision: https://reviews.llvm.org/D96610
-
Valentin Clement authored
This patch introduce the fir-opt tool. Similar to mlir-opt for FIR. It will be used in following patches to test fir opt and round-trip. Reviewed By: schweitz, mehdi_amini Differential Revision: https://reviews.llvm.org/D96535
-
Jian Cai authored
As of binutils 2.36, GNU strip calls chown(2) for "sudo strip foo" and "sudo strip foo -o foo", but no "sudo strip foo -o bar" or "sudo strip foo -o ./foo". In other words, while "sudo strip foo -o bar" creates a new file bar with root access, "sudo strip foo" will keep the owner and group of foo unchanged. Currently llvm-objcopy and llvm-strip behave differently, always changing the owner and gropu to root. The discrepancy prevents Chrome OS from migrating to llvm-objcopy and llvm-strip as they change file ownership and cause intended users/groups to lose access when invoked by sudo with the following sequence (recommended in man page of GNU strip). 1.<Link the executable as normal.> 1.<Copy "foo" to "foo.full"> 1.<Run "strip --strip-debug foo"> 1.<Run "objcopy --add-gnu-debuglink=foo.full foo"> This patch makes llvm-objcopy and llvm-strip follow GNU's behavior. Link: crbug.com/1108880
-
AndreyChurbanov authored
-
AndreyChurbanov authored
-
Artur Gainullin authored
Reviewed By: bader, eandrews Differential Revision: https://reviews.llvm.org/D96538
-
Adrian Prantl authored
This patch hides the logic for setting the location kind of an entry value inside the begin/finalize/cancel functions. This way we get rid the strange workaround that is currently in setLocation(). In the future, this will allow us to set the location kind of the entry value independently from the location kind of the main expression. Differential Revision: https://reviews.llvm.org/D96554
-
wlei authored
It appears some instructions doesn't have the debug location info and the symbolizer will return an empty call stack for them which will cause some crash later in profile unwinding. Actually we do not record the sample info for them, so this change just filter out those instruction. As those instruction would appears at the begin and end of the instruction list, without them we need to add the boundary check for IP `advance` and `backward`. Also for pseudo probe based profile, we actually don't need the symbolized location info, so here just change to use an empty stack for it. This could save half of the binary loading time. Differential Revision: https://reviews.llvm.org/D96434
-
Arthur Eubanks authored
I've already witnessed two separate changes missing runNewPMPasses() because runNewPMCustomPasses() is so similar. This cleans up some duplicated code. Reviewed By: tejohnson Differential Revision: https://reviews.llvm.org/D96553
-
Benjamin Kramer authored
-
Jonas Paulsson authored
vec_xl() and vec_xst() should not emit alignment hints since they take a scalar pointer and also add a byte offset if passed. This patch uses memcpy to achieve the desired result. Review: Ulrich Weigand Differential Revision: https://reviews.llvm.org/D96471
-
Adrian Prantl authored
Swift async functions receive function arguments inside a heap-allocated data structure, similar to how ObjC block captures or C++ coroutine arguments are implement. In DWARF they are described relative to an entry value that produces a pointer into that heap object. At typical location looks like DW_OP_entry_value [ DW_OP_reg14 ] DW_OP_deref DW_OP_plus_uconst 32 DW_OP_deref This allows the unwinder (which has special ABI knowledge to restore the contents of r14) to push the base address onto the stack thus allowing the deref/offset operations to continue. The result of the entry value is a scalar, because DW_OP_reg14 is a register location — as it should be since we want to restore the pointer value contained in r14 at the beginning of the function and not the historical memory contents it was pointing to. The entry value should restore the address, which is still valid, not the contents at function entry. To make this work, we need to allow LLDB to dereference Scalar stack results like load addresses, which is what this patch does. Unfortunately it is difficult to test this in isolation, since the DWARFExpression unit test doesn't have a process. Differential Revision: https://reviews.llvm.org/D96549
-
Adrian Prantl authored
The comment for ValueType claims that all values <1 are errors, but not all switch statements take this into account. This patch introduces an explicit Error case and deletes all default: cases, so we get warned about incomplete switch coverage. https://reviews.llvm.org/D96537
-
Craig Topper authored
[RISCV] Move riscv_vfmv_v_f_vl patterns to RISCVInstrInfoVVLPatterns.td for consistency with riscv_vmv_v_x_vl. NFC
-
Craig Topper authored
-
Craig Topper authored
-
James Y Knight authored
(Now that these can have alignment specified.)
-
Eric Schweitz authored
Differential Revision: https://reviews.llvm.org/D96633
-
wlei authored
This include some changes related with PerfReader's the input check and command line change: 1) It appears there might be thousands of leading MMAP-Event line in the perfscript for large workload. For this case, the 4k threshold is not eligible to determine it's a hybrid sample. This change renovated the `isHybridPerfScript` by going through the script without threshold limitation checking whether there is a non-empty call stack immediately followed by a LBR sample. It will stop once it find a valid one. 2) Added several input validations for the command line switches in PerfReader. 3) Changed the command line `show-disassembly` to `show-disassembly-only`, it will print to stdout and exit early which leave an empty output profile. Reviewed By: hoy, wenlei Differential Revision: https://reviews.llvm.org/D96387
-
Eric Schweitz authored
Differential Revision: https://reviews.llvm.org/D96630
-
Jessica Paquette authored
This is pretty much just ports `performGlobalAddressCombine` from AArch64ISelLowering. (AArch64 doesn't use the generic DAG combine for this.) This adds a pre-legalize combine which looks for this pattern: ``` %g = G_GLOBAL_VALUE @x %ptr1 = G_PTR_ADD %g, cst1 %ptr2 = G_PTR_ADD %g, cst2 ... %ptrN = G_PTR_ADD %g, cstN ``` And then, if possible, transforms it like so: ``` %g = G_GLOBAL_VALUE @x %offset_g = G_PTR_ADD %g, -min(cst) %ptr1 = G_PTR_ADD %offset_g, cst1 %ptr2 = G_PTR_ADD %offset_g, cst2 ... %ptrN = G_PTR_ADD %offset_g, cstN ``` Where min(cst) is the smallest out of the G_PTR_ADD constants. This means we should save at least one G_PTR_ADD. This also updates code in the legalizer + selector which assumes that G_GLOBAL_VALUE will never have an offset and adds/updates relevant tests. Differential Revision: https://reviews.llvm.org/D96624
-
Amy Huang authored
Follow-up to https://reviews.llvm.org/D94563.
-
Craig Topper authored
Rather than having patterns with and without an AND, use a ComplexPattern to handle both cases. Reduces the isel table by about 700 bytes.
-
Vladimir Vereschaka authored
Added __cxxabi_config.h includes to resolve _LIBCXXABI_ARM_EHABI and proper building the forces_unwindX.cpp tests for the ARM/EHABI targets. Differential Revision: https://reviews.llvm.org/D96378
-
Jay Foad authored
There's no need to call verifyVectorElementMatch since we already know that the source and destination types are identical. Differential Revision: https://reviews.llvm.org/D96589
-
Amy Huang authored
-
Arthur Eubanks authored
Or else a clean build fails with missing Attributes.inc.
-
Nikita Popov authored
Add an -aa-trace debug option that can be used to print AA queries, including any recursive queries and their results.
-
Nikita Popov authored
Rather than storing the query depth in AAResults, store it in AAQI. This makes more sense, as it is a property of the query. This sidesteps the issue of D94363, fixing slightly inaccurate AA statistics. Additionally, I plan to use the Depth from BasicAA in the future, where fetching it from AAResults would be unreliable. This change is not quite as straightforward as it seems, because we need to preserve the depth when creating a new AAQI for recursive queries across phis. I'm adding a new method for this, as we may need to preserve additional information here in the future.
-
Stanislav Mekhanoshin authored
A trivial fix, 64 bit constant is 1ull, not 1ul on Windows. Fixed build broken by c0d7a8bc.
-
Praveen Narayanan authored
Currently, vector.contract joins the intermediate result and the accumulator argument (of ranks K) using summation. We desire more joining operations --- such as max --- to help vector.contract express reductions. This change extends Vector_ContractionOp to take an optional attribute (called "kind", of enum type CombiningKind) specifying the joining operation to be add/mul/min/max for int/fp , and and/or/xor for int only. By default this attribute has value "add". To implement this we also need to extend vector.outerproduct, since vector.contract gets transformed to vector.outerproduct (and that to vector.fma). The extension for vector.outerproduct is also an optional kind attribute that uses the same enum type and possible values. The default is "add". In case of max/min we transform vector.outerproduct to a combination of compare and select. Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D93280
-
Zbigniew Sarbinowski authored
Previous pthread revision https://reviews.llvm.org/D91875 missed a small change for `__libcpp_thrad_isnull()` required for z/OS. Reviewed By: zibi Differential Revision: https://reviews.llvm.org/D96302
-
Florian Hahn authored
-
Jessica Paquette authored
Add it to right_identity_zero. Differential Revision: https://reviews.llvm.org/D96621
-
Vedant Kumar authored
As a drive-by, fix the section in the clang docs about the number of statistics visible in a report.
-
Vedant Kumar authored
-
Martin Storsjö authored
This silences warnings like these, in mingw builds with clang: runtime/src/kmp_atomic.h:1021:13: warning: '__kmpc_atomic_cmplx8_rd' has C-linkage specified, but returns user-defined type 'kmp_cmplx64' (aka '__kmp_cmplx64_t') which is incompatible with C [-Wreturn-type-c-linkage] runtime/src/z_Windows_NT_util.cpp:479:17: warning: cast from 'volatile void *' to 'type-parameter-0-0 *' drops volatile qualifier [-Wcast-qual] flag = (C *)th->th.th_sleep_loc; runtime/src/z_Windows_NT_util.cpp:1321:14: warning: cast to 'void *' from smaller integer type 'DWORD' (aka 'unsigned long') [-Wint-to-void-pointer-cast] } else if ((void *)exit_val != (void *)th) { Differential Revision: https://reviews.llvm.org/D96585
-