diff options
author | 2025-01-10 13:27:45 +0000 | |
---|---|---|
committer | 2025-01-17 05:55:04 -0800 | |
commit | f5cca5b0592fdb9ecc836dc9158ba5d63e0c1c05 (patch) | |
tree | 176eddeec6da7e7747a3128c054fc96f2b32a18d | |
parent | b3e84e14c630ffff276a217d77fb8890b1bb58a1 (diff) |
Optimizing: Rename `HSelectGenerator`...
... to `HCodeFlowSimplifier` in preparation for adding
more optimizations to this pass.
Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing
Change-Id: Icb05c3455d93a7b939f82ced9b08165e533bb21a
27 files changed, 140 insertions, 142 deletions
diff --git a/compiler/Android.bp b/compiler/Android.bp index ce087dacf7..0a1af65a97 100644 --- a/compiler/Android.bp +++ b/compiler/Android.bp @@ -147,6 +147,7 @@ art_cc_defaults { "optimizing/bounds_check_elimination.cc", "optimizing/builder.cc", "optimizing/cha_guard_optimization.cc", + "optimizing/code_flow_simplifier.cc", "optimizing/code_generation_data.cc", "optimizing/code_generator.cc", "optimizing/code_generator_utils.cc", @@ -186,7 +187,6 @@ art_cc_defaults { "optimizing/register_allocation_resolver.cc", "optimizing/register_allocator.cc", "optimizing/register_allocator_linear_scan.cc", - "optimizing/select_generator.cc", "optimizing/scheduler.cc", "optimizing/sharpening.cc", "optimizing/side_effects_analysis.cc", @@ -459,6 +459,7 @@ art_cc_defaults { "linker/output_stream_test.cc", "oat/jni_stub_hash_map_test.cc", "optimizing/bounds_check_elimination_test.cc", + "optimizing/code_flow_simplifier_test.cc", "optimizing/constant_folding_test.cc", "optimizing/data_type_test.cc", "optimizing/dead_code_elimination_test.cc", @@ -480,7 +481,6 @@ art_cc_defaults { "optimizing/parallel_move_test.cc", "optimizing/pretty_printer_test.cc", "optimizing/reference_type_propagation_test.cc", - "optimizing/select_generator_test.cc", "optimizing/side_effects_test.cc", "optimizing/ssa_liveness_analysis_test.cc", "optimizing/ssa_test.cc", diff --git a/compiler/optimizing/select_generator.cc b/compiler/optimizing/code_flow_simplifier.cc index d5781c8d38..b32a4a5c4c 100644 --- a/compiler/optimizing/select_generator.cc +++ b/compiler/optimizing/code_flow_simplifier.cc @@ -14,7 +14,7 @@ * limitations under the License. */ -#include "select_generator.h" +#include "code_flow_simplifier.h" #include "optimizing/nodes.h" #include "reference_type_propagation.h" @@ -23,9 +23,9 @@ namespace art HIDDEN { static constexpr size_t kMaxInstructionsInBranch = 1u; -HSelectGenerator::HSelectGenerator(HGraph* graph, - OptimizingCompilerStats* stats, - const char* name) +HCodeFlowSimplifier::HCodeFlowSimplifier(HGraph* graph, + OptimizingCompilerStats* stats, + const char* name) : HOptimization(graph, name, stats) { } @@ -87,7 +87,7 @@ static HPhi* GetSinglePhi(HBasicBlock* block, size_t index1, size_t index2) { return select_phi; } -bool HSelectGenerator::TryGenerateSelectSimpleDiamondPattern( +bool HCodeFlowSimplifier::TryGenerateSelectSimpleDiamondPattern( HBasicBlock* block, ScopedArenaSafeMap<HInstruction*, HSelect*>* cache) { DCHECK(block->GetLastInstruction()->IsIf()); HIf* if_instruction = block->GetLastInstruction()->AsIf(); @@ -214,7 +214,7 @@ bool HSelectGenerator::TryGenerateSelectSimpleDiamondPattern( return true; } -HBasicBlock* HSelectGenerator::TryFixupDoubleDiamondPattern(HBasicBlock* block) { +HBasicBlock* HCodeFlowSimplifier::TryFixupDoubleDiamondPattern(HBasicBlock* block) { DCHECK(block->GetLastInstruction()->IsIf()); HIf* if_instruction = block->GetLastInstruction()->AsIf(); HBasicBlock* true_block = if_instruction->IfTrueSuccessor(); @@ -307,12 +307,12 @@ HBasicBlock* HSelectGenerator::TryFixupDoubleDiamondPattern(HBasicBlock* block) return inner_if_block; } -bool HSelectGenerator::Run() { +bool HCodeFlowSimplifier::Run() { bool did_select = false; // Select cache with local allocator. ScopedArenaAllocator allocator(graph_->GetArenaStack()); - ScopedArenaSafeMap<HInstruction*, HSelect*> cache(std::less<HInstruction*>(), - allocator.Adapter(kArenaAllocSelectGenerator)); + ScopedArenaSafeMap<HInstruction*, HSelect*> cache( + std::less<HInstruction*>(), allocator.Adapter(kArenaAllocCodeFlowSimplifier)); // Iterate in post order in the unlikely case that removing one occurrence of // the selection pattern empties a branch block of another occurrence. diff --git a/compiler/optimizing/select_generator.h b/compiler/optimizing/code_flow_simplifier.h index 7aa0803d89..36d8d3d95b 100644 --- a/compiler/optimizing/select_generator.h +++ b/compiler/optimizing/code_flow_simplifier.h @@ -54,8 +54,8 @@ * run after the instruction simplifier has removed redundant suspend checks. */ -#ifndef ART_COMPILER_OPTIMIZING_SELECT_GENERATOR_H_ -#define ART_COMPILER_OPTIMIZING_SELECT_GENERATOR_H_ +#ifndef ART_COMPILER_OPTIMIZING_CODE_FLOW_SIMPLIFIER_H_ +#define ART_COMPILER_OPTIMIZING_CODE_FLOW_SIMPLIFIER_H_ #include "base/macros.h" #include "base/scoped_arena_containers.h" @@ -64,15 +64,15 @@ namespace art HIDDEN { -class HSelectGenerator : public HOptimization { +class HCodeFlowSimplifier : public HOptimization { public: - HSelectGenerator(HGraph* graph, - OptimizingCompilerStats* stats, - const char* name = kSelectGeneratorPassName); + HCodeFlowSimplifier(HGraph* graph, + OptimizingCompilerStats* stats, + const char* name = kCodeFlowSimplifierPassName); bool Run() override; - static constexpr const char* kSelectGeneratorPassName = "select_generator"; + static constexpr const char* kCodeFlowSimplifierPassName = "code_flow_simplifier"; private: bool TryGenerateSelectSimpleDiamondPattern(HBasicBlock* block, @@ -112,9 +112,9 @@ class HSelectGenerator : public HOptimization { // when that gets resolved we get another one with the outer if. HBasicBlock* TryFixupDoubleDiamondPattern(HBasicBlock* block); - DISALLOW_COPY_AND_ASSIGN(HSelectGenerator); + DISALLOW_COPY_AND_ASSIGN(HCodeFlowSimplifier); }; } // namespace art -#endif // ART_COMPILER_OPTIMIZING_SELECT_GENERATOR_H_ +#endif // ART_COMPILER_OPTIMIZING_CODE_FLOW_SIMPLIFIER_H_ diff --git a/compiler/optimizing/select_generator_test.cc b/compiler/optimizing/code_flow_simplifier_test.cc index 9cd6604d34..dc4268a0aa 100644 --- a/compiler/optimizing/select_generator_test.cc +++ b/compiler/optimizing/code_flow_simplifier_test.cc @@ -14,7 +14,7 @@ * limitations under the License. */ -#include "select_generator.h" +#include "code_flow_simplifier.h" #include "base/arena_allocator.h" #include "base/macros.h" @@ -25,7 +25,7 @@ namespace art HIDDEN { -class SelectGeneratorTest : public OptimizingUnitTest { +class CodeFlowSimplifierTest : public OptimizingUnitTest { protected: HPhi* ConstructBasicGraphForSelect(HBasicBlock* return_block, HInstruction* instr) { HParameterValue* bool_param = MakeParam(DataType::Type::kBool); @@ -38,18 +38,18 @@ class SelectGeneratorTest : public OptimizingUnitTest { return phi; } - bool CheckGraphAndTrySelectGenerator() { + bool CheckGraphAndTryCodeFlowSimplifier() { graph_->BuildDominatorTree(); EXPECT_TRUE(CheckGraph()); SideEffectsAnalysis side_effects(graph_); side_effects.Run(); - return HSelectGenerator(graph_, /*handles*/ nullptr, /*stats*/ nullptr).Run(); + return HCodeFlowSimplifier(graph_, /*handles*/ nullptr, /*stats*/ nullptr).Run(); } }; // HDivZeroCheck might throw and should not be hoisted from the conditional to an unconditional. -TEST_F(SelectGeneratorTest, testZeroCheck) { +TEST_F(CodeFlowSimplifierTest, testZeroCheckPreventsSelect) { HBasicBlock* return_block = InitEntryMainExitGraphWithReturnVoid(); HParameterValue* param = MakeParam(DataType::Type::kInt32); HDivZeroCheck* instr = new (GetAllocator()) HDivZeroCheck(param, 0); @@ -57,17 +57,17 @@ TEST_F(SelectGeneratorTest, testZeroCheck) { ManuallyBuildEnvFor(instr, {param, graph_->GetIntConstant(1)}); - EXPECT_FALSE(CheckGraphAndTrySelectGenerator()); + EXPECT_FALSE(CheckGraphAndTryCodeFlowSimplifier()); EXPECT_FALSE(phi->GetBlock() == nullptr); } -// Test that SelectGenerator succeeds with HAdd. -TEST_F(SelectGeneratorTest, testAdd) { +// Test that CodeFlowSimplifier succeeds with HAdd. +TEST_F(CodeFlowSimplifierTest, testSelectWithAdd) { HBasicBlock* return_block = InitEntryMainExitGraphWithReturnVoid(); HParameterValue* param = MakeParam(DataType::Type::kInt32); HAdd* instr = new (GetAllocator()) HAdd(DataType::Type::kInt32, param, param, /*dex_pc=*/ 0); HPhi* phi = ConstructBasicGraphForSelect(return_block, instr); - EXPECT_TRUE(CheckGraphAndTrySelectGenerator()); + EXPECT_TRUE(CheckGraphAndTryCodeFlowSimplifier()); EXPECT_TRUE(phi->GetBlock() == nullptr); } diff --git a/compiler/optimizing/dead_code_elimination.cc b/compiler/optimizing/dead_code_elimination.cc index f44f4b577b..ede909526d 100644 --- a/compiler/optimizing/dead_code_elimination.cc +++ b/compiler/optimizing/dead_code_elimination.cc @@ -526,10 +526,10 @@ void HDeadCodeElimination::MaybeAddPhi(HBasicBlock* block) { // | // 8 // `7` (which would be `block` in this example), and `6` will come from both the true path and - // the false path of `1`. We bumped into something similar in SelectGenerator. See - // HSelectGenerator::TryFixupDoubleDiamondPattern. + // the false path of `1`. We bumped into something similar in `HCodeFlowSimplifier`. See + // `HCodeFlowSimplifier::TryFixupDoubleDiamondPattern()`. // TODO(solanes): Figure out if we can fix up the graph into a double diamond in a generic way - // so that DeadCodeElimination and SelectGenerator can take advantage of it. + // so that `HDeadCodeElimination` and `HCodeFlowSimplifier` can take advantage of it. if (!same_input) { // `1` and `7` having the opposite condition is a case we are missing. We could potentially diff --git a/compiler/optimizing/optimization.cc b/compiler/optimizing/optimization.cc index bd8fbdf1d2..c876254050 100644 --- a/compiler/optimizing/optimization.cc +++ b/compiler/optimizing/optimization.cc @@ -40,6 +40,7 @@ #include "bounds_check_elimination.h" #include "cha_guard_optimization.h" +#include "code_flow_simplifier.h" #include "code_sinking.h" #include "constant_folding.h" #include "constructor_fence_redundancy_elimination.h" @@ -57,7 +58,6 @@ #include "loop_optimization.h" #include "reference_type_propagation.h" #include "scheduler.h" -#include "select_generator.h" #include "sharpening.h" #include "side_effects_analysis.h" #include "write_barrier_elimination.h" @@ -88,8 +88,8 @@ const char* OptimizationPassName(OptimizationPass pass) { return HDeadCodeElimination::kDeadCodeEliminationPassName; case OptimizationPass::kInliner: return HInliner::kInlinerPassName; - case OptimizationPass::kSelectGenerator: - return HSelectGenerator::kSelectGeneratorPassName; + case OptimizationPass::kCodeFlowSimplifier: + return HCodeFlowSimplifier::kCodeFlowSimplifierPassName; case OptimizationPass::kAggressiveInstructionSimplifier: case OptimizationPass::kInstructionSimplifier: return InstructionSimplifier::kInstructionSimplifierPassName; @@ -146,6 +146,7 @@ const char* OptimizationPassName(OptimizationPass pass) { OptimizationPass OptimizationPassByName(const std::string& pass_name) { X(OptimizationPass::kBoundsCheckElimination); X(OptimizationPass::kCHAGuardOptimization); + X(OptimizationPass::kCodeFlowSimplifier); X(OptimizationPass::kCodeSinking); X(OptimizationPass::kConstantFolding); X(OptimizationPass::kConstructorFenceRedundancyElimination); @@ -159,7 +160,6 @@ OptimizationPass OptimizationPassByName(const std::string& pass_name) { X(OptimizationPass::kLoopOptimization); X(OptimizationPass::kReferenceTypePropagation); X(OptimizationPass::kScheduling); - X(OptimizationPass::kSelectGenerator); X(OptimizationPass::kSideEffectsAnalysis); #ifdef ART_ENABLE_CODEGEN_arm X(OptimizationPass::kInstructionSimplifierArm); @@ -266,8 +266,8 @@ ArenaVector<HOptimization*> ConstructOptimizations( pass_name); break; } - case OptimizationPass::kSelectGenerator: - opt = new (allocator) HSelectGenerator(graph, stats, pass_name); + case OptimizationPass::kCodeFlowSimplifier: + opt = new (allocator) HCodeFlowSimplifier(graph, stats, pass_name); break; case OptimizationPass::kInstructionSimplifier: opt = new (allocator) InstructionSimplifier(graph, codegen, stats, pass_name); diff --git a/compiler/optimizing/optimization.h b/compiler/optimizing/optimization.h index abc4361b44..395c45e3f7 100644 --- a/compiler/optimizing/optimization.h +++ b/compiler/optimizing/optimization.h @@ -70,6 +70,7 @@ enum class OptimizationPass { kAggressiveInstructionSimplifier, kBoundsCheckElimination, kCHAGuardOptimization, + kCodeFlowSimplifier, kCodeSinking, kConstantFolding, kConstructorFenceRedundancyElimination, @@ -83,7 +84,6 @@ enum class OptimizationPass { kLoopOptimization, kReferenceTypePropagation, kScheduling, - kSelectGenerator, kSideEffectsAnalysis, kWriteBarrierElimination, #ifdef ART_ENABLE_CODEGEN_arm diff --git a/compiler/optimizing/optimizing_compiler.cc b/compiler/optimizing/optimizing_compiler.cc index cb9933c9c0..5067872ee4 100644 --- a/compiler/optimizing/optimizing_compiler.cc +++ b/compiler/optimizing/optimizing_compiler.cc @@ -57,10 +57,8 @@ #include "profiling_info_builder.h" #include "reference_type_propagation.h" #include "register_allocator_linear_scan.h" -#include "select_generator.h" #include "ssa_builder.h" #include "ssa_liveness_analysis.h" -#include "ssa_phi_elimination.h" #include "stack_map_stream.h" #include "utils/assembler.h" @@ -668,7 +666,7 @@ void OptimizingCompiler::RunOptimizations(HGraph* graph, "reference_type_propagation$after_gvn", OptimizationPass::kGlobalValueNumbering), // Simplification (TODO: only if GVN occurred). - OptDef(OptimizationPass::kSelectGenerator), + OptDef(OptimizationPass::kCodeFlowSimplifier), OptDef(OptimizationPass::kConstantFolding, "constant_folding$after_gvn"), OptDef(OptimizationPass::kInstructionSimplifier, diff --git a/libartbase/base/arena_allocator.cc b/libartbase/base/arena_allocator.cc index a44d1ba0b2..e665ce95c3 100644 --- a/libartbase/base/arena_allocator.cc +++ b/libartbase/base/arena_allocator.cc @@ -77,7 +77,7 @@ const char* const ArenaAllocatorStatsImpl<kCount>::kAllocNames[] = { "SsaLiveness ", "SsaPhiElim ", "RefTypeProp ", - "SelectGen ", + "CodeFlowSimp ", "SideEffects ", "RegAllocator ", "RegAllocVldt ", diff --git a/libartbase/base/arena_allocator.h b/libartbase/base/arena_allocator.h index f7cda26f43..b32921f0e3 100644 --- a/libartbase/base/arena_allocator.h +++ b/libartbase/base/arena_allocator.h @@ -88,7 +88,7 @@ enum ArenaAllocKind { kArenaAllocSsaLiveness, kArenaAllocSsaPhiElimination, kArenaAllocReferenceTypePropagation, - kArenaAllocSelectGenerator, + kArenaAllocCodeFlowSimplifier, kArenaAllocSideEffectsAnalysis, kArenaAllocRegisterAllocator, kArenaAllocRegisterAllocatorValidate, diff --git a/test/2265-checker-select-binary-unary/src/Main.java b/test/2265-checker-select-binary-unary/src/Main.java index 33734fc4d6..94c2bf7796 100644 --- a/test/2265-checker-select-binary-unary/src/Main.java +++ b/test/2265-checker-select-binary-unary/src/Main.java @@ -31,7 +31,7 @@ public class Main { assertIntEquals(12, $noinline$testLongToInt(1, 0)); } - /// CHECK-START: long Main.$noinline$testIntToLong(int, int) select_generator (after) + /// CHECK-START: long Main.$noinline$testIntToLong(int, int) code_flow_simplifier (after) /// CHECK: <<Const10:j\d+>> LongConstant 10 /// CHECK: <<Const1:i\d+>> IntConstant 1 /// CHECK: <<Const2:i\d+>> IntConstant 2 @@ -54,7 +54,7 @@ public class Main { return result + (a < b ? c : d); } - /// CHECK-START: float Main.$noinline$testIntToFloat(int, int) select_generator (after) + /// CHECK-START: float Main.$noinline$testIntToFloat(int, int) code_flow_simplifier (after) /// CHECK: <<Const10:f\d+>> FloatConstant 10 /// CHECK: <<Const1:i\d+>> IntConstant 1 /// CHECK: <<Const2:i\d+>> IntConstant 2 @@ -77,7 +77,7 @@ public class Main { return result + (a < b ? c : d); } - /// CHECK-START: byte Main.$noinline$testIntToByte(int, int) select_generator (after) + /// CHECK-START: byte Main.$noinline$testIntToByte(int, int) code_flow_simplifier (after) /// CHECK: <<Const10:i\d+>> IntConstant 10 /// CHECK: <<Const257:i\d+>> IntConstant 257 /// CHECK: <<Const258:i\d+>> IntConstant 258 @@ -102,7 +102,7 @@ public class Main { return (byte) (result + (byte) (a < b ? c : d)); } - /// CHECK-START: int Main.$noinline$testLongToInt(int, int) select_generator (after) + /// CHECK-START: int Main.$noinline$testLongToInt(int, int) code_flow_simplifier (after) /// CHECK: <<Const10:i\d+>> IntConstant 10 /// CHECK: <<Const1:j\d+>> LongConstant 4294967297 /// CHECK: <<Const2:j\d+>> LongConstant 4294967298 diff --git a/test/458-checker-instruct-simplification/src/Main.java b/test/458-checker-instruct-simplification/src/Main.java index 784acf7949..9600c43028 100644 --- a/test/458-checker-instruct-simplification/src/Main.java +++ b/test/458-checker-instruct-simplification/src/Main.java @@ -1231,7 +1231,7 @@ public class Main { /// CHECK-DAG: <<Phi:i\d+>> Phi [<<Const13>>,<<Const54>>] /// CHECK-DAG: Return [<<Phi>>] - /// CHECK-START: int Main.$noinline$booleanFieldNotEqualOne() select_generator (after) + /// CHECK-START: int Main.$noinline$booleanFieldNotEqualOne() code_flow_simplifier (after) /// CHECK-DAG: <<Field:z\d+>> StaticFieldGet /// CHECK-DAG: <<Const13:i\d+>> IntConstant 13 /// CHECK-DAG: <<Const54:i\d+>> IntConstant 54 @@ -1252,7 +1252,7 @@ public class Main { /// CHECK-DAG: <<Phi:i\d+>> Phi [<<Const13>>,<<Const54>>] /// CHECK-DAG: Return [<<Phi>>] - /// CHECK-START: int Main.$noinline$booleanFieldEqualZero() select_generator (after) + /// CHECK-START: int Main.$noinline$booleanFieldEqualZero() code_flow_simplifier (after) /// CHECK-DAG: <<Field:z\d+>> StaticFieldGet /// CHECK-DAG: <<Const13:i\d+>> IntConstant 13 /// CHECK-DAG: <<Const54:i\d+>> IntConstant 54 @@ -1278,7 +1278,7 @@ public class Main { /// CHECK-DAG: <<Phi2:i\d+>> Phi [<<Const13>>,<<Const54>>] /// CHECK-DAG: Return [<<Phi2>>] - /// CHECK-START: int Main.$noinline$intConditionNotEqualOne(int) select_generator (after) + /// CHECK-START: int Main.$noinline$intConditionNotEqualOne(int) code_flow_simplifier (after) /// CHECK-DAG: <<Arg:i\d+>> ParameterValue /// CHECK-DAG: <<Const13:i\d+>> IntConstant 13 /// CHECK-DAG: <<Const42:i\d+>> IntConstant 42 @@ -1308,7 +1308,7 @@ public class Main { /// CHECK-DAG: <<Phi2:i\d+>> Phi [<<Const13>>,<<Const54>>] /// CHECK-DAG: Return [<<Phi2>>] - /// CHECK-START: int Main.$noinline$intConditionEqualZero(int) select_generator (after) + /// CHECK-START: int Main.$noinline$intConditionEqualZero(int) code_flow_simplifier (after) /// CHECK-DAG: <<Arg:i\d+>> ParameterValue /// CHECK-DAG: <<Const13:i\d+>> IntConstant 13 /// CHECK-DAG: <<Const42:i\d+>> IntConstant 42 diff --git a/test/463-checker-boolean-simplifier/smali/Main2.smali b/test/463-checker-boolean-simplifier/smali/Main2.smali index e8ebb2380c..b10e61022c 100644 --- a/test/463-checker-boolean-simplifier/smali/Main2.smali +++ b/test/463-checker-boolean-simplifier/smali/Main2.smali @@ -31,7 +31,7 @@ # Elementary test negating a boolean. Verifies that blocks are merged and # empty branches removed. -## CHECK-START: boolean Main2.BooleanNot(boolean) select_generator (before) +## CHECK-START: boolean Main2.BooleanNot(boolean) code_flow_simplifier (before) ## CHECK-DAG: <<Param:z\d+>> ParameterValue ## CHECK-DAG: <<Const0:i\d+>> IntConstant 0 ## CHECK-DAG: <<Const1:i\d+>> IntConstant 1 @@ -39,24 +39,24 @@ ## CHECK-DAG: <<Phi:i\d+>> Phi [<<Const1>>,<<Const0>>] ## CHECK-DAG: Return [<<Phi>>] -## CHECK-START: boolean Main2.BooleanNot(boolean) select_generator (before) +## CHECK-START: boolean Main2.BooleanNot(boolean) code_flow_simplifier (before) ## CHECK: Goto ## CHECK: Goto ## CHECK: Goto ## CHECK-NOT: Goto -## CHECK-START: boolean Main2.BooleanNot(boolean) select_generator (after) +## CHECK-START: boolean Main2.BooleanNot(boolean) code_flow_simplifier (after) ## CHECK-DAG: <<Param:z\d+>> ParameterValue ## CHECK-DAG: <<Const0:i\d+>> IntConstant 0 ## CHECK-DAG: <<Const1:i\d+>> IntConstant 1 ## CHECK-DAG: <<NotParam:i\d+>> Select [<<Const1>>,<<Const0>>,<<Param>>] ## CHECK-DAG: Return [<<NotParam>>] -## CHECK-START: boolean Main2.BooleanNot(boolean) select_generator (after) +## CHECK-START: boolean Main2.BooleanNot(boolean) code_flow_simplifier (after) ## CHECK-NOT: If ## CHECK-NOT: Phi -## CHECK-START: boolean Main2.BooleanNot(boolean) select_generator (after) +## CHECK-START: boolean Main2.BooleanNot(boolean) code_flow_simplifier (after) ## CHECK: Goto ## CHECK-NOT: Goto @@ -86,7 +86,7 @@ # Program which further uses negated conditions. # Note that Phis are discovered retrospectively. -## CHECK-START: boolean Main2.ValuesOrdered(int, int, int) select_generator (before) +## CHECK-START: boolean Main2.ValuesOrdered(int, int, int) code_flow_simplifier (before) ## CHECK-DAG: <<ParamX:i\d+>> ParameterValue ## CHECK-DAG: <<ParamY:i\d+>> ParameterValue ## CHECK-DAG: <<ParamZ:i\d+>> ParameterValue @@ -103,7 +103,7 @@ ## CHECK-DAG: <<PhiYZ>> Phi [<<Const1>>,<<Const0>>] ## CHECK-DAG: <<PhiXYZ>> Phi [<<Const1>>,<<Const0>>] -## CHECK-START: boolean Main2.ValuesOrdered(int, int, int) select_generator (after) +## CHECK-START: boolean Main2.ValuesOrdered(int, int, int) code_flow_simplifier (after) ## CHECK-DAG: <<ParamX:i\d+>> ParameterValue ## CHECK-DAG: <<ParamY:i\d+>> ParameterValue ## CHECK-DAG: <<ParamZ:i\d+>> ParameterValue @@ -164,7 +164,7 @@ goto :goto_a .end method -## CHECK-START: int Main2.NegatedCondition(boolean) select_generator (before) +## CHECK-START: int Main2.NegatedCondition(boolean) code_flow_simplifier (before) ## CHECK-DAG: <<Param:z\d+>> ParameterValue ## CHECK-DAG: <<Const42:i\d+>> IntConstant 42 ## CHECK-DAG: <<Const43:i\d+>> IntConstant 43 @@ -172,14 +172,14 @@ ## CHECK-DAG: <<Phi:i\d+>> Phi [<<Const42>>,<<Const43>>] ## CHECK-DAG: Return [<<Phi>>] -## CHECK-START: int Main2.NegatedCondition(boolean) select_generator (after) +## CHECK-START: int Main2.NegatedCondition(boolean) code_flow_simplifier (after) ## CHECK-DAG: <<Param:z\d+>> ParameterValue ## CHECK-DAG: <<Const42:i\d+>> IntConstant 42 ## CHECK-DAG: <<Const43:i\d+>> IntConstant 43 ## CHECK-DAG: <<Select:i\d+>> Select [<<Const43>>,<<Const42>>,<<Param>>] ## CHECK-DAG: Return [<<Select>>] -## CHECK-START: int Main2.NegatedCondition(boolean) select_generator (after) +## CHECK-START: int Main2.NegatedCondition(boolean) code_flow_simplifier (after) ## CHECK-NOT: BooleanNot # The original java source of this method: @@ -214,7 +214,7 @@ # This test currently checks that we don't perform select generation due to # having multiple phis. -## CHECK-START: int Main2.MultiplePhis() select_generator (before) +## CHECK-START: int Main2.MultiplePhis() code_flow_simplifier (before) ## CHECK-DAG: <<Const0:i\d+>> IntConstant 0 ## CHECK-DAG: <<Const1:i\d+>> IntConstant 1 ## CHECK-DAG: <<Const13:i\d+>> IntConstant 13 @@ -226,7 +226,7 @@ ## CHECK-DAG: If [<<Cond>>] ## CHECK-DAG: Return [<<PhiX>>] -## CHECK-START: int Main2.MultiplePhis() select_generator (after) +## CHECK-START: int Main2.MultiplePhis() code_flow_simplifier (after) ## CHECK-DAG: <<Const0:i\d+>> IntConstant 0 ## CHECK-DAG: <<Const1:i\d+>> IntConstant 1 ## CHECK-DAG: <<Const13:i\d+>> IntConstant 13 diff --git a/test/463-checker-boolean-simplifier/src-art/Main.java b/test/463-checker-boolean-simplifier/src-art/Main.java index 2c759ed6f9..5105f50a6e 100644 --- a/test/463-checker-boolean-simplifier/src-art/Main.java +++ b/test/463-checker-boolean-simplifier/src-art/Main.java @@ -39,7 +39,7 @@ public class Main { * and 0 when False. */ - /// CHECK-START: boolean Main.GreaterThan(int, int) select_generator (before) + /// CHECK-START: boolean Main.GreaterThan(int, int) code_flow_simplifier (before) /// CHECK-DAG: <<ParamX:i\d+>> ParameterValue /// CHECK-DAG: <<ParamY:i\d+>> ParameterValue /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 @@ -49,7 +49,7 @@ public class Main { /// CHECK-DAG: <<Phi:i\d+>> Phi [<<Const0>>,<<Const1>>] /// CHECK-DAG: Return [<<Phi>>] - /// CHECK-START: boolean Main.GreaterThan(int, int) select_generator (after) + /// CHECK-START: boolean Main.GreaterThan(int, int) code_flow_simplifier (after) /// CHECK-DAG: <<ParamX:i\d+>> ParameterValue /// CHECK-DAG: <<ParamY:i\d+>> ParameterValue /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 @@ -67,7 +67,7 @@ public class Main { * and 1 when False. */ - /// CHECK-START: boolean Main.LessThan(int, int) select_generator (before) + /// CHECK-START: boolean Main.LessThan(int, int) code_flow_simplifier (before) /// CHECK-DAG: <<ParamX:i\d+>> ParameterValue /// CHECK-DAG: <<ParamY:i\d+>> ParameterValue /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 @@ -77,7 +77,7 @@ public class Main { /// CHECK-DAG: <<Phi:i\d+>> Phi [<<Const1>>,<<Const0>>] /// CHECK-DAG: Return [<<Phi>>] - /// CHECK-START: boolean Main.LessThan(int, int) select_generator (after) + /// CHECK-START: boolean Main.LessThan(int, int) code_flow_simplifier (after) /// CHECK-DAG: <<ParamX:i\d+>> ParameterValue /// CHECK-DAG: <<ParamY:i\d+>> ParameterValue /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 @@ -90,7 +90,7 @@ public class Main { return (x < y) ? true : false; } - /// CHECK-START: int Main.SimpleTrueBlock(boolean, int) select_generator (after) + /// CHECK-START: int Main.SimpleTrueBlock(boolean, int) code_flow_simplifier (after) /// CHECK-DAG: <<ParamX:z\d+>> ParameterValue /// CHECK-DAG: <<ParamY:i\d+>> ParameterValue /// CHECK-DAG: <<Const42:i\d+>> IntConstant 42 @@ -99,14 +99,14 @@ public class Main { /// CHECK-DAG: <<Select:i\d+>> Select [<<Const43>>,<<Add>>,<<ParamX>>] /// CHECK-DAG: Return [<<Select>>] - /// CHECK-START: int Main.SimpleTrueBlock(boolean, int) select_generator (after) + /// CHECK-START: int Main.SimpleTrueBlock(boolean, int) code_flow_simplifier (after) /// CHECK-NOT: If public static int SimpleTrueBlock(boolean x, int y) { return x ? y + 42 : 43; } - /// CHECK-START: int Main.SimpleFalseBlock(boolean, int) select_generator (after) + /// CHECK-START: int Main.SimpleFalseBlock(boolean, int) code_flow_simplifier (after) /// CHECK-DAG: <<ParamX:z\d+>> ParameterValue /// CHECK-DAG: <<ParamY:i\d+>> ParameterValue /// CHECK-DAG: <<Const42:i\d+>> IntConstant 42 @@ -115,14 +115,14 @@ public class Main { /// CHECK-DAG: <<Select:i\d+>> Select [<<Add>>,<<Const42>>,<<ParamX>>] /// CHECK-DAG: Return [<<Select>>] - /// CHECK-START: int Main.SimpleFalseBlock(boolean, int) select_generator (after) + /// CHECK-START: int Main.SimpleFalseBlock(boolean, int) code_flow_simplifier (after) /// CHECK-NOT: If public static int SimpleFalseBlock(boolean x, int y) { return x ? 42 : y + 43; } - /// CHECK-START: int Main.SimpleBothBlocks(boolean, int, int) select_generator (after) + /// CHECK-START: int Main.SimpleBothBlocks(boolean, int, int) code_flow_simplifier (after) /// CHECK-DAG: <<ParamX:z\d+>> ParameterValue /// CHECK-DAG: <<ParamY:i\d+>> ParameterValue /// CHECK-DAG: <<ParamZ:i\d+>> ParameterValue @@ -133,14 +133,14 @@ public class Main { /// CHECK-DAG: <<Select:i\d+>> Select [<<AddFalse>>,<<AddTrue>>,<<ParamX>>] /// CHECK-DAG: Return [<<Select>>] - /// CHECK-START: int Main.SimpleBothBlocks(boolean, int, int) select_generator (after) + /// CHECK-START: int Main.SimpleBothBlocks(boolean, int, int) code_flow_simplifier (after) /// CHECK-NOT: If public static int SimpleBothBlocks(boolean x, int y, int z) { return x ? y + 42 : z + 43; } - /// CHECK-START: int Main.ThreeBlocks(boolean, boolean) select_generator (after) + /// CHECK-START: int Main.ThreeBlocks(boolean, boolean) code_flow_simplifier (after) /// CHECK-DAG: <<ParamX:z\d+>> ParameterValue /// CHECK-DAG: <<ParamY:z\d+>> ParameterValue /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 @@ -160,7 +160,7 @@ public class Main { } } - /// CHECK-START: int Main.TrueBlockWithTooManyInstructions(boolean) select_generator (before) + /// CHECK-START: int Main.TrueBlockWithTooManyInstructions(boolean) code_flow_simplifier (before) /// CHECK-DAG: <<This:l\d+>> ParameterValue /// CHECK-DAG: <<Cond:z\d+>> ParameterValue /// CHECK-DAG: <<Const2:i\d+>> IntConstant 2 @@ -170,14 +170,14 @@ public class Main { /// CHECK-DAG: <<Add:i\d+>> Add [<<Iget>>,<<Const2>>] /// CHECK-DAG: Phi [<<Add>>,<<Const43>>] - /// CHECK-START: int Main.TrueBlockWithTooManyInstructions(boolean) select_generator (after) + /// CHECK-START: int Main.TrueBlockWithTooManyInstructions(boolean) code_flow_simplifier (after) /// CHECK-NOT: Select public int TrueBlockWithTooManyInstructions(boolean x) { return x ? (read_field + 2) : 43; } - /// CHECK-START: int Main.FalseBlockWithTooManyInstructions(boolean) select_generator (before) + /// CHECK-START: int Main.FalseBlockWithTooManyInstructions(boolean) code_flow_simplifier (before) /// CHECK-DAG: <<This:l\d+>> ParameterValue /// CHECK-DAG: <<Cond:z\d+>> ParameterValue /// CHECK-DAG: <<Const3:i\d+>> IntConstant 3 @@ -187,14 +187,14 @@ public class Main { /// CHECK-DAG: <<Add:i\d+>> Add [<<Iget>>,<<Const3>>] /// CHECK-DAG: Phi [<<Const42>>,<<Add>>] - /// CHECK-START: int Main.FalseBlockWithTooManyInstructions(boolean) select_generator (after) + /// CHECK-START: int Main.FalseBlockWithTooManyInstructions(boolean) code_flow_simplifier (after) /// CHECK-NOT: Select public int FalseBlockWithTooManyInstructions(boolean x) { return x ? 42 : (read_field + 3); } - /// CHECK-START: int Main.TrueBlockWithSideEffects(boolean) select_generator (before) + /// CHECK-START: int Main.TrueBlockWithSideEffects(boolean) code_flow_simplifier (before) /// CHECK-DAG: <<This:l\d+>> ParameterValue /// CHECK-DAG: <<Cond:z\d+>> ParameterValue /// CHECK-DAG: <<Const42:i\d+>> IntConstant 42 @@ -203,14 +203,14 @@ public class Main { /// CHECK-DAG: InstanceFieldSet [<<This>>,<<Const42>>] /// CHECK-DAG: Phi [<<Const42>>,<<Const43>>] - /// CHECK-START: int Main.TrueBlockWithSideEffects(boolean) select_generator (after) + /// CHECK-START: int Main.TrueBlockWithSideEffects(boolean) code_flow_simplifier (after) /// CHECK-NOT: Select public int TrueBlockWithSideEffects(boolean x) { return x ? (write_field = 42) : 43; } - /// CHECK-START: int Main.FalseBlockWithSideEffects(boolean) select_generator (before) + /// CHECK-START: int Main.FalseBlockWithSideEffects(boolean) code_flow_simplifier (before) /// CHECK-DAG: <<This:l\d+>> ParameterValue /// CHECK-DAG: <<Cond:z\d+>> ParameterValue /// CHECK-DAG: <<Const42:i\d+>> IntConstant 42 @@ -219,7 +219,7 @@ public class Main { /// CHECK-DAG: InstanceFieldSet [<<This>>,<<Const43>>] /// CHECK-DAG: Phi [<<Const42>>,<<Const43>>] - /// CHECK-START: int Main.FalseBlockWithSideEffects(boolean) select_generator (after) + /// CHECK-START: int Main.FalseBlockWithSideEffects(boolean) code_flow_simplifier (after) /// CHECK-NOT: Select public int FalseBlockWithSideEffects(boolean x) { diff --git a/test/468-checker-bool-simplif-regression/smali/TestCase.smali b/test/468-checker-bool-simplif-regression/smali/TestCase.smali index 87ad21ead4..965bf2d330 100644 --- a/test/468-checker-bool-simplif-regression/smali/TestCase.smali +++ b/test/468-checker-bool-simplif-regression/smali/TestCase.smali @@ -18,7 +18,7 @@ .field public static value:Z -## CHECK-START: boolean TestCase.testCase() select_generator (before) +## CHECK-START: boolean TestCase.testCase() code_flow_simplifier (before) ## CHECK-DAG: <<Const0:i\d+>> IntConstant 0 ## CHECK-DAG: <<Const1:i\d+>> IntConstant 1 ## CHECK-DAG: <<Value:z\d+>> StaticFieldGet @@ -26,7 +26,7 @@ ## CHECK-DAG: <<Phi:i\d+>> Phi [<<Const1>>,<<Const0>>] ## CHECK-DAG: Return [<<Phi>>] -## CHECK-START: boolean TestCase.testCase() select_generator (after) +## CHECK-START: boolean TestCase.testCase() code_flow_simplifier (after) ## CHECK-DAG: <<Const0:i\d+>> IntConstant 0 ## CHECK-DAG: <<Const1:i\d+>> IntConstant 1 ## CHECK-DAG: <<Value:z\d+>> StaticFieldGet diff --git a/test/474-checker-boolean-input/src/Main.java b/test/474-checker-boolean-input/src/Main.java index fbc28d8d52..fbffa70473 100644 --- a/test/474-checker-boolean-input/src/Main.java +++ b/test/474-checker-boolean-input/src/Main.java @@ -27,7 +27,7 @@ public class Main { * we implement a suitable type analysis. */ - /// CHECK-START: boolean Main.TestPhiAsBoolean(int) select_generator (after) + /// CHECK-START: boolean Main.TestPhiAsBoolean(int) code_flow_simplifier (after) /// CHECK-DAG: <<Phi:i\d+>> Phi /// CHECK-DAG: Select [{{i\d+}},{{i\d+}},<<Phi>>] @@ -47,7 +47,7 @@ public class Main { * we implement a suitable type analysis. */ - /// CHECK-START: boolean Main.TestAndAsBoolean(boolean, boolean) select_generator (after) + /// CHECK-START: boolean Main.TestAndAsBoolean(boolean, boolean) code_flow_simplifier (after) /// CHECK-DAG: <<And:i\d+>> And /// CHECK-DAG: Select [{{i\d+}},{{i\d+}},<<And>>] @@ -64,7 +64,7 @@ public class Main { * we implement a suitable type analysis. */ - /// CHECK-START: boolean Main.TestOrAsBoolean(boolean, boolean) select_generator (after) + /// CHECK-START: boolean Main.TestOrAsBoolean(boolean, boolean) code_flow_simplifier (after) /// CHECK-DAG: <<Or:i\d+>> Or /// CHECK-DAG: Select [{{i\d+}},{{i\d+}},<<Or>>] @@ -81,7 +81,7 @@ public class Main { * we implement a suitable type analysis. */ - /// CHECK-START: boolean Main.TestXorAsBoolean(boolean, boolean) select_generator (after) + /// CHECK-START: boolean Main.TestXorAsBoolean(boolean, boolean) code_flow_simplifier (after) /// CHECK-DAG: <<Xor:i\d+>> Xor /// CHECK-DAG: Select [{{i\d+}},{{i\d+}},<<Xor>>] diff --git a/test/485-checker-dce-loop-update/smali/TestCase.smali b/test/485-checker-dce-loop-update/smali/TestCase.smali index 3e7bca93c9..53e352a16a 100644 --- a/test/485-checker-dce-loop-update/smali/TestCase.smali +++ b/test/485-checker-dce-loop-update/smali/TestCase.smali @@ -162,7 +162,7 @@ ## CHECK-START: int TestCase.testExitPredecessors(int, boolean, boolean) dead_code_elimination$after_inlining (after) ## CHECK-NOT: IntConstant 5 -## CHECK-START: int TestCase.testExitPredecessors(int, boolean, boolean) select_generator (after) +## CHECK-START: int TestCase.testExitPredecessors(int, boolean, boolean) code_flow_simplifier (after) ## CHECK-DAG: <<ArgX:i\d+>> ParameterValue ## CHECK-DAG: <<ArgY:z\d+>> ParameterValue ## CHECK-DAG: <<ArgZ:z\d+>> ParameterValue diff --git a/test/567-checker-builder-intrinsics/src/TestCompare.java b/test/567-checker-builder-intrinsics/src/TestCompare.java index 1feb249d5d..0f4f0bee31 100644 --- a/test/567-checker-builder-intrinsics/src/TestCompare.java +++ b/test/567-checker-builder-intrinsics/src/TestCompare.java @@ -37,7 +37,7 @@ public class TestCompare { } } - /// CHECK-START: int TestCompare.compareBooleans(boolean, boolean) select_generator (after) + /// CHECK-START: int TestCompare.compareBooleans(boolean, boolean) code_flow_simplifier (after) /// CHECK-NOT: Phi /// CHECK-START: int TestCompare.compareBooleans(boolean, boolean) instruction_simplifier$before_codegen (after) @@ -64,7 +64,7 @@ public class TestCompare { /// CHECK-START: int TestCompare.compareBooleans2(boolean, boolean) builder (after) /// CHECK-NOT: InvokeStaticOrDirect - /// CHECK-START: int TestCompare.compareBooleans2(boolean, boolean) select_generator (after) + /// CHECK-START: int TestCompare.compareBooleans2(boolean, boolean) code_flow_simplifier (after) /// CHECK: <<ArgX:z\d+>> ParameterValue /// CHECK: <<ArgY:z\d+>> ParameterValue /// CHECK-DAG: <<Zero:i\d+>> IntConstant 0 @@ -74,7 +74,7 @@ public class TestCompare { /// CHECK-DAG: <<Result:i\d+>> Compare [<<SelX>>,<<SelY>>] /// CHECK-DAG: Return [<<Result>>] - /// CHECK-START: int TestCompare.compareBooleans2(boolean, boolean) select_generator (after) + /// CHECK-START: int TestCompare.compareBooleans2(boolean, boolean) code_flow_simplifier (after) /// CHECK-NOT: Phi /// CHECK-START: int TestCompare.compareBooleans2(boolean, boolean) instruction_simplifier$before_codegen (after) diff --git a/test/567-checker-builder-intrinsics/src/TestMinMax.java b/test/567-checker-builder-intrinsics/src/TestMinMax.java index 7207006784..36cd1e6e47 100644 --- a/test/567-checker-builder-intrinsics/src/TestMinMax.java +++ b/test/567-checker-builder-intrinsics/src/TestMinMax.java @@ -564,7 +564,7 @@ public class TestMinMax { return x; } - /// CHECK-START: int TestMinMax.minmax3(int) select_generator (after) + /// CHECK-START: int TestMinMax.minmax3(int) code_flow_simplifier (after) /// CHECK-DAG: <<Par:i\d+>> ParameterValue /// CHECK-DAG: <<P100:i\d+>> IntConstant 100 /// CHECK-DAG: <<M100:i\d+>> IntConstant -100 @@ -588,7 +588,7 @@ public class TestMinMax { return (x > 100) ? 100 : ((x < -100) ? -100 : x); } - /// CHECK-START: int TestMinMax.minmax4(int) select_generator (after) + /// CHECK-START: int TestMinMax.minmax4(int) code_flow_simplifier (after) /// CHECK-DAG: <<Par:i\d+>> ParameterValue /// CHECK-DAG: <<P100:i\d+>> IntConstant 100 /// CHECK-DAG: <<M100:i\d+>> IntConstant -100 @@ -612,7 +612,7 @@ public class TestMinMax { return (x < -100) ? -100 : ((x > 100) ? 100 : x); } - /// CHECK-START: int TestMinMax.minmaxCSEScalar(int, int) select_generator (after) + /// CHECK-START: int TestMinMax.minmaxCSEScalar(int, int) code_flow_simplifier (after) /// CHECK-DAG: <<Par1:i\d+>> ParameterValue /// CHECK-DAG: <<Par2:i\d+>> ParameterValue /// CHECK-DAG: <<Cnd1:z\d+>> LessThanOrEqual [<<Par1>>,<<Par2>>] @@ -648,7 +648,7 @@ public class TestMinMax { return t1 + t2 + t3 + t4 + t5 + t6; } - /// CHECK-START: int TestMinMax.minmaxCSEArray(int[], int[]) select_generator (after) + /// CHECK-START: int TestMinMax.minmaxCSEArray(int[], int[]) code_flow_simplifier (after) /// CHECK-DAG: <<Arr1:i\d+>> ArrayGet /// CHECK-DAG: <<Arr2:i\d+>> ArrayGet /// CHECK-DAG: <<Cnd1:z\d+>> LessThanOrEqual [<<Arr1>>,<<Arr2>>] diff --git a/test/567-checker-builder-intrinsics/src/TestRotate.java b/test/567-checker-builder-intrinsics/src/TestRotate.java index 40abb1b1d1..3a8ffc1335 100644 --- a/test/567-checker-builder-intrinsics/src/TestRotate.java +++ b/test/567-checker-builder-intrinsics/src/TestRotate.java @@ -281,7 +281,7 @@ public class TestRotate { /// CHECK-START: int TestRotate.$inline$rotateLeftBoolean(boolean, int) builder (after) /// CHECK-NOT: InvokeStaticOrDirect - /// CHECK-START: int TestRotate.$inline$rotateLeftBoolean(boolean, int) select_generator (after) + /// CHECK-START: int TestRotate.$inline$rotateLeftBoolean(boolean, int) code_flow_simplifier (after) /// CHECK: <<ArgVal:z\d+>> ParameterValue /// CHECK: <<ArgDist:i\d+>> ParameterValue /// CHECK-DAG: <<Zero:i\d+>> IntConstant 0 @@ -290,7 +290,7 @@ public class TestRotate { /// CHECK-DAG: <<Result:i\d+>> Rol [<<SelVal>>,<<ArgDist>>] /// CHECK-DAG: Return [<<Result>>] - /// CHECK-START: int TestRotate.$inline$rotateLeftBoolean(boolean, int) select_generator (after) + /// CHECK-START: int TestRotate.$inline$rotateLeftBoolean(boolean, int) code_flow_simplifier (after) /// CHECK-NOT: Phi /// CHECK-START: int TestRotate.$inline$rotateLeftBoolean(boolean, int) instruction_simplifier$before_codegen (after) @@ -522,7 +522,7 @@ public class TestRotate { /// CHECK-START: int TestRotate.rotateRightBoolean(boolean, int) builder (after) /// CHECK-NOT: InvokeStaticOrDirect - /// CHECK-START: int TestRotate.rotateRightBoolean(boolean, int) select_generator (after) + /// CHECK-START: int TestRotate.rotateRightBoolean(boolean, int) code_flow_simplifier (after) /// CHECK: <<ArgVal:z\d+>> ParameterValue /// CHECK: <<ArgDist:i\d+>> ParameterValue /// CHECK-DAG: <<Zero:i\d+>> IntConstant 0 @@ -531,7 +531,7 @@ public class TestRotate { /// CHECK-DAG: <<Result:i\d+>> Ror [<<SelVal>>,<<ArgDist>>] /// CHECK-DAG: Return [<<Result>>] - /// CHECK-START: int TestRotate.rotateRightBoolean(boolean, int) select_generator (after) + /// CHECK-START: int TestRotate.rotateRightBoolean(boolean, int) code_flow_simplifier (after) /// CHECK-NOT: Phi /// CHECK-START: int TestRotate.rotateRightBoolean(boolean, int) instruction_simplifier$before_codegen (after) diff --git a/test/567-checker-builder-intrinsics/src/TestSignum.java b/test/567-checker-builder-intrinsics/src/TestSignum.java index 818c940dac..0ec6b3a0a0 100644 --- a/test/567-checker-builder-intrinsics/src/TestSignum.java +++ b/test/567-checker-builder-intrinsics/src/TestSignum.java @@ -81,7 +81,7 @@ public class TestSignum { /// CHECK-START: int TestSignum.signBoolean(boolean) builder (after) /// CHECK-NOT: InvokeStaticOrDirect - /// CHECK-START: int TestSignum.signBoolean(boolean) select_generator (after) + /// CHECK-START: int TestSignum.signBoolean(boolean) code_flow_simplifier (after) /// CHECK-DAG: <<Arg:z\d+>> ParameterValue /// CHECK-DAG: <<Zero:i\d+>> IntConstant 0 /// CHECK-DAG: <<One:i\d+>> IntConstant 1 @@ -89,7 +89,7 @@ public class TestSignum { /// CHECK-DAG: <<Result:i\d+>> Compare [<<Sel>>,<<Zero>>] /// CHECK-DAG: Return [<<Result>>] - /// CHECK-START: int TestSignum.signBoolean(boolean) select_generator (after) + /// CHECK-START: int TestSignum.signBoolean(boolean) code_flow_simplifier (after) /// CHECK-NOT: Phi /// CHECK-START: int TestSignum.signBoolean(boolean) instruction_simplifier$after_gvn (after) diff --git a/test/592-checker-regression-bool-input/smali/TestCase.smali b/test/592-checker-regression-bool-input/smali/TestCase.smali index ad4e902724..29037ab397 100644 --- a/test/592-checker-regression-bool-input/smali/TestCase.smali +++ b/test/592-checker-regression-bool-input/smali/TestCase.smali @@ -16,7 +16,7 @@ .super Ljava/lang/Object; -## CHECK-START: boolean TestCase.testCase() select_generator (after) +## CHECK-START: boolean TestCase.testCase() code_flow_simplifier (after) ## CHECK-DAG: <<Select:i\d+>> Select ## CHECK-DAG: Return [<<Select>>] diff --git a/test/593-checker-boolean-2-integral-conv/smali/SmaliTests.smali b/test/593-checker-boolean-2-integral-conv/smali/SmaliTests.smali index 8e84d054a0..dc544bd101 100644 --- a/test/593-checker-boolean-2-integral-conv/smali/SmaliTests.smali +++ b/test/593-checker-boolean-2-integral-conv/smali/SmaliTests.smali @@ -40,7 +40,7 @@ ## CHECK-DAG: <<IToS:b\d+>> TypeConversion [<<Phi>>] ## CHECK-DAG: Return [<<IToS>>] -## CHECK-START: byte SmaliTests.booleanToByte(boolean) select_generator (after) +## CHECK-START: byte SmaliTests.booleanToByte(boolean) code_flow_simplifier (after) ## CHECK: <<Arg:z\d+>> ParameterValue ## CHECK-DAG: <<Zero:i\d+>> IntConstant 0 ## CHECK-DAG: <<One:i\d+>> IntConstant 1 @@ -75,7 +75,7 @@ ## CHECK-DAG: <<IToS:s\d+>> TypeConversion [<<Phi>>] ## CHECK-DAG: Return [<<IToS>>] -## CHECK-START: short SmaliTests.booleanToShort(boolean) select_generator (after) +## CHECK-START: short SmaliTests.booleanToShort(boolean) code_flow_simplifier (after) ## CHECK: <<Arg:z\d+>> ParameterValue ## CHECK-DAG: <<Zero:i\d+>> IntConstant 0 ## CHECK-DAG: <<One:i\d+>> IntConstant 1 @@ -110,7 +110,7 @@ ## CHECK-DAG: <<IToC:c\d+>> TypeConversion [<<Phi>>] ## CHECK-DAG: Return [<<IToC>>] -## CHECK-START: char SmaliTests.booleanToChar(boolean) select_generator (after) +## CHECK-START: char SmaliTests.booleanToChar(boolean) code_flow_simplifier (after) ## CHECK: <<Arg:z\d+>> ParameterValue ## CHECK-DAG: <<Zero:i\d+>> IntConstant 0 ## CHECK-DAG: <<One:i\d+>> IntConstant 1 @@ -144,7 +144,7 @@ ## CHECK-DAG: <<Phi:i\d+>> Phi [<<One>>,<<Zero>>] ## CHECK-DAG: Return [<<Phi>>] -## CHECK-START: int SmaliTests.booleanToInt(boolean) select_generator (after) +## CHECK-START: int SmaliTests.booleanToInt(boolean) code_flow_simplifier (after) ## CHECK: <<Arg:z\d+>> ParameterValue ## CHECK-DAG: <<Zero:i\d+>> IntConstant 0 ## CHECK-DAG: <<One:i\d+>> IntConstant 1 @@ -177,7 +177,7 @@ ## CHECK-DAG: <<IToJ:j\d+>> TypeConversion [<<Phi>>] ## CHECK-DAG: Return [<<IToJ>>] -## CHECK-START: long SmaliTests.booleanToLong(boolean) select_generator (after) +## CHECK-START: long SmaliTests.booleanToLong(boolean) code_flow_simplifier (after) ## CHECK-DAG: <<Arg:z\d+>> ParameterValue ## CHECK-DAG: <<Zero:i\d+>> IntConstant 0 ## CHECK-DAG: <<One:i\d+>> IntConstant 1 @@ -227,7 +227,7 @@ ## CHECK-DAG: <<JToI:i\d+>> TypeConversion [<<IToJ>>] ## CHECK-DAG: Return [<<JToI>>] -## CHECK-START: int SmaliTests.longToIntOfBoolean() select_generator (after) +## CHECK-START: int SmaliTests.longToIntOfBoolean() code_flow_simplifier (after) ## CHECK-DAG: <<Zero:i\d+>> IntConstant 0 ## CHECK-DAG: <<One:i\d+>> IntConstant 1 ## CHECK-DAG: <<Sget:z\d+>> StaticFieldGet diff --git a/test/593-checker-boolean-2-integral-conv/src/Main.java b/test/593-checker-boolean-2-integral-conv/src/Main.java index 545f16d27e..7a1b83ab23 100644 --- a/test/593-checker-boolean-2-integral-conv/src/Main.java +++ b/test/593-checker-boolean-2-integral-conv/src/Main.java @@ -74,13 +74,13 @@ public class Main { /// CHECK-DAG: <<Phi:j\d+>> Phi [<<One>>,<<Zero>>] /// CHECK-DAG: Return [<<Phi>>] - /// CHECK-START: long Main.booleanToLong(boolean) select_generator (after) + /// CHECK-START: long Main.booleanToLong(boolean) code_flow_simplifier (after) /// CHECK-NOT: IntConstant /// CHECK-NOT: Equal /// CHECK-NOT: If /// CHECK-NOT: Phi - /// CHECK-START: long Main.booleanToLong(boolean) select_generator (after) + /// CHECK-START: long Main.booleanToLong(boolean) code_flow_simplifier (after) /// CHECK: <<Arg:z\d+>> ParameterValue /// CHECK-DAG: <<Zero:j\d+>> LongConstant 0 /// CHECK-DAG: <<One:j\d+>> LongConstant 1 @@ -114,13 +114,13 @@ public class Main { /// CHECK-DAG: <<JToI:i\d+>> TypeConversion [<<Phi>>] /// CHECK-DAG: Return [<<JToI>>] - /// CHECK-START: long Main.booleanToLong(boolean) select_generator (after) + /// CHECK-START: long Main.booleanToLong(boolean) code_flow_simplifier (after) /// CHECK-NOT: IntConstant /// CHECK-NOT: Equal /// CHECK-NOT: If /// CHECK-NOT: Phi - /// CHECK-START: int Main.longToIntOfBoolean() select_generator (after) + /// CHECK-START: int Main.longToIntOfBoolean() code_flow_simplifier (after) /// CHECK-DAG: <<Zero:j\d+>> LongConstant 0 /// CHECK-DAG: <<One:j\d+>> LongConstant 1 /// CHECK-DAG: <<Sget:z\d+>> StaticFieldGet diff --git a/test/657-branches/src/Main.java b/test/657-branches/src/Main.java index 2b62c5faa1..bb448eb44e 100644 --- a/test/657-branches/src/Main.java +++ b/test/657-branches/src/Main.java @@ -19,11 +19,11 @@ public class Main { public static void foo(float f) { // The reason this used to break: // 1) We inline the 'foo' call, so blocks now only contain HLoadClass instructions. - // 2) We then run the select_generator pass, which cannot change the + // 2) We then run the code_flow_simplifier pass, which cannot change the // if/else because blocks contain instructions. // 3) We run GVN which will remove the HLoadClass instructions in the blocks. // 4) At code generation, we are in the unlikely situation that a diamond shape - // contains no instruction (usually removed by select_generator). This used + // contains no instruction (usually removed by code_flow_simplifier). This used // to trip the ARM code generators. if (f < 1.2f) { foo(Main.class, Object.class); diff --git a/test/663-checker-select-generator/src/Main.java b/test/663-checker-select-generator/src/Main.java index 1a185fbc62..6a5564b1c1 100644 --- a/test/663-checker-select-generator/src/Main.java +++ b/test/663-checker-select-generator/src/Main.java @@ -21,13 +21,13 @@ public class Main { /// CHECK-START: int Main.$noinline$testSimpleDiamondSameValue(boolean) builder (after) /// CHECK-NOT: Phi - /// CHECK-START: int Main.$noinline$testSimpleDiamondSameValue(boolean) select_generator (before) + /// CHECK-START: int Main.$noinline$testSimpleDiamondSameValue(boolean) code_flow_simplifier (before) /// CHECK-NOT: Phi - /// CHECK-START: int Main.$noinline$testSimpleDiamondSameValue(boolean) select_generator (after) + /// CHECK-START: int Main.$noinline$testSimpleDiamondSameValue(boolean) code_flow_simplifier (after) /// CHECK-NOT: Phi - /// CHECK-START: int Main.$noinline$testSimpleDiamondSameValue(boolean) select_generator (after) + /// CHECK-START: int Main.$noinline$testSimpleDiamondSameValue(boolean) code_flow_simplifier (after) /// CHECK-NOT: Select private static int $noinline$testSimpleDiamondSameValue(boolean bool_param) { int return_value; @@ -41,14 +41,14 @@ public class Main { // Check that we generate a select for a simple diamond pattern, with different values. - /// CHECK-START: int Main.$noinline$testSimpleDiamondDifferentValue(boolean) select_generator (before) + /// CHECK-START: int Main.$noinline$testSimpleDiamondDifferentValue(boolean) code_flow_simplifier (before) /// CHECK-DAG: <<Const10:i\d+>> IntConstant 10 /// CHECK-DAG: <<Const20:i\d+>> IntConstant 20 /// CHECK-DAG: <<Phi:i\d+>> Phi [<<Arg1:i\d+>>,<<Arg2:i\d+>>] /// CHECK-DAG: Return [<<Phi>>] /// CHECK-EVAL: set(["<<Arg1>>","<<Arg2>>"]) == set(["<<Const10>>","<<Const20>>"]) - /// CHECK-START: int Main.$noinline$testSimpleDiamondDifferentValue(boolean) select_generator (after) + /// CHECK-START: int Main.$noinline$testSimpleDiamondDifferentValue(boolean) code_flow_simplifier (after) /// CHECK-DAG: <<Bool:z\d+>> ParameterValue /// CHECK-DAG: <<Const10:i\d+>> IntConstant 10 /// CHECK-DAG: <<Const20:i\d+>> IntConstant 20 @@ -70,13 +70,13 @@ public class Main { /// CHECK-START: int Main.$noinline$testDoubleDiamondSameValue(boolean, boolean) builder (after) /// CHECK-NOT: Phi - /// CHECK-START: int Main.$noinline$testDoubleDiamondSameValue(boolean, boolean) select_generator (before) + /// CHECK-START: int Main.$noinline$testDoubleDiamondSameValue(boolean, boolean) code_flow_simplifier (before) /// CHECK-NOT: Phi - /// CHECK-START: int Main.$noinline$testDoubleDiamondSameValue(boolean, boolean) select_generator (after) + /// CHECK-START: int Main.$noinline$testDoubleDiamondSameValue(boolean, boolean) code_flow_simplifier (after) /// CHECK-NOT: Phi - /// CHECK-START: int Main.$noinline$testDoubleDiamondSameValue(boolean, boolean) select_generator (after) + /// CHECK-START: int Main.$noinline$testDoubleDiamondSameValue(boolean, boolean) code_flow_simplifier (after) /// CHECK-NOT: Select private static int $noinline$testDoubleDiamondSameValue(boolean bool_param_1, boolean bool_param_2) { int return_value; @@ -94,14 +94,14 @@ public class Main { // Check that we generate a select for a double diamond pattern, with a different value in the outer branch. - /// CHECK-START: int Main.$noinline$testDoubleDiamondSameValueButNotAllOuter(boolean, boolean) select_generator (before) + /// CHECK-START: int Main.$noinline$testDoubleDiamondSameValueButNotAllOuter(boolean, boolean) code_flow_simplifier (before) /// CHECK-DAG: <<Const10:i\d+>> IntConstant 10 /// CHECK-DAG: <<Const20:i\d+>> IntConstant 20 /// CHECK-DAG: <<Phi:i\d+>> Phi [<<Arg1:i\d+>>,<<Arg2:i\d+>>,<<Arg3:i\d+>>] /// CHECK-DAG: Return [<<Phi>>] /// CHECK-EVAL: set(["<<Arg1>>","<<Arg2>>","<<Arg3>>"]) == set(["<<Const10>>","<<Const20>>","<<Const20>>"]) - /// CHECK-START: int Main.$noinline$testDoubleDiamondSameValueButNotAllOuter(boolean, boolean) select_generator (after) + /// CHECK-START: int Main.$noinline$testDoubleDiamondSameValueButNotAllOuter(boolean, boolean) code_flow_simplifier (after) /// CHECK-DAG: <<Bool1:z\d+>> ParameterValue /// CHECK-DAG: <<Bool2:z\d+>> ParameterValue /// CHECK-DAG: <<Const10:i\d+>> IntConstant 10 @@ -125,14 +125,14 @@ public class Main { // Check that we generate a select for a double diamond pattern, with a different value in the inner branch. - /// CHECK-START: int Main.$noinline$testDoubleDiamondSameValueButNotAllInner(boolean, boolean) select_generator (before) + /// CHECK-START: int Main.$noinline$testDoubleDiamondSameValueButNotAllInner(boolean, boolean) code_flow_simplifier (before) /// CHECK-DAG: <<Const10:i\d+>> IntConstant 10 /// CHECK-DAG: <<Const20:i\d+>> IntConstant 20 /// CHECK-DAG: <<Phi:i\d+>> Phi [<<Arg1:i\d+>>,<<Arg2:i\d+>>,<<Arg3:i\d+>>] /// CHECK-DAG: Return [<<Phi>>] /// CHECK-EVAL: set(["<<Arg1>>","<<Arg2>>","<<Arg3>>"]) == set(["<<Const10>>","<<Const20>>","<<Const20>>"]) - /// CHECK-START: int Main.$noinline$testDoubleDiamondSameValueButNotAllInner(boolean, boolean) select_generator (after) + /// CHECK-START: int Main.$noinline$testDoubleDiamondSameValueButNotAllInner(boolean, boolean) code_flow_simplifier (after) /// CHECK-DAG: <<Bool1:z\d+>> ParameterValue /// CHECK-DAG: <<Bool2:z\d+>> ParameterValue /// CHECK-DAG: <<Const10:i\d+>> IntConstant 10 @@ -156,7 +156,7 @@ public class Main { // Check that we generate a select for a double diamond pattern, with a all different values. - /// CHECK-START: int Main.$noinline$testDoubleDiamondDifferentValue(boolean, boolean) select_generator (before) + /// CHECK-START: int Main.$noinline$testDoubleDiamondDifferentValue(boolean, boolean) code_flow_simplifier (before) /// CHECK-DAG: <<Const10:i\d+>> IntConstant 10 /// CHECK-DAG: <<Const20:i\d+>> IntConstant 20 /// CHECK-DAG: <<Const30:i\d+>> IntConstant 30 @@ -164,7 +164,7 @@ public class Main { /// CHECK-DAG: Return [<<Phi>>] /// CHECK-EVAL: set(["<<Arg1>>","<<Arg2>>","<<Arg3>>"]) == set(["<<Const10>>","<<Const20>>","<<Const30>>"]) - /// CHECK-START: int Main.$noinline$testDoubleDiamondDifferentValue(boolean, boolean) select_generator (after) + /// CHECK-START: int Main.$noinline$testDoubleDiamondDifferentValue(boolean, boolean) code_flow_simplifier (after) /// CHECK-DAG: <<Bool1:z\d+>> ParameterValue /// CHECK-DAG: <<Bool2:z\d+>> ParameterValue /// CHECK-DAG: <<Const10:i\d+>> IntConstant 10 @@ -200,7 +200,7 @@ public class Main { /// CHECK: Return [<<Const10>>] /// CHECK: Return [<<Const10>>] - /// CHECK-START: int Main.$noinline$testSimpleDiamondSameValueWithReturn(boolean) select_generator (after) + /// CHECK-START: int Main.$noinline$testSimpleDiamondSameValueWithReturn(boolean) code_flow_simplifier (after) /// CHECK-DAG: <<Bool:z\d+>> ParameterValue /// CHECK-DAG: <<Const10:i\d+>> IntConstant 10 /// CHECK-DAG: <<Select:i\d+>> Select [<<Const10>>,<<Const10>>,<<Bool>>] @@ -222,13 +222,13 @@ public class Main { // Same as testSimpleDiamondDifferentValue, but branches return. - /// CHECK-START: int Main.$noinline$testSimpleDiamondDifferentValueWithReturn(boolean) select_generator (before) + /// CHECK-START: int Main.$noinline$testSimpleDiamondDifferentValueWithReturn(boolean) code_flow_simplifier (before) /// CHECK-DAG: <<Const10:i\d+>> IntConstant 10 /// CHECK-DAG: <<Const20:i\d+>> IntConstant 20 /// CHECK-DAG: Return [<<Const10>>] /// CHECK-DAG: Return [<<Const20>>] - /// CHECK-START: int Main.$noinline$testSimpleDiamondDifferentValueWithReturn(boolean) select_generator (after) + /// CHECK-START: int Main.$noinline$testSimpleDiamondDifferentValueWithReturn(boolean) code_flow_simplifier (after) /// CHECK-DAG: <<Bool:z\d+>> ParameterValue /// CHECK-DAG: <<Const10:i\d+>> IntConstant 10 /// CHECK-DAG: <<Const20:i\d+>> IntConstant 20 @@ -249,7 +249,7 @@ public class Main { /// CHECK: Return [<<Const10>>] /// CHECK: Return [<<Const10>>] - /// CHECK-START: int Main.$noinline$testDoubleDiamondSameValueWithReturn(boolean, boolean) select_generator (after) + /// CHECK-START: int Main.$noinline$testDoubleDiamondSameValueWithReturn(boolean, boolean) code_flow_simplifier (after) /// CHECK-DAG: <<Bool1:z\d+>> ParameterValue /// CHECK-DAG: <<Bool2:z\d+>> ParameterValue /// CHECK-DAG: <<Const10:i\d+>> IntConstant 10 @@ -278,7 +278,7 @@ public class Main { // Same as testDoubleDiamondSameValueButNotAllOuter, but branches return. - /// CHECK-START: int Main.$noinline$testDoubleDiamondSameValueButNotAllOuterWithReturn(boolean, boolean) select_generator (before) + /// CHECK-START: int Main.$noinline$testDoubleDiamondSameValueButNotAllOuterWithReturn(boolean, boolean) code_flow_simplifier (before) /// CHECK-DAG: <<Const10:i\d+>> IntConstant 10 /// CHECK-DAG: <<Const20:i\d+>> IntConstant 20 /// CHECK-DAG: Return [<<Const10>>] @@ -286,12 +286,12 @@ public class Main { /// CHECK-DAG: Return [<<Const20>>] // Note that we have 3 returns as D8 only merges when the line positions are equal. - /// CHECK-START: int Main.$noinline$testDoubleDiamondSameValueButNotAllOuterWithReturn(boolean, boolean) select_generator (before) + /// CHECK-START: int Main.$noinline$testDoubleDiamondSameValueButNotAllOuterWithReturn(boolean, boolean) code_flow_simplifier (before) /// CHECK: Return /// CHECK: Return /// CHECK: Return - /// CHECK-START: int Main.$noinline$testDoubleDiamondSameValueButNotAllOuterWithReturn(boolean, boolean) select_generator (after) + /// CHECK-START: int Main.$noinline$testDoubleDiamondSameValueButNotAllOuterWithReturn(boolean, boolean) code_flow_simplifier (after) /// CHECK-DAG: <<Bool1:z\d+>> ParameterValue /// CHECK-DAG: <<Bool2:z\d+>> ParameterValue /// CHECK-DAG: <<Const10:i\d+>> IntConstant 10 @@ -313,14 +313,14 @@ public class Main { // Same as testDoubleDiamondSameValueButNotAllInner, but branches return. - /// CHECK-START: int Main.$noinline$testDoubleDiamondSameValueButNotAllInnerWithReturn(boolean, boolean) select_generator (before) + /// CHECK-START: int Main.$noinline$testDoubleDiamondSameValueButNotAllInnerWithReturn(boolean, boolean) code_flow_simplifier (before) /// CHECK-DAG: <<Const10:i\d+>> IntConstant 10 /// CHECK-DAG: <<Const20:i\d+>> IntConstant 20 /// CHECK-DAG: Return [<<Const10>>] /// CHECK-DAG: Return [<<Const20>>] /// CHECK-DAG: Return [<<Const20>>] - /// CHECK-START: int Main.$noinline$testDoubleDiamondSameValueButNotAllInnerWithReturn(boolean, boolean) select_generator (after) + /// CHECK-START: int Main.$noinline$testDoubleDiamondSameValueButNotAllInnerWithReturn(boolean, boolean) code_flow_simplifier (after) /// CHECK-DAG: <<Bool1:z\d+>> ParameterValue /// CHECK-DAG: <<Bool2:z\d+>> ParameterValue /// CHECK-DAG: <<Const10:i\d+>> IntConstant 10 @@ -342,7 +342,7 @@ public class Main { // Same as testDoubleDiamondDifferentValue, but branches return. - /// CHECK-START: int Main.$noinline$testDoubleDiamondDifferentValueWithReturn(boolean, boolean) select_generator (before) + /// CHECK-START: int Main.$noinline$testDoubleDiamondDifferentValueWithReturn(boolean, boolean) code_flow_simplifier (before) /// CHECK-DAG: <<Const10:i\d+>> IntConstant 10 /// CHECK-DAG: <<Const20:i\d+>> IntConstant 20 /// CHECK-DAG: <<Const30:i\d+>> IntConstant 30 @@ -350,7 +350,7 @@ public class Main { /// CHECK-DAG: Return [<<Const20>>] /// CHECK-DAG: Return [<<Const30>>] - /// CHECK-START: int Main.$noinline$testDoubleDiamondDifferentValueWithReturn(boolean, boolean) select_generator (after) + /// CHECK-START: int Main.$noinline$testDoubleDiamondDifferentValueWithReturn(boolean, boolean) code_flow_simplifier (after) /// CHECK-DAG: <<Bool1:z\d+>> ParameterValue /// CHECK-DAG: <<Bool2:z\d+>> ParameterValue /// CHECK-DAG: <<Const10:i\d+>> IntConstant 10 diff --git a/test/850-checker-branches/smali/TestCase.smali b/test/850-checker-branches/smali/TestCase.smali index 1c9dc50b0b..786b4304f0 100644 --- a/test/850-checker-branches/smali/TestCase.smali +++ b/test/850-checker-branches/smali/TestCase.smali @@ -16,7 +16,7 @@ .super Ljava/lang/Object; -## CHECK-START: int TestCase.withBranch(boolean) select_generator (before) +## CHECK-START: int TestCase.withBranch(boolean) code_flow_simplifier (before) ## CHECK: If true_count:2 false_count:1 .method public static withBranch(Z)I .registers 2 |