Jakob Stoklund Olesen
02c1bb8f2c
Print CFG edges from func.layout instead of cfg.predecessors_iter.
...
EBBs not in the layout should never be printed as part of the CFG.
2016-08-01 15:18:34 -07:00
Morgan Phillips
e22efd2748
Improve the structure and comments of the module.
2016-08-01 15:00:08 -07:00
Morgan Phillips
e9cfcf4f78
Improve the structure and comments of the module.
2016-08-01 15:00:08 -07:00
Morgan Phillips
f2e9c88b45
Remove println\!
2016-08-01 12:15:08 -07:00
Morgan Phillips
5a38ca2db7
Remove println\!
2016-08-01 12:15:08 -07:00
Morgan Phillips
967a7c64d4
Add a dominator tree implementation.
2016-07-31 21:40:11 -07:00
Morgan Phillips
19a47d57b3
Add a dominator tree implementation.
2016-07-31 21:40:11 -07:00
Morgan Phillips
a8beb542a5
Clean up the CFG representation.
2016-07-31 21:31:18 -07:00
Morgan Phillips
0ce01c1b8d
Clean up the CFG representation.
2016-07-31 21:31:18 -07:00
Jakob Stoklund Olesen
dae349371f
Add EntityMap::with_capacity.
...
Create a secondary entity map with space reserved for a known range of entity
references.
Add dfg.num_ebbs() and dfg.num_insts() methods to provide capacities.
2016-07-29 15:59:09 -07:00
Jakob Stoklund Olesen
bbdae39cb9
Add EntityMap::with_capacity.
...
Create a secondary entity map with space reserved for a known range of entity
references.
Add dfg.num_ebbs() and dfg.num_insts() methods to provide capacities.
2016-07-29 15:59:09 -07:00
Jakob Stoklund Olesen
0ef28f5bde
Use sub-shells instead of pushd / popd.
...
The push and pop commands print the directory stack to stdout, while subshells
and cd is quiet.
2016-07-29 12:35:56 -07:00
Jakob Stoklund Olesen
14027660c5
Use sub-shells instead of pushd / popd.
...
The push and pop commands print the directory stack to stdout, while subshells
and cd is quiet.
2016-07-29 12:35:56 -07:00
Morgan Phillips
2f07a3b675
Remove innacurate comments.
2016-07-28 17:51:50 -07:00
Morgan Phillips
a9748dff02
Remove innacurate comments.
2016-07-28 17:51:50 -07:00
Morgan Phillips
7abb532fd6
Merge branch 'master' of github.com:stoklund/cretonne into bleh
2016-07-28 17:49:48 -07:00
Morgan Phillips
858d756631
Merge branch 'master' of github.com:stoklund/cretonne into bleh
2016-07-28 17:49:48 -07:00
Morgan Phillips
7936444e1f
Simplify the reverse_postorder_ebbs implementation.
2016-07-28 17:49:25 -07:00
Morgan Phillips
82ff64820c
Simplify the reverse_postorder_ebbs implementation.
2016-07-28 17:49:25 -07:00
Jakob Stoklund Olesen
0e046dcbcb
Documentation typos.
2016-07-27 16:10:02 -07:00
Jakob Stoklund Olesen
ad79ad753d
Documentation typos.
2016-07-27 16:10:02 -07:00
Morgan Phillips
1027fc7472
Avoid cloning levels
2016-07-26 17:13:11 -07:00
Morgan Phillips
e94d7c2a99
Avoid cloning levels
2016-07-26 17:13:11 -07:00
Morgan Phillips
b67d07e87a
Give the test module a more apt name.
2016-07-26 12:07:18 -07:00
Morgan Phillips
1cd6e35a42
Give the test module a more apt name.
2016-07-26 12:07:18 -07:00
Morgan Phillips
a9842ff363
Fix broken reverse_postorder_ebbs implementation.
...
The previous implementation was actually a reverse preorder walk.
2016-07-26 02:54:42 -07:00
Morgan Phillips
42b9835363
Fix broken reverse_postorder_ebbs implementation.
...
The previous implementation was actually a reverse preorder walk.
2016-07-26 02:54:42 -07:00
Morgan Phillips
9e19326c30
Fix the test-all script so that it works with directories
2016-07-25 19:19:46 -07:00
Morgan Phillips
71bf589af3
Fix the test-all script so that it works with directories
2016-07-25 19:19:46 -07:00
Morgan Phillips
1f0e344b24
Cargo-fmt and cleanup.
2016-07-25 18:51:58 -07:00
Morgan Phillips
400504d321
Cargo-fmt and cleanup.
2016-07-25 18:51:58 -07:00
Morgan Phillips
d137529bd5
Use cton_reader to simplify cfg traversal tests.
2016-07-25 18:49:39 -07:00
Morgan Phillips
63b58214f7
Use cton_reader to simplify cfg traversal tests.
2016-07-25 18:49:39 -07:00
Morgan Phillips
26c350833a
Change variable name to something more descriptive.
2016-07-25 01:05:15 -07:00
Morgan Phillips
bb7ecc8753
Change variable name to something more descriptive.
2016-07-25 01:05:15 -07:00
Morgan Phillips
aa730ec2c4
make postorder_ebbs into actually reverse_postorder_ebbs.
...
This is a more accurate description. Further return the ebbs in a
btreemap so that the index of each Ebb (its order of visitation) is
quick to lookup.
2016-07-25 00:41:34 -07:00
Morgan Phillips
91ced8df90
make postorder_ebbs into actually reverse_postorder_ebbs.
...
This is a more accurate description. Further return the ebbs in a
btreemap so that the index of each Ebb (its order of visitation) is
quick to lookup.
2016-07-25 00:41:34 -07:00
Jakob Stoklund Olesen
8d93fe9685
Add an analyze_branch method to InstructionData.
...
Rather than switching on instruction formats to discover the destination of a
branch, use the analyze_branch method which returns a BranchInfo enum with just
the relevant information.
This makes CFG algorithms independent of future instruction formats for
branches. Only analyze_branch needs to be updated when adding a new format.
2016-07-22 15:38:53 -07:00
Jakob Stoklund Olesen
ae98edf8cc
Add an analyze_branch method to InstructionData.
...
Rather than switching on instruction formats to discover the destination of a
branch, use the analyze_branch method which returns a BranchInfo enum with just
the relevant information.
This makes CFG algorithms independent of future instruction formats for
branches. Only analyze_branch needs to be updated when adding a new format.
2016-07-22 15:38:53 -07:00
Jakob Stoklund Olesen
28a5f007c4
Parse the BranchTable instruction format.
...
Resolve the jump table reference immediately since all jump tables are declared
in the preamble.
2016-07-22 15:16:14 -07:00
Jakob Stoklund Olesen
20fc675fc0
Parse the BranchTable instruction format.
...
Resolve the jump table reference immediately since all jump tables are declared
in the preamble.
2016-07-22 15:16:14 -07:00
Jakob Stoklund Olesen
f054d32f50
Implement jump tables.
...
- Add a ir::jumptable module with a JumpTableData struct representing the vector
of destinations.
- Add an entity map of jump tables to the Function.
- Parse and write jump tables in the function preamble.
- Rewrite EBB references in jumptables after parsing.
2016-07-22 14:48:53 -07:00
Jakob Stoklund Olesen
274671d12a
Implement jump tables.
...
- Add a ir::jumptable module with a JumpTableData struct representing the vector
of destinations.
- Add an entity map of jump tables to the Function.
- Parse and write jump tables in the function preamble.
- Rewrite EBB references in jumptables after parsing.
2016-07-22 14:48:53 -07:00
Jakob Stoklund Olesen
ba76f444ab
Add a keys() iterator to EntityMap.
2016-07-22 14:48:53 -07:00
Jakob Stoklund Olesen
410c1390d1
Add a keys() iterator to EntityMap.
2016-07-22 14:48:53 -07:00
Jakob Stoklund Olesen
8296e92ddc
Move entry_block() into Layout.
...
The single entry block in a function is simply the first block in the layout.
Remove the 'entry' keyword from the textual IL, the lexer and parser.
2016-07-22 10:06:51 -07:00
Jakob Stoklund Olesen
f116f03327
Move entry_block() into Layout.
...
The single entry block in a function is simply the first block in the layout.
Remove the 'entry' keyword from the textual IL, the lexer and parser.
2016-07-22 10:06:51 -07:00
Jakob Stoklund Olesen
27cb00ef42
Rename the 'repr' module to 'ir'.
...
This module and its submodules define the Intermidiate Representation of the
Cretonne IL.
2016-07-22 09:34:28 -07:00
Jakob Stoklund Olesen
38815dcca3
Rename the 'repr' module to 'ir'.
...
This module and its submodules define the Intermidiate Representation of the
Cretonne IL.
2016-07-22 09:34:28 -07:00
Morgan Phillips
3d59a95b0d
Replace btreesets with vectors.
2016-07-21 22:44:13 -07:00