]> granicus.if.org Git - yasm/commitdiff
Add opt_flags (space for use by the optimizer).
authorPeter Johnson <peter@tortall.net>
Mon, 3 Dec 2001 02:52:44 +0000 (02:52 -0000)
committerPeter Johnson <peter@tortall.net>
Mon, 3 Dec 2001 02:52:44 +0000 (02:52 -0000)
svn path=/trunk/yasm/; revision=384

12 files changed:
libyasm/bc-int.h
libyasm/bytecode.c
libyasm/section.c
libyasm/section.h
libyasm/symrec.c
libyasm/symrec.h
src/bc-int.h
src/bytecode.c
src/section.c
src/section.h
src/symrec.c
src/symrec.h

index e5e98b2847d5bbb0210c0254f7462012bdd84d79..0b8b20b4c6e0fc5fe213d87c8b1bcdf1f8d8ab54 100644 (file)
@@ -65,6 +65,9 @@ struct bytecode {
     /* 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 *);
index eaf05dc70ce9aebe49a3551cbdced008565a1458..fe9f700662a04dd411737f81366db5a2c207d080 100644 (file)
@@ -143,6 +143,8 @@ bc_new_common(bytecode_type type, size_t datasize)
 
     bc->offset = 0;
 
+    bc->opt_flags = 0;
+
     return bc;
 }
 
index ef897913ac6303c49d7fd932aa1f487d13c5f16f..07768922c1ac49a57ba3c086c63874d494a336d3 100644 (file)
@@ -53,6 +53,8 @@ struct section {
        /*@owned@*/ expr *start;
     } data;
 
+    
+    unsigned long opt_flags;   /* storage for optimizer flags */
 
     int res_only;              /* allow only resb family of bytecodes? */
 
@@ -116,6 +118,7 @@ sections_switch_general(sectionhead *headp, const char *name, void *of_data,
     s->data.general.of_data = of_data;
     bytecodes_initialize(&s->bc);
 
+    s->opt_flags = 0;
     s->res_only = res_only;
 
     *isnew = 1;
@@ -136,6 +139,7 @@ sections_switch_absolute(sectionhead *headp, expr *start)
     s->data.start = start;
     bytecodes_initialize(&s->bc);
 
+    s->opt_flags = 0;
     s->res_only = 1;
 
     return s;
@@ -148,6 +152,18 @@ section_is_absolute(section *sect)
     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)
 {
index dd28cade85ae0d6da6ce7a874c0a54294c877107..011d1c75bb047106bff3808a55a28c4fdcd15297 100644 (file)
@@ -37,6 +37,10 @@ struct objfmt;
 
 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);
index 76ba18d6047ddab89630315776844113daf58d7d..867e8c4860afc4feacac6cb818e45ed657d59ac5 100644 (file)
@@ -75,6 +75,9 @@ struct symrec {
      */
     /*@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. */
@@ -116,6 +119,7 @@ symrec_get_or_new(const char *name, int in_table)
     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;
@@ -283,6 +287,18 @@ symrec_get_equ(const symrec *sym)
     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
index 105d48c44a03557b08faccd6e5ec39d05c70550d..c7d7da1d7c30fde45910ce4be19bcf9a668951af 100644 (file)
@@ -47,6 +47,10 @@ SymVisibility symrec_get_visibility(const symrec *sym);
 
 /*@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));
index e5e98b2847d5bbb0210c0254f7462012bdd84d79..0b8b20b4c6e0fc5fe213d87c8b1bcdf1f8d8ab54 100644 (file)
@@ -65,6 +65,9 @@ struct bytecode {
     /* 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 *);
index eaf05dc70ce9aebe49a3551cbdced008565a1458..fe9f700662a04dd411737f81366db5a2c207d080 100644 (file)
@@ -143,6 +143,8 @@ bc_new_common(bytecode_type type, size_t datasize)
 
     bc->offset = 0;
 
+    bc->opt_flags = 0;
+
     return bc;
 }
 
index ef897913ac6303c49d7fd932aa1f487d13c5f16f..07768922c1ac49a57ba3c086c63874d494a336d3 100644 (file)
@@ -53,6 +53,8 @@ struct section {
        /*@owned@*/ expr *start;
     } data;
 
+    
+    unsigned long opt_flags;   /* storage for optimizer flags */
 
     int res_only;              /* allow only resb family of bytecodes? */
 
@@ -116,6 +118,7 @@ sections_switch_general(sectionhead *headp, const char *name, void *of_data,
     s->data.general.of_data = of_data;
     bytecodes_initialize(&s->bc);
 
+    s->opt_flags = 0;
     s->res_only = res_only;
 
     *isnew = 1;
@@ -136,6 +139,7 @@ sections_switch_absolute(sectionhead *headp, expr *start)
     s->data.start = start;
     bytecodes_initialize(&s->bc);
 
+    s->opt_flags = 0;
     s->res_only = 1;
 
     return s;
@@ -148,6 +152,18 @@ section_is_absolute(section *sect)
     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)
 {
index dd28cade85ae0d6da6ce7a874c0a54294c877107..011d1c75bb047106bff3808a55a28c4fdcd15297 100644 (file)
@@ -37,6 +37,10 @@ struct objfmt;
 
 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);
index 76ba18d6047ddab89630315776844113daf58d7d..867e8c4860afc4feacac6cb818e45ed657d59ac5 100644 (file)
@@ -75,6 +75,9 @@ struct symrec {
      */
     /*@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. */
@@ -116,6 +119,7 @@ symrec_get_or_new(const char *name, int in_table)
     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;
@@ -283,6 +287,18 @@ symrec_get_equ(const symrec *sym)
     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
index 105d48c44a03557b08faccd6e5ec39d05c70550d..c7d7da1d7c30fde45910ce4be19bcf9a668951af 100644 (file)
@@ -47,6 +47,10 @@ SymVisibility symrec_get_visibility(const symrec *sym);
 
 /*@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));