diff options
author | Roland Levillain <rpl@google.com> | 2014-09-16 14:48:16 +0100 |
---|---|---|
committer | Roland Levillain <rpl@google.com> | 2014-09-17 18:19:46 +0100 |
commit | ccc07a9579c554443cd03a306ca9b4f943fd2a93 (patch) | |
tree | 3514cb48520ecd6cf4bb93129bed5cd97f24cb43 /compiler/optimizing/optimizing_unit_test.h | |
parent | 926d8e99aa69151a271180299df68963688010d8 (diff) |
Add CFG and SSA form checkers in the optimizing compiler.
Checks performed on control-flow graphs:
- Ensure that the predecessors and successors of a basic block are
consistent within a control-flow graph.
- Ensure basic blocks end with a branch instruction.
- Detect phi functions listed in non-phi instruction lists and vice
versa.
- Ensure a block's instructions (and phi functions) are associated
with this very block.
Checks performed on SSA form graphs:
- Ensure an instruction dominates all its uses.
- Ensure there are no critical edges.
Change-Id: I1c12b4a61ecf608682152c897980ababa7eca847
Diffstat (limited to 'compiler/optimizing/optimizing_unit_test.h')
-rw-r--r-- | compiler/optimizing/optimizing_unit_test.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/compiler/optimizing/optimizing_unit_test.h b/compiler/optimizing/optimizing_unit_test.h index c409529727..1b930ec3df 100644 --- a/compiler/optimizing/optimizing_unit_test.h +++ b/compiler/optimizing/optimizing_unit_test.h @@ -17,6 +17,10 @@ #ifndef ART_COMPILER_OPTIMIZING_OPTIMIZING_UNIT_TEST_H_ #define ART_COMPILER_OPTIMIZING_OPTIMIZING_UNIT_TEST_H_ +#include "nodes.h" +#include "builder.h" +#include "dex_file.h" +#include "dex_instruction.h" #include "ssa_liveness_analysis.h" namespace art { @@ -61,6 +65,15 @@ void RemoveSuspendChecks(HGraph* graph) { } } +// Create a control-flow graph from Dex instructions. +inline HGraph* CreateCFG(ArenaAllocator* allocator, const uint16_t* data) { + HGraphBuilder builder(allocator); + const DexFile::CodeItem* item = + reinterpret_cast<const DexFile::CodeItem*>(data); + HGraph* graph = builder.BuildGraph(*item); + return graph; +} + } // namespace art #endif // ART_COMPILER_OPTIMIZING_OPTIMIZING_UNIT_TEST_H_ |