# This script generates C code which emits assembler code for the
# assembler ir nodes. It takes a "emit" key from the node specification
# and substitutes lines starting with . with a corresponding fprintf().
-# Creation: 2005/11/07
-# $Id$
use strict;
use Data::Dumper;
our %nodes;
our %emit_templates;
our $finish_line_template = "be_emit_finish_line_gas(node);";
+our $indent_line_func;
my $target_c = $target_dir."/gen_".$arch."_emitter.c";
my $target_h = $target_dir."/gen_".$arch."_emitter.h";
sub create_emitter {
my $result = shift;
my $indent = shift;
- my $template = "\\t" . shift;
+ my $template = shift;
our %emit_templates;
our $arch;
+ if (!defined($indent_line_func)) {
+ $template = "\\t" . $template;
+ } else {
+ push(@{$result}, "${indent}${indent_line_func};\n");
+ }
+
my @tokens = ($template =~ m/(?:[^%]|%%)+|\%[a-zA-Z_][a-zA-Z0-9_]*|%\./g);
for (@tokens) {
SWITCH: {