@ -1472,11 +1472,11 @@ static void VerificationPass(const IR::Block& block) {
void Optimize ( IR : : Block & block , const A32 : : UserConfig & conf , const Optimization : : PolyfillOptions & polyfill_options ) {
void Optimize ( IR : : Block & block , const A32 : : UserConfig & conf , const Optimization : : PolyfillOptions & polyfill_options ) {
Optimization : : PolyfillPass ( block , polyfill_options ) ;
Optimization : : PolyfillPass ( block , polyfill_options ) ;
Optimization : : NamingPass ( block ) ;
Optimization : : NamingPass ( block ) ;
if ( conf . HasOptimization ( OptimizationFlag : : GetSetElimination ) ) [[likely]] {
if ( conf . HasOptimization ( OptimizationFlag : : GetSetElimination ) ) {
Optimization : : A32GetSetElimination ( block , { . convert_nzc_to_nz = true } ) ;
Optimization : : A32GetSetElimination ( block , { . convert_nzc_to_nz = true } ) ;
Optimization : : DeadCodeElimination ( block ) ;
Optimization : : DeadCodeElimination ( block ) ;
}
}
if ( conf . HasOptimization ( OptimizationFlag : : ConstProp ) ) [[likely]] {
if ( conf . HasOptimization ( OptimizationFlag : : ConstProp ) ) {
Optimization : : ConstantMemoryReads ( block , conf . callbacks ) ;
Optimization : : ConstantMemoryReads ( block , conf . callbacks ) ;
Optimization : : ConstantPropagation ( block ) ;
Optimization : : ConstantPropagation ( block ) ;
Optimization : : DeadCodeElimination ( block ) ;
Optimization : : DeadCodeElimination ( block ) ;
@ -1491,17 +1491,18 @@ void Optimize(IR::Block& block, const A64::UserConfig& conf, const Optimization:
Optimization : : PolyfillPass ( block , polyfill_options ) ;
Optimization : : PolyfillPass ( block , polyfill_options ) ;
Optimization : : A64CallbackConfigPass ( block , conf ) ;
Optimization : : A64CallbackConfigPass ( block , conf ) ;
Optimization : : NamingPass ( block ) ;
Optimization : : NamingPass ( block ) ;
if ( conf . HasOptimization ( OptimizationFlag : : GetSetElimination ) & & ! conf . check_halt_on_memory_access ) [[likely]] {
if ( conf . HasOptimization ( OptimizationFlag : : GetSetElimination ) & & ! conf . check_halt_on_memory_access ) {
Optimization : : A64GetSetElimination ( block ) ;
Optimization : : A64GetSetElimination ( block ) ;
Optimization : : DeadCodeElimination ( block ) ;
Optimization : : DeadCodeElimination ( block ) ;
}
}
if ( conf . HasOptimization ( OptimizationFlag : : ConstProp ) ) [[likely]] {
if ( conf . HasOptimization ( OptimizationFlag : : ConstProp ) ) {
Optimization : : ConstantPropagation ( block ) ;
Optimization : : ConstantPropagation ( block ) ;
Optimization : : DeadCodeElimination ( block ) ;
Optimization : : DeadCodeElimination ( block ) ;
}
}
if ( conf . HasOptimization ( OptimizationFlag : : MiscIROpt ) ) [[likely]] {
if ( conf . HasOptimization ( OptimizationFlag : : MiscIROpt ) ) {
Optimization : : A64MergeInterpretBlocksPass ( block , conf . callbacks ) ;
Optimization : : A64MergeInterpretBlocksPass ( block , conf . callbacks ) ;
}
}
Optimization : : IdentityRemovalPass ( block ) ;
if ( ! conf . HasOptimization ( OptimizationFlag : : DisableVerification ) ) {
if ( ! conf . HasOptimization ( OptimizationFlag : : DisableVerification ) ) {
Optimization : : VerificationPass ( block ) ;
Optimization : : VerificationPass ( block ) ;
}
}