53 Commits

Author SHA1 Message Date
Mingjie Xu
fac9472593
[IR] Reland Optimize PHINode::removeIncomingValue() and PHINode::removeIncomingValueIf() to use the swapping strategy. (#174274)
Reland #171963, #172639 and #173444, they are reverted in
86b9f90b9574b3a7d15d28a91f6316459dcfa046 because of introducing
non-determinism in compiles.
The non-determinism has been fixed in
9b8addffa70cee5b2acc5454712d9cf78ce45710.
2026-01-04 09:24:53 +08:00
Walter Lee
86b9f90b95
Revert 159f1c048e08a8780d92858cfc80e723c90235e3 (#173893)
This causes non-determinism in compiles.

From nikic: "FYI the non-determinism is also visible on
llvm-opt-benchmark. Maybe repeatedly running test cases from
299446d99f
could reproduce the issue..."

Also revert dependent 796fafeff92fe5d2d20594859e92607116e30a16 and
e135447bda617125688b71d33480d131d1076a72.
2025-12-29 20:23:13 -05:00
Mingjie Xu
159f1c048e
[IR] Optimize PHINode::removeIncomingValue() by swapping removed incoming value with the last incoming value. (#171963)
Current implementation uses `std::copy` to shift all incoming values
after the removed index. This patch optimizes
`PHINode::removeIncomingValue()` by replacing the linear shift of
incoming values with a swap-with-last strategy.

After this change, the relative order of incoming values after removal
is not preserved.

This improves compile-time for PHI nodes with many predecessors.

Depends:
https://github.com/llvm/llvm-project/pull/171955
https://github.com/llvm/llvm-project/pull/171956
https://github.com/llvm/llvm-project/pull/171960
https://github.com/llvm/llvm-project/pull/171962
2025-12-17 19:44:01 +08:00
Stefan Gränitz
fd31ab9687
[llvm][examples] Run LLJITWithRemoteDebugging test only on native Linux 64-bit Intel (#172518) 2025-12-17 12:15:32 +01:00
David Spickett
10767aad89
[llvm][examples] Disable some JIT examples when threading is disabled (#172282)
This fixes an error on our Armv8 bot:
```
<...>/RemoteJITUtils.cpp:132:24: error: use of undeclared identifier 'DynamicThreadPoolTaskDispatcher'
  132 |       std::make_unique<DynamicThreadPoolTaskDispatcher>(std::nullopt),
      |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```

These examples require LLVM_ENABLE_THREADS to be ON, and cannot run
otherwise. As a comment says elsewhere:
```
  // Out of process mode using SimpleRemoteEPC depends on threads.
```
2025-12-15 11:40:27 +00:00
Alexis Engelke
66d92d4cfb [LLVM][Examples] Disable broken JIT + plugin tests (AIX, Sparc)
Plugins appear to be broken on AIX, CI fails. There is logic in
CMakeLists for plugins+AIX, but it was never tested before...
Note: when plugins work, also enable tests in Examples/IRTransforms.

There's no Sparc support for JIT tests, so disable the JIT tests in the
examples (copied from ExecutionEngine/lit.local.cfg).
2025-12-14 11:00:32 +00:00
Alexis Engelke
249acb6f87 [LLVM][Examples] Disable tests on AIX
Neither plugins nor JITLink works on AIX.
2025-12-13 14:39:55 +00:00
Tomohiro Kashiwada
0b64dc96df
[LLVM][Examples][Cygwin] Exclude examples that are not built from test dependencies (#172145)
`Bye` and `ExampleIRTransforms` are not built on Cygwin.
2025-12-13 12:20:26 +01:00
Alexis Engelke
9f5c96318d
[LLVM][Example] More test feature fixes for s390 and RISC-V
Pull Request: https://github.com/llvm/llvm-project/pull/172147
2025-12-13 11:28:39 +01:00
Alexis Engelke
b5019c2de4
[LLVM][Examples] Fix test requirements
Pull Request: https://github.com/llvm/llvm-project/pull/172140
2025-12-13 10:26:16 +01:00
Alexis Engelke
c81d44942e
[LLVM][CMake] Build examples for llvm-test-depends
Build examples and example plug-ins by default when running tests. If
examples are unwanted, they can still be disabled completely using
LLVM_INCLUDE_EXAMPLES=OFF. Plugin tests depend on examples and it is
beneficial to test them by default. By default, Examples will still not
be included in the default target or be installed, this remains
controlled by LLVM_BUILD_EXAMPLES (which defaults to OFF).

The additional cost for building examples for tests is 17 compilation
units (12 C++, 5 C), which should be tolerable.

I don't know how broken the examples currently are in the various build
configurations, but if we find breakage, it would be good to fix it.

Pull Request: https://github.com/llvm/llvm-project/pull/171998
2025-12-13 09:05:47 +01:00
Aiden Grossman
6ba25c1a56
[llvm] Remove uses of %T in tests (#151621)
This patch removes all uses of %T from within LLVM tests. %T has been
deprecated for about seven years and use is not advised given it is not
unique per test and can thus lead to races. The goal of this is to
eventually remove support for %T from lit.
2025-08-01 08:24:56 -07:00
Lee Wei
1469d82e1c
Remove br i1 undef from some regression tests [NFC] (#115130)
As defined in LangRef, branching on `undef` is undefined behavior.
This PR aims to remove undefined behavior from tests. As UB tests break
Alive2 and may be the root cause of breaking future optimizations.

Here's an Alive2 proof for one of the examples:
https://alive2.llvm.org/ce/z/TncxhP
2024-11-07 08:11:15 +00:00
Stefan Gränitz
b7d5b0d0ee
[Orc][examples] Revisit advanced LLJIT examples and tests (#76236)
Some maintenance on implementation and tests:
* Drop manual TargetMachineBuilder setup
* Drop addDebugSupport() in favor of Orc's enableDebuggerSupport()
* Check that debug support plugins append jit_code_entry
* Update and reduce sample input
2024-01-03 09:51:18 +01:00
Stefan Gränitz
d86a93782f
[Orc][examples] Drop target triple from input for remote debugging test (#74831)
https://github.com/llvm/llvm-project/pull/74764 reported that the
`lljit-with-remote-debugging` test fails on AArch64 hosts, because the
input IR file states arch x86_64 explicitly. In order to drop the target
triple we have to remove a check in the example implementation.

Not sure it's fully portable now, but at least it's better than before.
2023-12-08 22:10:03 +01:00
Lang Hames
f81ccb5209 [ExecutionEngine] Re-enable JIT tests on PowerPC.
These were previously re-enabled in d771f54107c, but had to be disabled again
in 2060a72b4d7 due to test failures.

This is a next step to landing https://reviews.llvm.org/D148192, which adds
a skeleton JITLink backend for PowerPC.

The fixes for those failures were (1) to explicitly specify IsLittleEndian =
true for the MachO YAML testcases, (2) disable some example tests for examples
that aren't supported on PowerPC yet, and (3) fixing the endianness of a
relocation read/write (for ELF R_AARCH64_TSTBR14) in RuntimeDyldELF.
2023-05-21 16:12:06 -07:00
Tobias Hieta
f84bac329b
[NFC][Py Reformat] Reformat lit.local.cfg python files in llvm
This is a follow-up to b71edfaa4ec3c998aadb35255ce2f60bba2940b0
since I forgot the lit.local.cfg files in that one.

Reformatting is done with `black`.

If you end up having problems merging this commit because you
have made changes to a python file, the best way to handle that
is to run git checkout --ours <yourfile> and then reformat it
with black.

If you run into any problems, post to discourse about it and
we will try to help.

RFC Thread below:

https://discourse.llvm.org/t/rfc-document-and-standardize-python-code-style

Reviewed By: barannikov88, kwk

Differential Revision: https://reviews.llvm.org/D150762
2023-05-17 17:03:15 +02:00
Lang Hames
c5dbbe5e2a [ORC] Drop tests for OrcV2CBindingsReflectProcessSymbols after 231107a8b5b.
This test was removed as LLJIT now reflects process symbols by default.
2023-04-08 03:02:55 +00:00
Sebastian Peryt
d291f1fd09 [LegacyPM] Port example pass SimplifyCFG to new PM
This is part of effort in removing -enable-new-pm flag.
As a prat of this effort one of example passes SimplifyCFG must
be ported to new PM which will allow to remove the flag
calls from the tests that are using this pass.

Reviewed By: aeubanks

Differential Revision: https://reviews.llvm.org/D137103
2023-01-10 15:42:01 -08:00
Nikita Popov
6aa02f90d0 [Examples] Convert test to opaque pointers (NFC) 2023-01-05 14:16:11 +01:00
Filipp Zhinkin
c59822cd1a [NFC][ORC] Fix lljit-with-thinlto-summaries.test output ordering issue
Use CHECK-DAG to check module names that printed in order depending
on full file path.

Related issue: https://github.com/llvm/llvm-project/issues/59248

Reviewed By: sgraenitz

Differential Revision: https://reviews.llvm.org/D138913
2022-11-29 18:15:45 +03:00
Stefan Gränitz
bb7b937fad [Orc][examples] Temporarily re-enable tests for the C API and keep an eye on sanitizer bots
This reverts commit 9c63e5b415d1d62116fec160c6ac1f3c00933ed9
2022-11-27 13:29:53 +01:00
Stefan Gränitz
0ec197a30d [Orc][examples] Emit artifacts in test-specific output folder (NFC) 2022-11-27 13:24:17 +01:00
Xiang Li
4ec7dff27d [CMake] Only set LLVM_DEFAULT_TARGET_TRIPLE to LLVM_HOST_TRIPLE when native target is enabled
This is for case when native target like X86 is not in LLVM_TARGETS_TO_BUILD.
Right now LLVM_DEFAULT_TARGET_TRIPLE is set to LLVM_HOST_TRIPLE even when native target is not enabled,
As a result, many lit tests will fail because default_triple is set for lit test but not enabled when build LLVM.

Reviewed By: smeenai

Differential Revision: https://reviews.llvm.org/D134972
2022-11-04 14:34:38 -07:00
Nikita Popov
62ec8e94b8 [Examples] Fix SimplifyCFG example
After fffabd53482f34f96ab9273486538f587e3d91fc, the v2 and v3
versions produce poison instead of undef. Also adjust the v1
version, as well as the test expectations, to make the example
pass again.
2022-08-01 07:22:35 +02:00
Nikita Popov
bd92b7b3c1 [OrcV2Examples] Fix test with opaque pointers
The other two modules now use opaque pointers, so make sure this
one does as well.
2022-06-02 12:17:56 +02:00
Stefan Gränitz
878060aaf9 [Orc][examples] Re-enable test for LLJITWithRemoteDebugging
The test was removed temporarily in a539a847c9428e36722dcb43a1c953c9d66b7f0b to aid switching the RPC API in use in the LLJITWithRemoteDebugging example.

Reviewed By: lhames

Differential Revision: https://reviews.llvm.org/D110649
2021-10-23 17:01:13 +02:00
Lang Hames
a539a847c9 [ORC] Temporarily remove the lljit-with-remote-debugging test.
This is broken now that llvm-jitlink-executor uses SimpleRemoteEPC.

The example will be updated to use SimpleRemoteEPC in a future commit.
2021-09-12 18:52:30 +10:00
Stefan Gränitz
9c63e5b415 [Orc][examples] Temporarily disable tests for the C API due to failures on sanitizer bots
These tests were added while the OrcV2Example tests had been disabled:
https://reviews.llvm.org/rGe5d8cfb2f134fcf0235ec1a35eec875a9cd36b21

Failures on sanitizer bots:
https://green.lab.llvm.org/green/job/clang-stage2-cmake-RgSan/7992/testReport/
2021-08-06 11:33:01 +02:00
Stefan Gränitz
058935145d [Orc][examples] Adopt ExecutorProcessControl API and re-enable LLJITWithRemoteDebugging
The API change originated from D104694. The LLJITWithRemoteDebugging example and the test for it were disabled while it was in the works.
2021-07-29 14:40:42 +02:00
Valentin Churavy
45e8a0befb
[Orc] At CBindings for LazyRexports
At C bindings and an example for LLJIT with lazy reexports

Differential Revision: https://reviews.llvm.org/D104672
2021-07-01 21:52:05 +02:00
Valentin Churavy
9762f12c6c
[Orc] Run the examples as part of the tests
Enable the Orc C-Bindings for testing.

Reviewed By: lhames

Differential Revision: https://reviews.llvm.org/D104637
2021-06-30 21:45:16 +02:00
Stefan Gränitz
e5d8cfb2f1 [Orc][examples] Temporarily disable LLJITWithRemoteDebugging build and test
The underlying TargetProcessControl API changes with D104694. Once it landed I can patch and re-enable the example.
2021-06-28 16:54:53 +02:00
Stefan Gränitz
792ee5be36 [Orc][examples] Add missing FileCheck for lit test and polish output 2021-04-07 11:12:20 +02:00
Stefan Gränitz
258f055ed9 [Orc][examples] Add LLJITWithRemoteDebugging example 2021-03-28 17:25:09 +02:00
xgupta
0f279c7a5c Revert "patch" it wass my mistake inusing git
This reverts commit 3f30cd73795d17f071cc03926fea28943c65f05f.
2021-02-24 11:06:16 +05:30
xgupta
3f30cd7379 patch 2021-02-24 10:52:28 +05:30
Arthur Eubanks
dd4dbad87b [test][NewPM] Pin various tests to the legacy PM
tut-simplify-cfg hasn't been ported to the new PM.
llvm-lto2's -enable-new-pm defaults to the CMake flag, so the legacy PM extension test needs to be pinned.

Reviewed By: MaskRay, ychen

Differential Revision: https://reviews.llvm.org/D95898
2021-02-02 15:07:10 -08:00
Lang Hames
039f3d01cb [examples] Fix test: Kaleidoscope Chapter 4 no longer supports redefinition.
This may be fixed in the future, but since redefinition in OrcV2 requires more
manual work on the JIT client's part it was left out of the most recent update
to the tutorials.
2020-10-19 00:35:56 -07:00
Stefan Gränitz
b014cc0f65 [ORC] Add a LLJITWithThinLTOSummaries example in OrcV2Examples
The example demonstrates how to use a module summary index file produced for ThinLTO to:
* find the module that defines the main entry point
* find all extra modules that are required for the build

A LIT test runs the example as part of the LLVM test suite [1] and shows how to create a module summary index file.
The code also provides two Error types that can be useful when working with ThinLTO summaries.

[1] if LLVM_BUILD_EXAMPLES=ON and platform is not Windows

Differential Revision: https://reviews.llvm.org/D85974
2020-08-23 14:02:10 +02:00
Mehdi Amini
8b64adb0a2 Fix incorrect "REQUIRE" (default_target->default_triple) introduced in 59f45a1cdb3
Adding `default_target` fixed the build by excluding these tests... but
this excluded these tests from ever running!
The correct feature check is `default_triple`
2020-06-23 18:22:39 +00:00
Mehdi Amini
59f45a1cdb Mark some LLVM tests which require a default_triple (NFC)
These tests involve a JIT, and like other tests should have the
REQUIRE: default_triple present.
This allow to run `ninja check` without the host target configured
in.
2020-06-19 06:36:20 +00:00
Florian Hahn
0bb22b91ea Re-apply "[Examples] Add IRTransformations directory to examples."
This reverts commit 19fd8925a4afe6efd248688cce06aceff50efe0c.

Should include a fix for PR44197.
2020-01-04 15:47:23 +00:00
Florian Hahn
19fd8925a4 Revert "[Examples] Add IRTransformations directory to examples."
This breaks LLVMExports.cmake in some build configurations.

PR44197

This reverts commits ceb72d07b004af9c428c4a3c73a98ea97d49a713
                     7d0b1d77b3d4d47df477519fd1bf099b3df6f899.
2019-12-01 22:20:20 +00:00
Florian Hahn
7d0b1d77b3 [Examples] Add IRTransformations directory to examples.
This patch adds a new IRTransformations directory to llvm/examples/. This is
intended to serve as a new home for example transformations/analysis
code used by various tutorials.

If LLVM_BUILD_EXAMPLES is enabled, the ExamplesIRTransforms library is
linked into the opt binary and the example passes become available.

To start off with, it contains the CFG simplifications used in the IR
part of the 'Getting Started With LLVM: Basics' tutorial at the US LLVM
Developers Meeting 2019.

Reviewers: paquette, jfb, meikeb, lhames, kbarton

Reviewed By: paquette

Differential Revision: https://reviews.llvm.org/D69416
2019-11-12 14:14:48 +00:00
Lang Hames
de9b30db3d Fix a think-o in the disable-kaleidoscope-tests-on-windows predicate of r354646.
llvm-svn: 354650
2019-02-22 03:56:50 +00:00
Lang Hames
4a7db8cb90 Add 'Windows' to the disabled platforms list for the Kaleidoscope tests.
Expands on the check from r354645.

llvm-svn: 354646
2019-02-22 01:44:23 +00:00
Lang Hames
f4b86cb28e Disable Kaleidoscope tests on Win32 -- looks like they're still failing there.
The Kaleidoscope tests were re-enabled in r354630, but are still failing on
Windows. This patch disables them on that platform until the failure can be
investigated.

llvm-svn: 354645
2019-02-22 01:19:53 +00:00
Lang Hames
ecfac6cd2c [Kaleidoscope] Re-enable Kaleidoscope tests.
These were disabled in r246267 (back in 2015). I suspect that the Win32 issues
that caused them to be disabled at the time have been resovlved, but if not
we can disable them again while we sort those out.

llvm-svn: 354630
2019-02-21 22:24:53 +00:00
NAKAMURA Takumi
004653755c Disable llvm/test/Examples/ for now while investigating.
FIXME:
  - Introduce explicit mapping.
  - Investigate crash on win32. Could we introduce crash handler in examples?

llvm-svn: 246267
2015-08-28 03:32:43 +00:00