12007 Commits

Author SHA1 Message Date
Nico Weber
e37fac3deb [gn] port 7d2c1150d31b 2022-12-16 20:09:33 -05:00
Fangrui Song
2fa744e631 std::optional::value => operator*/operator->
value() has undesired exception checking semantics and calls
__throw_bad_optional_access in libc++. Moreover, the API is unavailable without
_LIBCPP_NO_EXCEPTIONS on older Mach-O platforms (see
_LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS).

This commit fixes LLVMAnalysis and its dependencies.
2022-12-16 22:44:08 +00:00
LLVM GN Syncbot
c0c909eef8 [gn build] Port 5d7950a403be 2022-12-16 16:45:18 +00:00
Fangrui Song
f13d0c125f [gn] Port 344230913812cec3b4509c0216cefce06f69dd4d 2022-12-16 07:40:23 +00:00
Kazu Hirata
ee0c631716 [mlgo] Retire LLVM_HAVE_TF_API
I've eliminated all uses of LLVM_HAVE_TF_API except a couple of them
being removed in llvm/lib/CodeGen/CMakeLists.txt.  This patch removes
remaining definitions and uses of LLVM_HAVE_TF_API.

Differential Revision: https://reviews.llvm.org/D140169
2022-12-15 14:40:16 -08:00
Roman Lebedev
6ffbb3f27b
[UpdateTestChecks] Handle !DIAssignID metadata 2022-12-15 21:21:03 +03:00
Kai Nacke
6210127bd6 [UpdateTestChecks][PowerPC] Add ppc64 triple support
Newer tests use ppc64le-linux triple. It is identical to ppc32.
Some of the PPC GIsel tests were generated by this change.

Reviewed by: RKSimon

Differential Revision: https://reviews.llvm.org/D140107
2022-12-15 16:25:22 +00:00
LLVM GN Syncbot
7ca5eae40e [gn build] Port 3ec6c997c67d 2022-12-15 01:19:28 +00:00
LLVM GN Syncbot
183c40a125 [gn build] Port e356f681f6c4 2022-12-14 16:17:52 +00:00
Fangrui Song
36a879e80f [gn] Port 5f68c4111ab9c79b902723df3986dd1033813c01 2022-12-14 06:48:20 +00:00
LLVM GN Syncbot
96fbbf55a2 [gn build] Port 233ca84a25a7 2022-12-13 16:27:58 +00:00
Nico Weber
ae2e60a814 [gn build] Port 7a85192166b5 2022-12-13 09:26:18 -05:00
Nikita Popov
697bfa40a3 Revert "[UpdateTestChecks] Match define for labels"
This reverts commit a888825aeef8d6592c6cf5f4e5854cc39af49633.

This changes the default output of UTC, and as such introduces
spurious changes whenever existing tests are regenerated.

I've indicated in https://reviews.llvm.org/D139006#3989954 how
this can be implemented without causing test churn.
2022-12-13 09:15:35 +01:00
Paul Robinson
7793e67651 [ZOS] Convert tests to check 'target={{.*}}-zos{{.*}}'
Also add 'system-zos' as a lit feature and use it where needed.

Part of the project to eliminate special handling for triples in lit
expressions.

Differential Revision: https://reviews.llvm.org/D139444
2022-12-12 11:25:19 -08:00
Nico Weber
658dc6ee99 [gn] port 988ab0048daf 2022-12-12 13:52:03 -05:00
Kazu Hirata
9883ee6816 [Analysis] Remove TFUtils.cpp
Differential Revision: https://reviews.llvm.org/D139773
2022-12-12 08:38:55 -08:00
Sebastian Neubauer
a888825aee [UpdateTestChecks] Match define for labels
Previously, the label also matched function calls with the function
name, which caused tests to fail because the label matched on the wrong
line.
Add the `define` prefix, so only function defines are matched.

Differential Revision: https://reviews.llvm.org/D139006
2022-12-12 12:29:54 +01:00
Simon Pilgrim
46242d69fa Fix mismatch in kate !bang operator list
Differential Revision: https://reviews.llvm.org/D139642
2022-12-12 10:43:23 +00:00
LLVM GN Syncbot
2f8cdea36d [gn build] Port 800533283524 2022-12-12 08:36:01 +00:00
LLVM GN Syncbot
26330e5f5d [gn build] Port 443b46e6d313 2022-12-11 23:58:49 +00:00
LLVM GN Syncbot
bd4ac9e40a [gn build] Port ee4c8119a6d3 2022-12-11 08:37:29 +00:00
LLVM GN Syncbot
f74833e381 [gn build] Port ec3f8feddf81 2022-12-09 23:21:59 +00:00
LLVM GN Syncbot
0da215dc23 [gn build] Port 1d1de7467c32 2022-12-09 16:40:46 +00:00
Nico Weber
8f1e11c5a7 [gn build] Unbreak link after 9ebaf4fef4aac89
9ebaf4fef4aac89 removed one of two redundant deps in CMake, but it removed the
one dep in the GN build. Since the CMake build still has the dep, so should the
GN build. (Things don't link without it.)
2022-12-09 10:55:24 -05:00
Alexandros Lamprineas
9ebaf4fef4 [IPSCCP] Move the IPSCCP run function under the IPO directory.
Reland 42c2dc401742266da3e0251b6c1ca491f4779963 which was reverted
in cb03b1bd99313a728d47060b909a73e7f5991231. The fix for the link
errors was to reintroduce one of the two occurences of 'Scalar'
under the LINK_COMPONENTS.

Differential Revision: https://reviews.llvm.org/D138654
2022-12-09 15:05:11 +00:00
Simon Pilgrim
d576537109 [TableGen] Add a !listremove() bang operator
This patch proposes to add a !listremove() bang operator to allow us to prune list entries by removing any entries from the first list arg that are also contained in the second list arg.

The particular use case I have in mind is for improved analysis of x86 scheduler models for which I'm hoping to start using the CodeGenProcModel 'Unsupported' features lists, which lists the ISA features a particular model DOESN'T support - with such a diverse and growing list of x86 ISAs, I don't want to have to update all these lists with every ISA change to every model - so I'm intending to keep a single central list of all x86 features, and then have the each model "remove" the features that it supports via a !listremove() - leaving just the unsupported ones.

Differential Revision: https://reviews.llvm.org/D139642
2022-12-09 15:03:18 +00:00
serge-sans-paille
138942c833
Recommit of 8ae18303f97d5dcfaecc90b4d87effb2011ed82e - part 2
Differential Revision: https://reviews.llvm.org/D139274
2022-12-09 10:41:34 +01:00
serge-sans-paille
d881fdf720
Revert "Recommit of 8ae18303f97d5dcfaecc90b4d87effb2011ed82e - part 2"
This reverts commit 4faf00006cf989f3ae212912994022c0486a2dc4.
2022-12-09 10:15:41 +01:00
serge-sans-paille
4faf00006c
Recommit of 8ae18303f97d5dcfaecc90b4d87effb2011ed82e - part 2
Differential Revision: https://reviews.llvm.org/D139274
2022-12-09 10:07:02 +01:00
LLVM GN Syncbot
b0889d4170 [gn build] Port 3b7af2796b3d 2022-12-09 01:06:43 +00:00
Gaëtan Bossu
8c0e401da7 utils/update_mir_test_checks.py: support UTC_ARGS
As a reminder, UTC_ARGS is used by lit test cases to specify which
arguments need to be passed to update_XXXX_test_checks.py to be
auto-updated properly.

The support is achieved by relying on common.itertests, which is what
other test
updaters use to iterate over test files.

This commit also changes how the --llc-binary option is saved in args.
It used to be saved as "llc", but it is here changed to the standard
"llc_binary" to make use of an existing ignore mechanism for specific
arguments. Without that change, the option would not be ignored and
would appear in UTC_ARGS. This would be different from what e.g.
update_llc_test_checks does. As update_mir_test_checks.py now supports
UTC_ARGS, it became important to ensure the option is ignored.

Differential Revision: https://reviews.llvm.org/D135580
2022-12-08 21:54:56 +01:00
Gaëtan Bossu
6c629cc17f utils/update_mir_test_checks.py: allow checking fixedStack in .mir files
Generation of CHECK lines for fixedStack can be enabled with --print-fixed-stack.
This is particularly useful for tests which need to inspect how the
stack looks, e.g. for ABI tests.

See the other stacked revision building on top of this one which enables UTC_ARGS (in a similar fashion to other test updaters in utils/).

Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D135579
2022-12-08 21:38:53 +01:00
Nicolai Hähnle
47b988403d update_mir_test_checks.py: match dead vreg definitions
Differential Revision: https://reviews.llvm.org/D139466
2022-12-08 20:41:24 +01:00
Alexandros Lamprineas
cb03b1bd99 Revert "[IPSCCP] Move the IPSCCP run function under the IPO directory."
This reverts commit 42c2dc401742266da3e0251b6c1ca491f4779963.

This broke some buildbots:

 undefined reference to `llvm::createBitTrackingDCEPass()'
 undefined reference to `llvm::createAlignmentFromAssumptionsPass()'
 undefined reference to `llvm::createLoopUnrollPass(int, bool, bool, int, int, int, int, int, int)'
 undefined reference to `llvm::createLICMPass(unsigned int, unsigned int, bool)'
 undefined reference to `llvm::createWarnMissedTransformationsPass()'
 undefined reference to `llvm::createAlignmentFromAssumptionsPass()'
 undefined reference to `llvm::createCallSiteSplittingPass()'
 undefined reference to `llvm::createCFGSimplificationPass(llvm::SimplifyCFGOptions, std::function<bool (llvm::Function const&)>)'
 undefined reference to `llvm::createFloat2IntPass()'
 undefined reference to `llvm::createLowerConstantIntrinsicsPass()'
 undefined reference to `llvm::createLoopRotatePass(int, bool)'
 undefined reference to `llvm::createLoopDistributePass()'
 undefined reference to `llvm::createLoopSinkPass()'
 undefined reference to `llvm::createInstSimplifyLegacyPass()'
 undefined reference to `llvm::createDivRemPairsPass()'
 undefined reference to `llvm::createCFGSimplificationPass(llvm::SimplifyCFGOptions, std::function<bool (llvm::Function const&)>)'
 undefined reference to `llvm::SetLicmMssaOptCap'
 undefined reference to `llvm::SetLicmMssaNoAccForPromotionCap'
 undefined reference to `llvm::ForgetSCEVInLoopUnroll'
2022-12-08 12:42:34 +00:00
Nico Weber
9816fc7fd4 [gn build] port eeee51e4bb (dsymutil no longer driver_executable for a while) 2022-12-08 07:29:41 -05:00
Alexandros Lamprineas
42c2dc4017 [IPSCCP] Move the IPSCCP run function under the IPO directory.
The LLVMipo library no longer depends on the Scalar component.
The shared functions between IPSCCP and SCCP have been moved
under Utils, in the SCCPSolver.

This is preliminary work for D126455, in order to break a cyclic
dependency between LLVM libraries.

Differential Revision: https://reviews.llvm.org/D138654
2022-12-08 12:14:27 +00:00
Gregory Alfonso
7f86bb0a71 [llvm] Call reserve before push_back in a loop
It is generally good practice, if you know how big the vector is going to be in the end, to reserve before continually calling "push_back" or "emplace_back"

Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D139483
2022-12-08 08:42:50 +00:00
Nico Weber
953ad29e53 [gn build] alphabetize conditional branches in tsan/rtl/BUILD.gn 2022-12-07 21:42:42 -05:00
Nico Weber
0b151c94a9 [gn build] port b89b42b31c45 2022-12-07 21:42:08 -05:00
Nico Weber
e5371e80a1 [gn build] Reformat all build files
Ran:

    git ls-files '*.gn' '*.gni' | xargs llvm/utils/gn/gn.py format
2022-12-07 15:14:52 -05:00
James Y Knight
372240dfe3 [TableGen] More named sub-operands work.
Commit a538d1f13a13 first added support for named sub-operands in
CodeEmitterGen. We now add a few more features to that, enabling
further target cleanups.

1. Adds support for handling an EncoderMethod in a sub-operand in
CodeEmitterGen. Previously, the specified encoder of a sub-operand was
ignored, and only the default used.

2. Adds support for sub-operands in DecoderEmitter, along with support
for tied sub-operands.

The changes to the decoder required a few minor tweaks to a few
targets, where existing brokeness was exposed. In order to keep this
patch small, I left FIXMEs which will be addressed in upcoming
patches. (Except MIPS16, since its object file emission/decoding is
totally broken).

Differential Revision: https://reviews.llvm.org/D137653
2022-12-07 14:37:08 -05:00
LLVM GN Syncbot
e7569cb955 [gn build] Port d184958bad5c 2022-12-07 16:50:20 +00:00
serge-sans-paille
40ade845be
Revert "Store OptTable::Info::Name as a StringRef"
Another revert, for another set of issues I don't reproduce locally...

see https://lab.llvm.org/buildbot/#/builders/139/builds/32327

This reverts commit bdfa3100dc3ea9e9ce4d3d4100ea6bb4c3fa2b81.
2022-12-07 17:29:53 +01:00
serge-sans-paille
bdfa3100dc
Store OptTable::Info::Name as a StringRef
This is a recommit of 8ae18303f97d5dcfaecc90b4d87effb2011ed82e,
with a few cleanups.

This avoids implicit conversion to StringRef at several points, which in
turns avoid redundant calls to strlen.

As a side effect, this greatly simplifies the implementation of
StrCmpOptionNameIgnoreCase.

It also eventually gives a consistent, humble speedup in compilation
time (timing updated since original commit).

https://llvm-compile-time-tracker.com/compare.php?from=76fcfea283472a80356d87c89270b0e2d106b54c&to=b70eb1f347f22fe4d2977360c4ed701eabc43994&stat=instructions:u

Differential Revision: https://reviews.llvm.org/D139274
2022-12-07 16:32:37 +01:00
Nico Weber
73b1f27137 [gn build] Port c9b325088d14 2022-12-07 08:27:50 -05:00
LLVM GN Syncbot
88594d1f85 [gn build] Port cb5b25c58783 2022-12-07 12:44:01 +00:00
Nico Weber
08a9b22df1 [gn build] port d62480c1995b (LoongArchTests) 2022-12-07 07:43:19 -05:00
Kazu Hirata
934942c033 [llvm] Don't include Optional.h (NFC)
These source files no longer use Optional<T>, so they do not need to
include Optional.h.

This is part of an effort to migrate from llvm::Optional to
std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
2022-12-06 22:34:50 -08:00
Douglas Yung
4857b6f8ff Revert "Store OptTable::Info::Name as a StringRef"
This reverts commit 5951b0bb23f3265bea16f28c2af9d278b9d829c6.

This is causing 24 test failures on the PS4 linux bot: https://lab.llvm.org/buildbot/#/builders/139/builds/32263
2022-12-06 19:37:05 -08:00
Gregory Alfonso
08ca2dc689 [count] Use correct integral type
Make the types consistent with each other, and return size_t instead of a long int.

Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D126121
2022-12-06 15:30:25 -08:00