X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=scripts%2Fgen_ir_io.py;h=2a7d64192c9faea308a5839d7a5d32bbbfea7da3;hb=097dbcc83119efd4bff7b9518c6274290963f4d2;hp=5c86c844468d44ecc391eab0dd2202b57c03aa78;hpb=bd092bd1f52df17d8317a2e16b9e9e2dc9b8bed6;p=libfirm diff --git a/scripts/gen_ir_io.py b/scripts/gen_ir_io.py index 5c86c8444..2a7d64192 100755 --- a/scripts/gen_ir_io.py +++ b/scripts/gen_ir_io.py @@ -1,10 +1,8 @@ #!/usr/bin/env python import sys -import re from jinja2 import Environment, Template -from jinja2.filters import do_dictsort -from spec_util import is_dynamic_pinned, verify_node, isAbstract -import ir_spec +from spec_util import is_dynamic_pinned, isAbstract, load_spec +from filters import format_arguments, filter_isnot, filter_hasnot, filter_notset def error(msg): """writes an error message to stderr""" @@ -25,23 +23,6 @@ def format_block(node): else: return "block" -def format_arguments(string): - args = re.split('\s*\n\s*', string) - if args[0] == '': - args = args[1:] - if len(args) > 0 and args[-1] == '': - args = args[:-1] - return ", ".join(args) - -def filter_isnot(list, flag): - return filter(lambda x: not hasattr(x, flag), list) - -def filter_notset(list, flag): - return filter(lambda x: not getattr(x,flag), list) - -def filter_hasnot(list, flag): - return filter(lambda x: flag not in x, list) - env = Environment() env.filters['args'] = format_args env.filters['block'] = format_block @@ -118,8 +99,6 @@ def prepare_attr(node, attr): def preprocess_node(node): - verify_node(node) - if node.customSerializer: return @@ -181,7 +160,7 @@ static ir_node *read_{{node.name}}(read_env_t *env) {%- endif %} {%- if node.arity == "dynamic" or node.arity == "variable" %} int n_preds = read_preds(env); - ir_node **preds = obstack_finish(&env->preds_obst); + ir_node **preds = (ir_node**)obstack_finish(&env->preds_obst); {%- endif %} {%- if node.constructorFlags %} ir_cons_flags flags = cons_none; @@ -194,10 +173,10 @@ static ir_node *read_{{node.name}}(read_env_t *env) {%- endif %} {%- endfor %} {%- if node.dynamic_pinned %} - flags |= pin_state == op_pin_state_floats ? cons_floats : 0; + flags |= pin_state == op_pin_state_floats ? cons_floats : cons_none; {%- endif %} {%- if "fragile" in node.flags %} - flags |= throws ? cons_throws_exception : 0; + flags |= throws ? cons_throws_exception : cons_none; {%- endif %} {%- endif %} res = new_r_{{node.name}}( @@ -269,6 +248,7 @@ static void register_generated_node_writers(void) register_node_writer(op_{{node.name}}, write_{{node.name}}); {%- endfor %} } + ''') def main(argv): @@ -276,10 +256,13 @@ def main(argv): print "usage: %s specname(ignored) destdirectory" % argv[0] sys.exit(1) + specfile = argv[1] gendir = argv[2] + spec = load_spec(specfile) + nodes = spec.nodes real_nodes = [] - for node in ir_spec.nodes: + for node in nodes: if isAbstract(node): continue preprocess_node(node)