Benjamin Kramer [Mon, 6 Sep 2021 11:04:21 +0000 (13:04 +0200)]
[lldb] Silence compiler warnings from
37cbd817d3e2b8c673862e2eb262cad6dd3dd244
lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp:3638:30: error: moving a temporary object prevents copy elision [-Werror,-Wpessimizing-move]
return SendErrorResponse(std::move(ret.takeError()));
^
lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp:3638:30: note: remove std::move call here
return SendErrorResponse(std::move(ret.takeError()));
^~~~~~~~~~ ~
lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp:3622:8: error: unused variable 'cf' [-Werror,-Wunused-variable]
bool cf = packet_str.consume_front("qSaveCore");
Sander de Smalen [Fri, 3 Sep 2021 16:29:52 +0000 (17:29 +0100)]
[AArch64] NFC: Regenerate CHECK lines for sve-masked-gather/scatter-legalize.ll
sve-masked-gather-legalize.ll said the check lines were generated by
the update_llc_test_checks script, but that was not the case.
This patch ensures both tests are generated with the script.
Change-Id: If6f0331ef01ace84017497a484161d1724ac0744
Benjamin Kramer [Mon, 6 Sep 2021 10:30:47 +0000 (12:30 +0200)]
[lldb] Silence compiler warning after
fae0dfa6421ea6c02f86ba7292fa782e1e2b69d1
lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp:4765:13: warning: enumeration value 'Ibm128' not handled in switch [-Wswitch]
switch (llvm::cast<clang::BuiltinType>(qual_type)->getKind()) {
^
Michał Górny [Mon, 26 Apr 2021 11:47:02 +0000 (13:47 +0200)]
[lldb] [llgs server] Support creating core dumps on NetBSD
Add a new SaveCore() process method that can be used to request a core
dump. This is currently implemented on NetBSD via the PT_DUMPCORE
ptrace(2) request, and enabled via 'savecore' extension.
Protocol-wise, a new qSaveCore packet is introduced. It accepts zero
or more semicolon-separated key:value options, invokes the core dump
and returns a key:value response. Currently the only option supported
is "path-hint", and the return value contains the "path" actually used.
The support for the feature is exposed via qSaveCore qSupported feature.
Differential Revision: https://reviews.llvm.org/D101285
Qiu Chaofan [Mon, 6 Sep 2021 09:49:23 +0000 (17:49 +0800)]
[Clang] Add __ibm128 type to represent ppc_fp128
Currently, we have no front-end type for ppc_fp128 type in IR. PowerPC
target generates ppc_fp128 type from long double now, but there's option
(-mabi=(ieee|ibm)longdouble) to control it and we're going to do
transition from IBM extended double-double ppc_fp128 to IEEE fp128 in
the future.
This patch adds type __ibm128 which always represents ppc_fp128 in IR,
as what GCC did for that type. Without this type in Clang, compilation
will fail if compiling against future version of libstdcxx (which uses
__ibm128 in headers).
Although all operations in backend for __ibm128 is done by software,
only PowerPC enables support for it.
There's something not implemented in this commit, which can be done in
future ones:
- Literal suffix for __ibm128 type. w/W is suitable as GCC documented.
- __attribute__((mode(IF))) should be for __ibm128.
- Complex __ibm128 type.
Reviewed By: rjmccall
Differential Revision: https://reviews.llvm.org/D93377
Sander de Smalen [Tue, 31 Aug 2021 12:48:52 +0000 (13:48 +0100)]
[VectorUtils] Teach findScalarElement to return splat value.
If the vector is a splat of some scalar value, findScalarElement()
can simply return the scalar value if it knows the requested lane
is in the vector.
This is only needed for scalable vectors, because the InsertElement/ShuffleVector
case is already handled explicitly for the fixed-width case.
This helps to recognize an InstCombine fold like:
extractelt(bitcast(splat(%v))) -> bitcast(%v)
Reviewed By: spatel
Differential Revision: https://reviews.llvm.org/D107254
David Carlier [Mon, 6 Sep 2021 09:51:51 +0000 (10:51 +0100)]
[Sanitizer] Intercept clock_getcpuid/pthread_getcpuid on netbsd.
Reviewed By: mgorny
Differential Revision: https://reviews.llvm.org/D109278
LLVM GN Syncbot [Mon, 6 Sep 2021 09:25:28 +0000 (09:25 +0000)]
[gn build] Port
12fa608af44a
Tianqing Wang [Mon, 6 Sep 2021 05:55:17 +0000 (13:55 +0800)]
[X86] Add CRC32 feature.
d8faf03807ac implemented general-regs-only for X86 by disabling all features
with vector instructions. But the CRC32 instruction in SSE4.2 ISA, which uses
only GPRs, also becomes unavailable. This patch adds a CRC32 feature for this
instruction and allows it to be used with general-regs-only.
Reviewed By: pengfei
Differential Revision: https://reviews.llvm.org/D105462
Justas Janickas [Wed, 1 Sep 2021 08:14:07 +0000 (09:14 +0100)]
[OpenCL] Supports optional generic address space semantics in C++ for OpenCL 2021
Adds support for a feature macro `__opencl_c_generic_adress_space`
in C++ for OpenCL 2021 enabling a respective optional core feature
from OpenCL 3.0. Testing is only performed in SemaOpenCL because
generic address space functionality is yet to be implemented in
C++ for OpenCL 2021.
This change aims to achieve compatibility between C++ for OpenCL
2021 and OpenCL 3.0.
Differential Revision: https://reviews.llvm.org/D108461
Florian Mayer [Fri, 3 Sep 2021 11:04:13 +0000 (12:04 +0100)]
[hwasan] Test use-after-scope with -fno-exceptions.
Reviewed By: hctim
Differential Revision: https://reviews.llvm.org/D109224
Alexander Belyaev [Fri, 3 Sep 2021 17:06:15 +0000 (19:06 +0200)]
[mlir][linalg] Fix `FoldInitTensorWithDimOp` if dim(init_tensor) is static.
It looks like it was a typo. Instead of `*maybeConstantIndex`,
`initTensorOp.getStaticSize(*maybeConstantIndex)` should be used to access the
dim size of the tensor. There is a test for that in `canonicalize.mlir`, but it
was working correctly because `ReplaceStaticShapeDims` was canonicalizing DimOp
before `FoldInitTensorWithDimOp`. So, to make the patterns more "orthogonal",
this case is disabled.
Differential Revision: https://reviews.llvm.org/D109247
David Spickett [Mon, 6 Sep 2021 08:45:06 +0000 (08:45 +0000)]
Revert "[compiler-rt][Profile] Disable test on Arm/AArch64 Linux"
This reverts commit
8b86f8a3256a59cbaa12858cb0842025d48f549f.
The inconsistent behaviour has been fixed with
5e50d3073a5ead122a731580ded3f1cb3c21ee54.
Moritz Sichert [Fri, 27 Aug 2021 13:51:58 +0000 (15:51 +0200)]
[RuntimeDyld] Implemented relocation of TLS symbols in ELF
Differential Revision: https://reviews.llvm.org/D105466
Moritz Sichert [Fri, 30 Oct 2020 10:36:53 +0000 (11:36 +0100)]
[RuntimeDyld] Implemented relocation for ELF::R_X86_64_GOTPC32
Differential Revision: https://reviews.llvm.org/D95512
Ivan Zhechev [Mon, 6 Sep 2021 08:19:20 +0000 (08:19 +0000)]
[Flang] Ported test_errors.sh to Python
To enable Flang testing on Windows, shell scripts have to be ported to Python. In this patch the "test_errors.sh" script is ported to python ("test_errors.py"). The RUN line of existing tests was changed to make use of the python script.
Used python regex in place of awk/sed.
Reviewed By: Meinersbur
Differential Revision: https://reviews.llvm.org/D107575
Saiyedul Islam [Fri, 3 Sep 2021 11:14:22 +0000 (16:44 +0530)]
[clang-nvlink-wrapper] Add documentation in clang docs
Add documentation of clang-nvlink-wrapper tool in clang.
Add it to the release notes of clang. Fix a small MSVC
warning.
Differential Revision: https://reviews.llvm.org/D109225
Marius Brehler [Mon, 6 Sep 2021 05:51:36 +0000 (05:51 +0000)]
[mlir][docs] Complement list of supported scf ops
Fangrui Song [Mon, 6 Sep 2021 04:02:56 +0000 (21:02 -0700)]
[AArch64] Remove an uneeded !NeedsWinCFI check. NFC
guopeilin [Mon, 6 Sep 2021 03:11:23 +0000 (11:11 +0800)]
[AArch64][GlobalISel] Use ZExtValue for zext(xor) when invert tb(n)z
Currently, we use SExtValue to decide whether to invert tbz or tbnz.
However, for the case zext (xor x, c), we should use ZExt rather
than SExt otherwise we will generate totally opposite branches.
Reviewed By: paquette
Differential Revision: https://reviews.llvm.org/D108755
LLVM GN Syncbot [Sun, 5 Sep 2021 19:38:22 +0000 (19:38 +0000)]
[gn build] Port
8ce2675b1363
Ruslan Arutyunyan [Sun, 5 Sep 2021 03:16:18 +0000 (20:16 -0700)]
[libc++][compare] Implement three_way_comparable[_with] concepts
Implementation of `three_way_comparable` and `three_way_comparable_with` concepts from <compare> header.
Please note that I have temporarily removed `<compare>` header from `<utility>` due to cyclic dependency that prevents using `<concepts>` header in `<compare>` one.
I tried to quickly resolve those issues including applying suggestions from @cjdb and dive deeper by myself but the problem seems more complicated that we thought initially.
I am in progress to prepare the patch with resolving this cyclic dependency between headers but for now I decided to put all that I have to the review to unblock people that depend on that functionality. At first glance the patch with resolving cyclic dependency is not so small (unless I find the way to make it smaller and cleaner) so I don't want to mix everything to one review.
Reviewed By: ldionne, cjdb, #libc, Quuxplusone
Differential Revision: https://reviews.llvm.org/D103478
Benjamin Kramer [Sun, 5 Sep 2021 19:13:03 +0000 (21:13 +0200)]
Arthur Eubanks [Sun, 5 Sep 2021 19:02:31 +0000 (12:02 -0700)]
[test] Remove some legacy PM tests in llvm/test/Instrumentation/AddressSanitizer
Arthur Eubanks [Sun, 5 Sep 2021 18:51:19 +0000 (11:51 -0700)]
[test] Remove some legacy PM tests in llvm/test/Instrumentation
Arthur Eubanks [Sun, 5 Sep 2021 18:36:21 +0000 (11:36 -0700)]
[test] Remove -loop-guard-widening legacy PM tests
Kazu Hirata [Sun, 5 Sep 2021 15:37:27 +0000 (08:37 -0700)]
[clang-tidy] Drop unnecessary const from return types (NFC)
Identified with readability-const-return-type.
David Green [Sun, 5 Sep 2021 15:18:31 +0000 (16:18 +0100)]
[DAG] Remove oneuse check in select_cc setgt X, -1, C, ~C fold
This appears to produce better code, even if the condition may need to
be replicated.
Simon Pilgrim [Sun, 5 Sep 2021 15:08:03 +0000 (16:08 +0100)]
[CostModel][X86] Add generic costs for vXi32 MUL -> v2Xi16 PMADDDW folds
Based off the improved fold in D108522
This should eventually allow us to replace the SLM only cost patterns with generic versions.
Simon Pilgrim [Sat, 4 Sep 2021 14:44:41 +0000 (15:44 +0100)]
[CostModel][X86] Add vXi32 multiply pattern tests
Add tests for vXi32 multiplies where the operands have been extended from vXi8/vXi16
David Green [Sun, 5 Sep 2021 15:04:01 +0000 (16:04 +0100)]
[DAG] Fold select_cc setgt X, -1, C, ~C -> xor (ashr X, BW-1), C
Given a select_cc producing a constant and a invertion of the constant
for a comparison more than zero, we can produce an xor with ashr
instead, which produces smaller code. The ashr either sets all bits or
clear all bits depending on if the value is negative. This is then xor'd
with the constant to optionally negate the value.
https://alive2.llvm.org/ce/z/DTFaBZ
This includes a OneUseCheck on the Cmp, which seems to make thinks a
little worse and will be removed in a followup.
Differential Revision: https://reviews.llvm.org/D109149
David Green [Sun, 5 Sep 2021 13:06:47 +0000 (14:06 +0100)]
[DAG] Fold setcc eq with ashr to compare to zero.
Pulled out of D109149, this folds set_cc seteq (ashr X, BW-1), -1 ->
set_cc setlt X, 0 to prevent some regressions later on when folding
select_cc setgt X, -1, C, ~C -> xor (ashr X, BW-1), C
Differential Revision: https://reviews.llvm.org/D109214
Dávid Bolvanský [Sun, 5 Sep 2021 10:12:07 +0000 (12:12 +0200)]
[InstCombine] stpcpy(d,s) -> strcpy(d,s) if the result is not used
David Green [Sun, 5 Sep 2021 09:17:21 +0000 (10:17 +0100)]
[DAG] Add tests for select_cc and setcc with constant patterns.
Cheng Wang [Sun, 5 Sep 2021 02:38:31 +0000 (10:38 +0800)]
[libc][Obvious] Reorder CMakelists alphabetically.
Cheng Wang [Sat, 4 Sep 2021 12:14:54 +0000 (20:14 +0800)]
[libc][Obvious] Fix typos
Michael Kruse [Sat, 4 Sep 2021 23:50:49 +0000 (18:50 -0500)]
[OpenMP][OpenMPIRBuilder] Implement loop unrolling.
Recommit of
707ce34b06190e275572c3c46843036db1bab6d1. Don't introduce a
dependency to the LLVMPasses component, instead register the required
passes individually.
Add methods for loop unrolling to the OpenMPIRBuilder class and use them in Clang if `-fopenmp-enable-irbuilder` is enabled. The unrolling methods are:
* `unrollLoopFull`
* `unrollLoopPartial`
* `unrollLoopHeuristic`
`unrollLoopPartial` and `unrollLoopHeuristic` can use compiler heuristics to automatically determine the unroll factor. If possible, that is if no CanonicalLoopInfo is required to pass to another method, metadata for LLVM's LoopUnrollPass is added. Otherwise the unroll factor is determined using the same heurstics as user by LoopUnrollPass. Not requiring a CanonicalLoopInfo, especially with `unrollLoopHeuristic` allows greater flexibility.
With full unrolling and partial unrolling with known unroll factor, instead of duplicating instructions by the OpenMPIRBuilder, the full unroll is still delegated to the LoopUnrollPass. In case of partial unrolling the loop is first tiled using the existing `tileLoops` methods, then the inner loop fully unrolled using the same mechanism.
Reviewed By: jdoerfert, kiranchandramohan
Differential Revision: https://reviews.llvm.org/D107764
Arthur Eubanks [Sat, 4 Sep 2021 23:43:53 +0000 (16:43 -0700)]
[test] Fixup tests with -analyze in llvm/test/Transforms
Min-Yih Hsu [Sat, 4 Sep 2021 23:06:33 +0000 (16:06 -0700)]
[M68k][test] Migrate the remaining fixup and relaxation tests
Migrate the tests regarding fixup and relaxation on branch and call
targets.
This patch wraps up the migration from `test/CodeGen/M68k/Encoding` to
`test/MC/M68k`.
Arthur Eubanks [Sat, 4 Sep 2021 23:06:10 +0000 (16:06 -0700)]
[test] Cleanup tests with -enable-new-pm in llvm/test/Analysis
Arthur Eubanks [Sat, 4 Sep 2021 22:57:30 +0000 (15:57 -0700)]
[test] Cleanup legacy PM tests in llvm/test/Analyis/ScalarEvolution
Arthur Eubanks [Sat, 4 Sep 2021 22:52:43 +0000 (15:52 -0700)]
[test] Cleanup legacy PM tests in llvm/test/DebugInfo
Anton Afanasyev [Sat, 4 Sep 2021 10:21:02 +0000 (13:21 +0300)]
[SLP][Test] Add tests for PR47624 and PR49933
Add tests monitoring issues fix. They should be fixed when
https://reviews.llvm.org/D57059 ("Initial support for the vectorization
of the non-power-of-2 vectors") is landed.
Jez Ng [Sat, 4 Sep 2021 21:40:07 +0000 (17:40 -0400)]
[lld-macho] Initialize LTO backend with diagnostic handler
Failing to do so results in `std::bad_function_call` being
thrown when a pass tries to emit a diagnostic.
I've copied the relevant test over from LLD-ELF's test suite.
Reviewed By: #lld-macho, thevinster
Differential Revision: https://reviews.llvm.org/D109274
Nikita Popov [Sat, 4 Sep 2021 20:40:39 +0000 (22:40 +0200)]
[verify-uselistorder] Support -force-opaque-pointers
By creating LLVMContext after parsing parameters.
Brad Smith [Sat, 4 Sep 2021 18:14:35 +0000 (14:14 -0400)]
[CMake] Re-enable use --gc-sections on OpenBSD
Most archs have switched to lld.
Dávid Bolvanský [Sat, 4 Sep 2021 18:06:10 +0000 (20:06 +0200)]
[NFC] Added testcases for new binop with select transformation
Fangrui Song [Sat, 4 Sep 2021 17:50:10 +0000 (10:50 -0700)]
[AsmPrinter] Remove unneeded MCSubtargetInfo temporary after D14346. NFC
The temporary object was used as a workaround when the target parser may
change STI. D14346 made the MCSubtargetInfo argument to
createMCAsmParser const, so we no longer need the temporary object.
Dávid Bolvanský [Sat, 4 Sep 2021 16:57:50 +0000 (18:57 +0200)]
[InstCombine] rotate(X,Z) eq/ne rotate(Y,Z) ---> X eq/ne Y (PR51565)
```
----------------------------------------
define i1 @src(i8 %x, i8 %y, i8 %z) {
%0:
%f = fshl i8 %x, i8 %x, i8 %z
%f2 = fshl i8 %y, i8 %y, i8 %z
%r = icmp eq i8 %f, %f2
ret i1 %r
}
=>
define i1 @tgt(i8 %x, i8 %y, i8 %z) {
%0:
%r = icmp eq i8 %x, %y
ret i1 %r
}
Transformation seems to be correct!
```
https://alive2.llvm.org/ce/z/qAZp8f
Solves PR51565
Reviewed By: spatel
Differential Revision: https://reviews.llvm.org/D109271
Bjorn Pettersson [Fri, 3 Sep 2021 18:50:33 +0000 (20:50 +0200)]
[SimpleLoopUnswitch] Inform pass manager when child loops are deleted
As part of the nontrivial unswitching we could end up removing child
loops. This patch add a notification to the pass manager when
that happens (using the markLoopAsDeleted callback).
Without this there could be stale LoopAccessAnalysis results cached
in the analysis manager. Those analysis results are cached based on
a Loop* as key. Since the BumpPtrAllocator used to allocate
Loop objects could be resetted between different runs of for
example the loop-distribute pass (running on different functions),
a new Loop object could be created using the same Loop pointer.
And then when requiring the LoopAccessAnalysis for the loop we
got the stale (corrupt) result from the destroyed loop.
Reviewed By: aeubanks
Differential Revision: https://reviews.llvm.org/D109257
Shivam Gupta [Sat, 4 Sep 2021 15:24:32 +0000 (20:54 +0530)]
[LLDB][Docs] Indicate `PS1` variable by $
Kazu Hirata [Sat, 4 Sep 2021 15:05:27 +0000 (08:05 -0700)]
[Driver] Drop unnecessary const from return types (NFC)
Identified with readability-const-return-type.
Shivam Gupta [Sat, 4 Sep 2021 14:35:04 +0000 (20:05 +0530)]
[NFC] Run clang-format on llvm/lib/Trget/AVR/
The current inconsistency confuse contributors which coding guidlines to follow.
It would be better to have it consistent using clang-format tool.
Reviewed By: mhjacobson
Differential Revision: https://reviews.llvm.org/D109270
Simon Pilgrim [Sat, 4 Sep 2021 14:06:53 +0000 (15:06 +0100)]
Fix Wdocumentation unknown parameter warning. NFCI.
Simon Pilgrim [Sat, 4 Sep 2021 14:03:56 +0000 (15:03 +0100)]
[X86][SLM] WriteVecIMul instructions only take 1uop (REAPPLIED)
The xmm variant have half the throughput (and +1cy latency) of the mmx variants, but are still 1uop.
I still need to do more thorough testing of SLM on test-suite before fixing the obvious bad numbers for WritePMULLD.
But this helps the D103695 helper script get to more accurate numbers for vXi32 multiplies of extended operands (i.e. we can use PMADDWD, PMULLW/PMULHW etc). Matches what Intel AoM / Agner / llvm-exegesis reports.
Simon Pilgrim [Sat, 4 Sep 2021 12:38:55 +0000 (13:38 +0100)]
Revert rG994da657076900f5ad7fe593c3b5e5f89ab3d53d "[X86][SLM] WriteVecIMul instructions only take 1uop"
This changed some codegen tests that I forgot about in my rebase, I'll recommit shortly with a fix.
Dávid Bolvanský [Sat, 4 Sep 2021 12:38:01 +0000 (14:38 +0200)]
[NFC] Added tests for PR51565
Simon Pilgrim [Sat, 4 Sep 2021 12:21:25 +0000 (13:21 +0100)]
[X86][SLM] WriteVecIMul instructions only take 1uop
The xmm variant have half the throughput (and +1cy latency) of the mmx variants, but are still 1uop.
I still need to do more thorough testing of SLM on test-suite before fixing the obvious bad numbers for WritePMULLD.
But this helps the D103695 helper script get to more accurate numbers for vXi32 multiplies of extended operands (i.e. we can use PMADDWD, PMULLW/PMULHW etc). Matches what Intel AoM / Agner / llvm-exegesis reports.
Simon Pilgrim [Sat, 4 Sep 2021 11:57:15 +0000 (12:57 +0100)]
[X86][SLM] RMW instructions don't require an extra uop
For RMW instructions, the load and store hold the MEC for an extra cycle, but within the same single uop. This is alluded to in the Intel AOM:
"The MEC also owns the MEC RSV, which is responsible for scheduling of all loads and stores. Load and
store instructions go through addresses generation phase in program order to avoid on-the-fly memory
ordering later in the pipeline. Therefore, an unknown address will stall younger memory instructions."
Noticed while trying to get a cheap SLM test box up and running with llvm-exegesis - RMW arithmetic is always 1uop - and matches what Agner / InstLatX64 report as well.
Simon Pilgrim [Sat, 4 Sep 2021 11:25:29 +0000 (12:25 +0100)]
[X86][SLM] Fix MUL uops, latency and throughput
These were all set to the same best case mul i32 values (which seems to be the only version of MUL that SLM actually performs well with).
Noticed while trying to improve multiplication costs for vectorization via the D103695 helper script. Confirmed with Intel AoM / Agner / InstLatX64.
Eugene Zhulenev [Fri, 3 Sep 2021 12:27:30 +0000 (05:27 -0700)]
[mlir] Async: check awaited operand error state after sync await
Previously only await inside the async function (coroutine after lowering to async runtime) would check the error state
Reviewed By: mehdi_amini
Differential Revision: https://reviews.llvm.org/D109229
David Carlier [Sat, 4 Sep 2021 11:50:28 +0000 (12:50 +0100)]
[Sanitizers] netbsd build fix due to wordexp interception.
Mark de Wever [Sat, 4 Sep 2021 11:31:29 +0000 (13:31 +0200)]
[libc++][doc] Update format status.
Marked the entries solely depending on D103357 or D96664 as complete.
Initial work on implementing P2216 has started.
Simon Pilgrim [Sat, 4 Sep 2021 10:57:08 +0000 (11:57 +0100)]
[X86][Atom] MUL/DIV instructions require both ports, not either.
Noticed while trying to improve multiplication costs for vectorization via the D103695 helper script. Confirmed with Intel AoM.
Simon Pilgrim [Sat, 4 Sep 2021 10:43:38 +0000 (11:43 +0100)]
[X86][Atom] Add missing UOps override to AtomWriteResPair multiclass
Make it easier to describe microcoded instructions.
David Carlier [Sat, 4 Sep 2021 10:40:50 +0000 (11:40 +0100)]
[Sanitizers][PGO] missing return statement
Mark de Wever [Tue, 25 May 2021 18:11:08 +0000 (20:11 +0200)]
[libc++][format] Add a CMake Unicode option.
This option is used to select between the format headers output column
width option. This option should be independent of the locale setting.
It's encouraged to default to Unicode unless the platform doesn't offer
that option.
[format.string.std]/10
```
For the purposes of width computation, a string is assumed to be in a
locale-independent, implementation-defined encoding. Implementations
should use a Unicode encoding on platforms capable of displaying Unicode
```
Reviewed By: #libc, ldionne, vitaut
Differential Revision: https://reviews.llvm.org/D103379
LLVM GN Syncbot [Sat, 4 Sep 2021 09:41:32 +0000 (09:41 +0000)]
[gn build] Port
d7444d9f41e3
Mark de Wever [Sat, 19 Dec 2020 12:52:07 +0000 (13:52 +0100)]
[libc++][format] Implement formatters.
This implements the initial version of the `std::formatter` class and its specializations. It also implements the following formatting functions:
- `format`
- `vformat`
- `format_to`
- `vformat_to`
- `format_to_n`
- `formatted_size`
All functions have a `char` and `wchar_t` version. Parsing the format-spec and
using the parsed format-spec hasn't been implemented. The code isn't optimized,
neither for speed, nor for size.
The goal is to have the rudimentary basics working, which can be used as a
basis to improve upon. The formatters used in this commit are simple stubs that
will be replaced by real formatters in later commits.
The formatters that are slated to be replaced in this patch series don't have
an availability macro to avoid merge conflicts.
Note the formatter for `bool` uses `0` and `1` instead of "false" and
"true". This will be fixed when the stub is replaced with a real
formatter.
Implements parts of:
- P0645 Text Formatting
Completes:
- LWG3539 format_to must not copy models of output_iterator<const charT&>
Reviewed By: ldionne, #libc, vitaut
Differential Revision: https://reviews.llvm.org/D96664
Nikita Popov [Fri, 3 Sep 2021 19:53:01 +0000 (21:53 +0200)]
[WebAssembly] Support opaque pointers in AddMissingPrototypes
The change here is basically the same as in D108880: Rather than
looking at bitcasts, look at calls and their function type. We
still need to look through bitcasts to find those calls.
The change in llvm/test/CodeGen/WebAssembly/add-prototypes-conflict.ll
is due to different visitation order. add-prototypes-opaque-ptrs.ll
is a copy of add-prototypes.ll with -force-opaque-pointers.
Differential Revision: https://reviews.llvm.org/D109256
Dávid Bolvanský [Sat, 4 Sep 2021 08:52:46 +0000 (10:52 +0200)]
[NFC] Added testcase for PR39116
Dávid Bolvanský [Sat, 4 Sep 2021 08:44:21 +0000 (10:44 +0200)]
[NFC] Added testcase for PR48641
Kazuaki Ishizaki [Sat, 4 Sep 2021 07:31:34 +0000 (13:01 +0530)]
[compiler-rt] NFC: Fix trivial typo
Reviewed By: xgupta
Differential Revision: https://reviews.llvm.org/D77457
Balazs Benics [Sat, 4 Sep 2021 08:19:57 +0000 (10:19 +0200)]
[clang][AST] Add support for SubstTemplateTypeParmPackType to ASTImporter
Thank you @martong for acquiring a suitable test case!
Reviewed By: shafik, martong
Differential Revision: https://reviews.llvm.org/D109237
Balazs Benics [Sat, 4 Sep 2021 08:19:57 +0000 (10:19 +0200)]
[analyzer] SValBuilder should have an easy access to AnalyzerOptions
`SVB.getStateManager().getOwningEngine().getAnalysisManager().getAnalyzerOptions()`
is quite a mouthful and might involve a few pointer indirections to get
such a simple thing like an analyzer option.
This patch introduces an `AnalyzerOptions` reference to the `SValBuilder`
abstract class, while refactors a few cases to use this /simpler/ accessor.
Reviewed By: martong, Szelethus
Differential Revision: https://reviews.llvm.org/D108824
Balazs Benics [Sat, 4 Sep 2021 08:19:57 +0000 (10:19 +0200)]
[analyzer] Ignore single element arrays in getStaticSize() conditionally
Quoting https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html:
> In the absence of the zero-length array extension, in ISO C90 the contents
> array in the example above would typically be declared to have a single
> element.
We should not assume that the size of the //flexible array member// field has
a single element, because in some cases they use it as a fallback for not
having the //zero-length array// language extension.
In this case, the analyzer should return `Unknown` as the extent of the field
instead.
Reviewed By: martong
Differential Revision: https://reviews.llvm.org/D108230
Kazuaki Ishizaki [Sat, 4 Sep 2021 07:25:40 +0000 (12:55 +0530)]
[clang] NFC: Fix trivial typo in comments and document
`the the` -> `the`
Reviewed By: xgupta
Differential Revision: https://reviews.llvm.org/D77470
Loren Maggiore [Sat, 4 Sep 2021 06:03:33 +0000 (08:03 +0200)]
[mlir] create gpu memset op
Create a gpu memset op and corresponding CUDA and ROCm wrappers.
Reviewed By: herhut, lorenrose1013
Differential Revision: https://reviews.llvm.org/D107548
Kazu Hirata [Sat, 4 Sep 2021 05:29:58 +0000 (22:29 -0700)]
[ForceFunctionAttrs] Add const (NFC)
Brad Smith [Sat, 4 Sep 2021 01:20:37 +0000 (21:20 -0400)]
Brad Smith [Sat, 4 Sep 2021 01:11:32 +0000 (21:11 -0400)]
[clang] OpenBSD does not support C11 atomics or threads.
Kevin Athey [Sat, 4 Sep 2021 01:00:50 +0000 (18:00 -0700)]
Revert "[AArch64] Implement target hook function to decide folding (mul (add x, c1), c2)"
This reverts commit
095bea23d048672b0ad785c93263442694a160b9.
Broke buildbot: https://lab.llvm.org/buildbot/#/builders/5/builds/11411
William S. Moses [Sun, 22 Aug 2021 20:44:17 +0000 (16:44 -0400)]
[MLIR] Primitive linkage lowering of FuncOp
FuncOp always lowers to an LLVM external linkage presently. This makes it impossible to define functions in mlir which are local to the current module. Until MLIR FuncOps have a more formal linkage specification, this commit allows funcop's to have an optionally specified llvm.linkage attribute, whose value will be used as the linkage of the llvm funcop when lowered.
Differential Revision: https://reviews.llvm.org/D108524
Support LLVM linkage
Brad Smith [Fri, 3 Sep 2021 23:32:31 +0000 (19:32 -0400)]
Support linking against OpenMP runtime on OpenBSD.
Ben Shi [Fri, 27 Aug 2021 13:31:57 +0000 (21:31 +0800)]
[AArch64] Implement target hook function to decide folding (mul (add x, c1), c2)
Prevent the folding if it leads to worse code.
Reviewed By: dmgreen
Differential Revision: https://reviews.llvm.org/D108871
Lang Hames [Fri, 3 Sep 2021 22:08:31 +0000 (08:08 +1000)]
[ORC] Silence a buggy GCC unused argument warning.
Richard Smith [Fri, 3 Sep 2021 22:14:00 +0000 (15:14 -0700)]
DebugInfo: additional fix missed in bc066e2.
Med Ismail Bennani [Fri, 3 Sep 2021 22:03:06 +0000 (22:03 +0000)]
[lldb/Plugins] Move member template specialization out of class
This patch should fix the build failure that surfaced when build llvm
with GCC: https://lab.llvm.org/staging/#/builders/16/builds/10450
GCC complained that I explicitely specialized
`ScriptedPythonInterface::ExtractValueFromPythonObject` in a
in non-namespace scope, which is tolerated by Clang.
To solve this issue, the specialization were declared out of the class
and implemented in the source file.
Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
Brad Smith [Fri, 3 Sep 2021 21:31:26 +0000 (17:31 -0400)]
OpenBSD also needs execinfo
Mehdi Amini [Fri, 3 Sep 2021 21:18:39 +0000 (21:18 +0000)]
Make LLVM Linkage a first class attribute instead of using an integer attribute
This makes the IR more readable, in particular when this will be used on
the builtin func outside of the LLVM dialect.
Reviewed By: wsmoses
Differential Revision: https://reviews.llvm.org/D109209
Frederic Cambus [Fri, 3 Sep 2021 20:53:36 +0000 (16:53 -0400)]
[clang] Allow the OpenBSD driver to link the libclang_rt.profile library.
Differential Revision: https://reviews.llvm.org/D109244
David Blaikie [Fri, 3 Sep 2021 21:08:30 +0000 (14:08 -0700)]
DebugInfo: Fix a few bot failures for type dumping fixes
Michael Kruse [Fri, 3 Sep 2021 19:48:40 +0000 (14:48 -0500)]
[flang] Use CMake to determine endianness.
The preprocessor definitions __BYTE_ORDER__, __ORDER_BIG_ENDIAN__, and
__ORDER_LITTLE_ENDIAN__ are gcc extensions (also supported by clang),
but msvc (and others) do not define them. As a result __BYTE_ORDER__
and __ORDER_BIG_ENDIAN__ both evaluate to 0 by the prepreprocessor,
and __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__, the first `#if` condition
to 1, hence assuming the wrong byte order for x86(_64).
This patch instead uses CMake's TestBigEndian module to determine
target architecture's endianness at configure-time.
Note this also uses the same mechanism for the runtime. If compiling
flang as a cross-compiler, the runtime for the compile-target must be
built separately (Flang does not support the LLVM_ENABLE_RUNTIMES
mechanism yet).
Fixes llvm.org/PR51597
Reviewed By: ijan1, Leporacanthicus
Differential Revision: https://reviews.llvm.org/D109108
Michael Jones [Wed, 1 Sep 2021 20:09:29 +0000 (20:09 +0000)]
[libc] fix strtointeger hex prefix parsing
Fix edge case where "0x" would be considered a complete hexadecimal
number for purposes of str_end. Now the hexadecimal prefix needs a valid
digit after it, else just the 0 will be counted as the number.
Reviewed By: sivachandra
Differential Revision: https://reviews.llvm.org/D109084
Aart Bik [Fri, 3 Sep 2021 18:23:38 +0000 (11:23 -0700)]
[mlir][sparse] add convenience method for sparse tensor setup
This simplifies setting up sparse tensors through C-style data structures.
Useful for runtimes that want to interact with MLIR-generated code
without knowning about all bufferization details (viz. memrefs).
Reviewed By: bixia
Differential Revision: https://reviews.llvm.org/D109251
Jinsong Ji [Fri, 3 Sep 2021 20:33:47 +0000 (20:33 +0000)]
[NFC][OpenMP] Use clang_cc1 to driver tests
The test driver-fopenmp-extensions.c is failing on platforms that does
not use integrated-as. It can be reproduced using -fno-integrated-as on
Linux too.
bin/clang -c -Xclang -verify=omp -fopenmp -fopenmp-extensions
-fno-openmp-extensions
../llvm-project/clang/test/OpenMP/driver-fopenmp-extensions.c
-fno-integrated-as
Assembler messages:
Error: can't open /tmp/driver-fopenmp-extensions-8fafe8.s for reading:
No such file or directory
clang-14: error: assembler command failed with exit code 1 (use -v to
see invocation)
The goal of this test is to verify syntax diags only,
so we should use clang_cc1 to test.
Reviewed By: jdenny, ABataev
Differential Revision: https://reviews.llvm.org/D109255
Jonas Devlieghere [Fri, 3 Sep 2021 20:23:03 +0000 (13:23 -0700)]
[lldb] Adjust parse_frames for unnamed images
Follow up to
2cbd3b04feaaaff7fab4c6500476839a23180886 which added
support for unnamed images but missed the use case in parse_frames.
Louis Dionne [Fri, 27 Aug 2021 16:04:58 +0000 (12:04 -0400)]
[libc++] Add an assertion in the subrange constructors with a size hint
Those constructors are very easy to misuse -- one could easily think that
the size passed to the constructor is the size of the range to exhibit
from the subrange. Instead, it's a size hint and it's UB to get it wrong.
Hence, when it's cheap to compute the real size of the range, it's cheap
to make sure that the user didn't get it wrong.
Differential Revision: https://reviews.llvm.org/D108827
Louis Dionne [Fri, 3 Sep 2021 20:01:09 +0000 (16:01 -0400)]
Revert "[Coroutines] [Clang] Look up coroutine component in std namespace first"
This reverts commit
2fbd254aa46b, which broke the libc++ CI. I'm reverting
to get things stable again until we've figured out a way forward.
Differential Revision: https://reviews.llvm.org/D108696
David Blaikie [Fri, 3 Sep 2021 19:18:13 +0000 (12:18 -0700)]
DebugInfo: Correct/improve type formatting (pointers to function types especially)
This does add some extra superfluous whitespace (eg: "int *") intended
to make the Simplified Template Names work easier - this makes the
DIE-based names match more exactly the clang-generated names, so it's
easier to identify cases that don't generate matching names.
(arguably we could change clang to skip that whitespace or add some
fuzzy matching to accommodate differences in certain whitespace - but
this seemed easier and fairly low-impact)