Commit Graph

14 Commits

Author SHA1 Message Date
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
30eb25d013 Track predecessors as well as successors in the CFG 2016-07-21 12:36:51 -07:00
Jakob Stoklund Olesen
89ba9626c7 Move IR modules under repr/.
Use the cretonne::repr module as a common namespace for sub-modules defining the
in-memory representation of Cretonn IL.
2016-07-19 14:10:30 -07:00
Jakob Stoklund Olesen
c1806d0ab0 Use DataFlowGraph in Function.
Replace the three tables instructions, extended_basic_blocks, and
extended_values with a single 'dfg' public member.

Clients using Function are changed to refer to func.layout and func.dfg
respectively.
2016-07-19 13:05:28 -07:00
Jakob Stoklund Olesen
8c58fe4631 Use EBB layout order almost everywhere.
The ebbs_numerically() function was a workaround for the unimplemented EBB layout
order.
2016-07-18 18:52:35 -07:00
Jakob Stoklund Olesen
e926674b4e Replace inst_order with Layout in Function.
The Layout also handles EBB layout, so new append_ebb calls are necessary.

- Rewrite callers to use the public data member 'layout'.
- Implement Debug for Function in terms of the write module to avoid deriving
  it.
2016-07-18 18:23:32 -07:00
Morgan Phillips
8bbc75e39f Remove extra newline 2016-07-16 15:33:30 -07:00
Morgan Phillips
0cdcf29308 Id CFG graphs by function name 2016-07-14 12:22:08 -07:00
Morgan Phillips
4a6e53f90d Add a print-cfg subcommand.
The command returns parses a .cton file, builds a CFG, and prints it to
stdout in graphviz format.
2016-07-13 14:31:05 -07:00
Jakob Stoklund Olesen
7519475f91 Parse and write IR in the 'cat' subcommand.
The 'cton-util cat' command parses the given files and writes them out again to
stdout. This has the effect of reformatting and stripping comments.

Fix a writer bug that inverted the blank line before the first EBB.
2016-07-01 14:12:39 -07:00
Jakob Stoklund Olesen
96e88893be Begin a basic command line interface.
Add an external dependency to the docopt package and use it for a scaffold
command line interface for the cton-util command.

I am not too happy about taking external dependencies, and docopt pulls in 13
other packages. However, I really don't want to be writing command line parsers,
and as long as the external dependencies are confined to the tools crate, we
should be fine.

The core cretonne crate should stay free of external dependencies to avoid
trouble with embedding it.

Implement a basic 'cat' subcommand which currently behaves like unix 'cat'. It
will gain parser powers soon.
2016-07-01 13:47:17 -07:00
Jakob Stoklund Olesen
d34ced5437 Rename the 'cretonne' binary.
It soome that 'cargo doc' gets confused when there is both a library crate
and a binary called 'cretonne'.
2016-04-29 15:15:45 -07:00
Jakob Stoklund Olesen
810a90e322 Rename libraries
libctonfile -> libreader.

This library will only provide .cton file reading/parsing services which are
not needed after deployment.

Code for writing .cton files lives in the main cretonne library because it is
fairly small, and because it is useful for extracting test cases from a
deployed library.
2016-04-29 15:00:16 -07:00
Jakob Stoklund Olesen
4f40a2ae79 Add some scaffolding for building more crates.
The src/tools directory contains the cretonne-tools crate which will build
binaries for testing cretonne.

The src/libctonfile directory contains the ctonfile library crate which
provides reading and writing of .cton files.
2016-04-08 12:55:29 -07:00