|
1 | | -# GCC codegen backend tests |
| 1 | +# GCC codegen backend |
2 | 2 |
|
3 | | -TODO: please add some more information to this page. |
| 3 | +If you ran into an error related to tests executed with the GCC codegen backend on CI, |
| 4 | +you can use the following command to run tests locally using the GCC backend: |
| 5 | + |
| 6 | +```bash |
| 7 | +./x test tests/ui --set 'rust.codegen-backends = ["llvm", "gcc"]' --test-codegen-backend gcc |
| 8 | +``` |
| 9 | + |
| 10 | +Below, you can find more information about how to configure the GCC backend in bootstrap. |
| 11 | + |
| 12 | +## Choosing which codegen backends are built |
| 13 | + |
| 14 | +The `rust.codegen-backends = [...]` bootstrap option affects which codegen backends will be built and |
| 15 | +included in the sysroot of the produced `rustc`. To use the GCC codegen backend, `"gcc"` has to |
| 16 | +be included in this array in `bootstrap.toml`: |
| 17 | + |
| 18 | +```toml |
| 19 | +rust.codegen-backends = ["llvm", "gcc"] |
| 20 | +``` |
| 21 | + |
| 22 | +If you don't want to change your `bootstrap.toml` file, you can alternatively run your `x` |
| 23 | +commands with `--set rust.codegen-backends=["llvm", "gcc"]'`. For example: |
| 24 | + |
| 25 | +```bash |
| 26 | +./x build --set 'rust.codegen-backends=["llvm", "gcc"]' |
| 27 | +``` |
| 28 | + |
| 29 | +The first backend in the `codegen-backends` array will determine which backend will be used as the |
| 30 | +*default backend* of the built `rustc`. This also determines which backend will be used to compile the |
| 31 | +stage 1 standard library (or anything built in stage 2+). To produce `rustc` that uses the GCC backend |
| 32 | +by default, you can thus put `"gcc"` as the first element of this array: |
| 33 | + |
| 34 | +```bash |
| 35 | +./x build --set 'rust.codegen-backends=["gcc"]' library |
| 36 | +``` |
| 37 | + |
| 38 | +## Choosing the codegen backend used in tests |
| 39 | + |
| 40 | +To run compiler tests with the GCC codegen backend being used to build the test Rust programs, you can use the |
| 41 | +`--test-codegen-backend` flag: |
| 42 | + |
| 43 | +```bash |
| 44 | +./x test tests/ui --test-codegen-backend gcc |
| 45 | +``` |
| 46 | + |
| 47 | +Note that in order for this to work, the tested compiler must have the GCC codegen backend available in its sysroot |
| 48 | +directory. You can achieve that using the [instructions above](#choosing-which-codegen-backends-are-built). |
| 49 | + |
| 50 | +## Downloading GCC from CI |
| 51 | + |
| 52 | +The `gcc.download-ci-gcc` bootstrap option controls if GCC (which is a dependency of the GCC codegen backend) |
| 53 | +will be downloaded from CI or built locally. The default value is `true`, which will download GCC from CI |
| 54 | +if there are no local changes to the GCC sources and the given host target is available on CI. |
| 55 | + |
| 56 | +Note that GCC can currently only be downloaded from CI for the `x86_64-unknown-linux-gnu` target. |
0 commit comments