@@ -3547,7 +3547,7 @@ impl Step for CodegenCranelift {
3547
3547
3548
3548
#[ derive( Debug , Clone , PartialEq , Eq , Hash ) ]
3549
3549
pub struct CodegenGCC {
3550
- compiler : Compiler ,
3550
+ compilers : RustcPrivateCompilers ,
3551
3551
target : TargetSelection ,
3552
3552
}
3553
3553
@@ -3563,7 +3563,7 @@ impl Step for CodegenGCC {
3563
3563
fn make_run ( run : RunConfig < ' _ > ) {
3564
3564
let builder = run. builder ;
3565
3565
let host = run. build_triple ( ) ;
3566
- let compiler = run. builder . compiler_for ( run. builder . top_stage , host , host) ;
3566
+ let compilers = RustcPrivateCompilers :: new ( run. builder , run. builder . top_stage , host) ;
3567
3567
3568
3568
if builder. doc_tests == DocTests :: Only {
3569
3569
return ;
@@ -3592,68 +3592,41 @@ impl Step for CodegenGCC {
3592
3592
return ;
3593
3593
}
3594
3594
3595
- builder. ensure ( CodegenGCC { compiler , target : run. target } ) ;
3595
+ builder. ensure ( CodegenGCC { compilers , target : run. target } ) ;
3596
3596
}
3597
3597
3598
3598
fn run ( self , builder : & Builder < ' _ > ) {
3599
- let compiler = self . compiler ;
3599
+ let compilers = self . compilers ;
3600
3600
let target = self . target ;
3601
3601
3602
3602
let gcc = builder. ensure ( Gcc { target } ) ;
3603
3603
3604
3604
builder. ensure (
3605
- compile:: Std :: new ( compiler , target)
3605
+ compile:: Std :: new ( compilers . build_compiler ( ) , target)
3606
3606
. extra_rust_args ( & [ "-Csymbol-mangling-version=v0" , "-Cpanic=abort" ] ) ,
3607
3607
) ;
3608
3608
3609
- // If we're not doing a full bootstrap but we're testing a stage2
3610
- // version of libstd, then what we're actually testing is the libstd
3611
- // produced in stage1. Reflect that here by updating the compiler that
3612
- // we're working with automatically.
3613
- let compiler = builder. compiler_for ( compiler. stage , compiler. host , target) ;
3614
-
3615
- let build_cargo = || {
3616
- let mut cargo = builder:: Cargo :: new (
3617
- builder,
3618
- compiler,
3619
- Mode :: Codegen , // Must be codegen to ensure dlopen on compiled dylibs works
3620
- SourceType :: InTree ,
3621
- target,
3622
- Kind :: Run ,
3623
- ) ;
3624
-
3625
- cargo. current_dir ( & builder. src . join ( "compiler/rustc_codegen_gcc" ) ) ;
3626
- cargo
3627
- . arg ( "--manifest-path" )
3628
- . arg ( builder. src . join ( "compiler/rustc_codegen_gcc/build_system/Cargo.toml" ) ) ;
3629
- compile:: rustc_cargo_env ( builder, & mut cargo, target) ;
3630
- add_cg_gcc_cargo_flags ( & mut cargo, & gcc) ;
3609
+ let _msg = builder. msg_test ( "rustc_codegen_gcc" , compilers. build_compiler ( ) ) ;
3631
3610
3632
- // Avoid incremental cache issues when changing rustc
3633
- cargo. env ( "CARGO_BUILD_INCREMENTAL" , "false" ) ;
3634
- cargo. rustflag ( "-Cpanic=abort" ) ;
3635
-
3636
- cargo
3637
- } ;
3638
-
3639
- builder. info ( & format ! (
3640
- "{} GCC stage{} ({} -> {})" ,
3641
- Kind :: Test . description( ) ,
3642
- compiler. stage,
3643
- & compiler. host,
3644
- target
3645
- ) ) ;
3646
- let _time = helpers:: timeit ( builder) ;
3611
+ let mut cargo = builder:: Cargo :: new (
3612
+ builder,
3613
+ compilers. build_compiler ( ) ,
3614
+ Mode :: Codegen , // Must be codegen to ensure dlopen on compiled dylibs works
3615
+ SourceType :: InTree ,
3616
+ target,
3617
+ Kind :: Run ,
3618
+ ) ;
3647
3619
3648
- // FIXME: Uncomment the `prepare` command below once vendoring is implemented.
3649
- /*
3650
- let mut prepare_cargo = build_cargo();
3651
- prepare_cargo.arg("--").arg("prepare");
3652
- #[expect(deprecated)]
3653
- builder.config.try_run(&mut prepare_cargo.into()).unwrap();
3654
- */
3620
+ cargo. current_dir ( & builder. src . join ( "compiler/rustc_codegen_gcc" ) ) ;
3621
+ cargo
3622
+ . arg ( "--manifest-path" )
3623
+ . arg ( builder. src . join ( "compiler/rustc_codegen_gcc/build_system/Cargo.toml" ) ) ;
3624
+ compile:: rustc_cargo_env ( builder, & mut cargo, target) ;
3625
+ add_cg_gcc_cargo_flags ( & mut cargo, & gcc) ;
3655
3626
3656
- let mut cargo = build_cargo ( ) ;
3627
+ // Avoid incremental cache issues when changing rustc
3628
+ cargo. env ( "CARGO_BUILD_INCREMENTAL" , "false" ) ;
3629
+ cargo. rustflag ( "-Cpanic=abort" ) ;
3657
3630
3658
3631
cargo
3659
3632
// cg_gcc's build system ignores RUSTFLAGS. pass some flags through CG_RUSTFLAGS instead.
@@ -3665,14 +3638,21 @@ impl Step for CodegenGCC {
3665
3638
. arg ( "--gcc-path" )
3666
3639
. arg ( gcc. libgccjit . parent ( ) . unwrap ( ) )
3667
3640
. arg ( "--out-dir" )
3668
- . arg ( builder. stage_out ( compiler , Mode :: ToolRustc ) . join ( "cg_gcc" ) )
3641
+ . arg ( builder. stage_out ( compilers . build_compiler ( ) , Mode :: Codegen ) . join ( "cg_gcc" ) )
3669
3642
. arg ( "--release" )
3670
3643
. arg ( "--mini-tests" )
3671
3644
. arg ( "--std-tests" ) ;
3672
3645
cargo. args ( builder. config . test_args ( ) ) ;
3673
3646
3674
3647
cargo. into_cmd ( ) . run ( builder) ;
3675
3648
}
3649
+
3650
+ fn metadata ( & self ) -> Option < StepMetadata > {
3651
+ Some (
3652
+ StepMetadata :: test ( "rustc_codegen_gcc" , self . target )
3653
+ . built_by ( self . compilers . build_compiler ( ) ) ,
3654
+ )
3655
+ }
3676
3656
}
3677
3657
3678
3658
/// Get a build compiler that can be used to test the standard library (i.e. its stage will
0 commit comments