/* other assembler state info */
unsigned long offset; /* 0 if unknown */
+ /* storage for optimizer flags */
+ unsigned long opt_flags;
+
/* architecture-dependent data may be appended */
};
void *bc_get_data(bytecode *);
bc->offset = 0;
+ bc->opt_flags = 0;
+
return bc;
}
/*@owned@*/ expr *start;
} data;
+
+ unsigned long opt_flags; /* storage for optimizer flags */
int res_only; /* allow only resb family of bytecodes? */
s->data.general.of_data = of_data;
bytecodes_initialize(&s->bc);
+ s->opt_flags = 0;
s->res_only = res_only;
*isnew = 1;
s->data.start = start;
bytecodes_initialize(&s->bc);
+ s->opt_flags = 0;
s->res_only = 1;
return s;
return (sect->type == SECTION_ABSOLUTE);
}
+unsigned long
+section_get_opt_flags(const section *sect)
+{
+ return sect->opt_flags;
+}
+
+void
+section_set_opt_flags(section *sect, unsigned long opt_flags)
+{
+ sect->opt_flags = opt_flags;
+}
+
void
sections_delete(sectionhead *headp)
{
int section_is_absolute(section *sect);
+/* Get and set optimizer flags */
+unsigned long section_get_opt_flags(const section *sect);
+void section_set_opt_flags(section *sect, unsigned long opt_flags);
+
void sections_delete(sectionhead *headp);
void sections_print(FILE *f, const sectionhead *headp);
*/
/*@null@*/ /*@owned@*/ void *of_data_vis_ce;
/*@null@*/ /*@owned@*/ void *of_data_vis_g;
+
+ /* storage for optimizer flags */
+ unsigned long opt_flags;
};
/* The symbol table: a ternary tree. */
rec->visibility = SYM_LOCAL;
rec->of_data_vis_ce = NULL;
rec->of_data_vis_g = NULL;
+ rec->opt_flags = 0;
if (in_table) {
rec->status = SYM_NOSTATUS;
return (const expr *)NULL;
}
+unsigned long
+symrec_get_opt_flags(const symrec *sym)
+{
+ return sym->opt_flags;
+}
+
+void
+symrec_set_opt_flags(symrec *sym, unsigned long opt_flags)
+{
+ sym->opt_flags = opt_flags;
+}
+
static unsigned long firstundef_line;
static /*@dependent@*/ /*@null@*/ const char *firstundef_filename;
static int
/*@observer@*/ /*@null@*/ const expr *symrec_get_equ(const symrec *sym);
+/* Get and set optimizer flags */
+unsigned long symrec_get_opt_flags(const symrec *sym);
+void symrec_set_opt_flags(symrec *sym, unsigned long opt_flags);
+
int /*@alt void@*/ symrec_traverse(/*@null@*/ void *d,
int (*func) (symrec *sym,
/*@null@*/ void *d));
/* other assembler state info */
unsigned long offset; /* 0 if unknown */
+ /* storage for optimizer flags */
+ unsigned long opt_flags;
+
/* architecture-dependent data may be appended */
};
void *bc_get_data(bytecode *);
bc->offset = 0;
+ bc->opt_flags = 0;
+
return bc;
}
/*@owned@*/ expr *start;
} data;
+
+ unsigned long opt_flags; /* storage for optimizer flags */
int res_only; /* allow only resb family of bytecodes? */
s->data.general.of_data = of_data;
bytecodes_initialize(&s->bc);
+ s->opt_flags = 0;
s->res_only = res_only;
*isnew = 1;
s->data.start = start;
bytecodes_initialize(&s->bc);
+ s->opt_flags = 0;
s->res_only = 1;
return s;
return (sect->type == SECTION_ABSOLUTE);
}
+unsigned long
+section_get_opt_flags(const section *sect)
+{
+ return sect->opt_flags;
+}
+
+void
+section_set_opt_flags(section *sect, unsigned long opt_flags)
+{
+ sect->opt_flags = opt_flags;
+}
+
void
sections_delete(sectionhead *headp)
{
int section_is_absolute(section *sect);
+/* Get and set optimizer flags */
+unsigned long section_get_opt_flags(const section *sect);
+void section_set_opt_flags(section *sect, unsigned long opt_flags);
+
void sections_delete(sectionhead *headp);
void sections_print(FILE *f, const sectionhead *headp);
*/
/*@null@*/ /*@owned@*/ void *of_data_vis_ce;
/*@null@*/ /*@owned@*/ void *of_data_vis_g;
+
+ /* storage for optimizer flags */
+ unsigned long opt_flags;
};
/* The symbol table: a ternary tree. */
rec->visibility = SYM_LOCAL;
rec->of_data_vis_ce = NULL;
rec->of_data_vis_g = NULL;
+ rec->opt_flags = 0;
if (in_table) {
rec->status = SYM_NOSTATUS;
return (const expr *)NULL;
}
+unsigned long
+symrec_get_opt_flags(const symrec *sym)
+{
+ return sym->opt_flags;
+}
+
+void
+symrec_set_opt_flags(symrec *sym, unsigned long opt_flags)
+{
+ sym->opt_flags = opt_flags;
+}
+
static unsigned long firstundef_line;
static /*@dependent@*/ /*@null@*/ const char *firstundef_filename;
static int
/*@observer@*/ /*@null@*/ const expr *symrec_get_equ(const symrec *sym);
+/* Get and set optimizer flags */
+unsigned long symrec_get_opt_flags(const symrec *sym);
+void symrec_set_opt_flags(symrec *sym, unsigned long opt_flags);
+
int /*@alt void@*/ symrec_traverse(/*@null@*/ void *d,
int (*func) (symrec *sym,
/*@null@*/ void *d));