cvsuser 03/11/03 17:25:08
Modified: imcc cfg.c main.c optimizer.c stacks.c symreg.c
Log:
Final batch of reformatting.
Revision Changes Path
1.49 +53 -29 parrot/imcc/cfg.c
Index: cfg.c
===================================================================
RCS file: /cvs/public/parrot/imcc/cfg.c,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -w -r1.48 -r1.49
--- cfg.c 27 Oct 2003 06:39:20 -0000 1.48
+++ cfg.c 4 Nov 2003 01:25:07 -0000 1.49
@@ -1,11 +1,3 @@
-
-#include <stdlib.h>
-#include <string.h>
-#include "imc.h"
-#include "optimizer.h"
-
-/* #define ALIAS */
-
/*
* cfg.c
*
@@ -16,6 +8,14 @@
* flow of execution between blocks.
*/
+
+#include <stdlib.h>
+#include <string.h>
+#include "imc.h"
+#include "optimizer.h"
+
+/* #define ALIAS */
+
static void add_instruc_reads(Instruction *ins, SymReg *r0);
static void add_instruc_writes(Instruction *ins, SymReg *r0);
static void propagate_need(Basic_block *bb, SymReg* r, int i);
@@ -33,6 +33,7 @@
#define INVOKE_SUB_RET 2
#define INVOKE_SUB_LOOP 3
#define INVOKE_SUB_OTHER 4
+
static int
check_invoke_type(Instruction *ins)
{
@@ -58,7 +59,8 @@
}
void
-find_basic_blocks (Parrot_Interp interpreter, int first) {
+find_basic_blocks (Parrot_Interp interpreter, int first)
+{
Basic_block *bb;
Instruction *ins;
int nu = 0;
@@ -280,7 +282,8 @@
/* find the placement of the label, and link the two nodes */
static void
-bb_findadd_edge(Parrot_Interp interpreter, Basic_block *from, SymReg *label) {
+bb_findadd_edge(Parrot_Interp interpreter, Basic_block *from, SymReg *label)
+{
Instruction *ins;
SymReg *r = find_sym(label->name);
@@ -307,7 +310,8 @@
}
-int blocks_are_connected(Basic_block *from, Basic_block *to)
+int
+blocks_are_connected(Basic_block *from, Basic_block *to)
{
Edge *pred;
for (pred = to->pred_list; pred != NULL; pred=pred->pred_next) {
@@ -319,8 +323,8 @@
static void
-bb_add_edge(Parrot_Interp interpreter, Basic_block *from, Basic_block *to) {
-
+bb_add_edge(Parrot_Interp interpreter, Basic_block *from, Basic_block *to)
+{
Edge *e;
if (blocks_are_connected(from, to))
return;
@@ -374,7 +378,8 @@
return i;
}
-static void add_instruc_reads(Instruction *ins, SymReg *r0)
+static void
+add_instruc_reads(Instruction *ins, SymReg *r0)
{
int i;
for (i = 0; i < IMCC_MAX_REGS && ins->r[i]; i++)
@@ -389,7 +394,8 @@
ins->flags |= (1<<i);
}
-static void add_instruc_writes(Instruction *ins, SymReg *r0)
+static void
+add_instruc_writes(Instruction *ins, SymReg *r0)
{
int i;
for (i = 0; i < IMCC_MAX_REGS && ins->r[i]; i++)
@@ -402,6 +408,7 @@
ins->r[i] = r0;
ins->flags |= (1<< (16+i));
}
+
#ifdef ALIAS
/*
* set P1, P0
@@ -414,7 +421,8 @@
* XXX currently turned off, this extends life ranges too much
*/
-static void propagate_alias(Parrot_Interp interpreter)
+static void
+propagate_alias(Parrot_Interp interpreter)
{
Instruction *ins, *curr;
SymReg *r0, *r1;
@@ -453,7 +461,9 @@
}
#endif
-void life_analysis(Parrot_Interp interpreter) {
+void
+life_analysis(Parrot_Interp interpreter)
+{
int i;
SymReg** reglist = IMCC_INFO(interpreter)->reglist;
@@ -466,7 +476,8 @@
}
static void
-analyse_life_symbol(Parrot_Interp interpreter, SymReg* r) {
+analyse_life_symbol(Parrot_Interp interpreter, SymReg* r)
+{
int i;
if (r->life_info)
@@ -522,7 +533,8 @@
*/
static void
-analyse_life_block(Parrot_Interp interpreter, Basic_block* bb, SymReg* r) {
+analyse_life_block(Parrot_Interp interpreter, Basic_block* bb, SymReg* r)
+{
Instruction* ins, *special;
Life_range* l;
@@ -585,7 +597,8 @@
static void
-propagate_need(Basic_block *bb, SymReg* r, int i) {
+propagate_need(Basic_block *bb, SymReg* r, int i)
+{
Edge *edge;
Basic_block *pred;
Life_range *l;
@@ -648,7 +661,8 @@
*/
void
-compute_dominators (Parrot_Interp interpreter) {
+compute_dominators (Parrot_Interp interpreter)
+{
#define USE_BFS 1
#if !USE_BFS
@@ -810,7 +824,8 @@
*/
void
-find_loops (Parrot_Interp interpreter) {
+find_loops (Parrot_Interp interpreter)
+{
int i, succ_index;
Set* dom;
Edge* edge;
@@ -845,7 +860,8 @@
/* Incresases the loop_depth of all the nodes in a loop */
static void
-mark_loop (Parrot_Interp interpreter, Edge* e){
+mark_loop (Parrot_Interp interpreter, Edge* e)
+{
Set* loop;
Basic_block *header, *footer, *enter;
int i;
@@ -921,7 +937,9 @@
IMCC_INFO(interpreter)->loop_info = 0;
}
-void search_predecessors_not_in(Basic_block *node, Set* s) {
+void
+search_predecessors_not_in(Basic_block *node, Set* s)
+{
Edge *edge;
Basic_block *pred;
@@ -939,8 +957,8 @@
/*** Utility functions ***/
static void
-init_basic_blocks(Parrot_Interp interpreter) {
-
+init_basic_blocks(Parrot_Interp interpreter)
+{
if (IMCC_INFO(interpreter)->bb_list != NULL)
clear_basic_blocks(interpreter);
IMCC_INFO(interpreter)->bb_list =
@@ -950,7 +968,9 @@
IMCC_INFO(interpreter)->edge_list = 0;
}
-void clear_basic_blocks(Parrot_Interp interpreter) {
+void
+clear_basic_blocks(Parrot_Interp interpreter)
+{
int i;
if (IMCC_INFO(interpreter)->bb_list) {
for (i=0; i < IMCC_INFO(interpreter)->n_basic_blocks; i++)
@@ -964,7 +984,8 @@
}
static Basic_block*
-make_basic_block(Parrot_Interp interpreter, Instruction* ins) {
+make_basic_block(Parrot_Interp interpreter, Instruction* ins)
+{
Basic_block *bb;
int n;
@@ -1000,7 +1021,9 @@
return bb;
}
-Life_range* make_life_range(SymReg *r, int idx) {
+Life_range *
+make_life_range(SymReg *r, int idx)
+{
Life_range *l;
l = calloc(1, sizeof(Life_range));
@@ -1010,6 +1033,7 @@
r->life_info[idx] = l;
return l;
}
+
/*
* Local variables:
* c-indentation-style: bsd
1.59 +10 -5 parrot/imcc/main.c
Index: main.c
===================================================================
RCS file: /cvs/public/parrot/imcc/main.c,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -w -r1.58 -r1.59
--- main.c 31 Oct 2003 11:08:10 -0000 1.58
+++ main.c 4 Nov 2003 01:25:07 -0000 1.59
@@ -26,13 +26,15 @@
static char optimizer_opt[20];
extern FILE *yyin;
-static void usage(FILE* fp)
+static void
+usage(FILE* fp)
{
fprintf(fp,
"parrot -[abcCEfgGhjpPrStvVwy.] [-d [FLAGS]] [-O [level]] [-o FILE] <file>\n");
}
-static void help_debug(void)
+static void
+help_debug(void)
{
printf(
"parrot ... -d [Flags] ...\n"
@@ -49,7 +51,8 @@
" 0x4000 PBC fixups\n");
}
-static void help(void)
+static void
+help(void)
{
printf(
"parrot [Options] <file>\n"
@@ -88,7 +91,8 @@
}
-static void imcc_version(void)
+static void
+imcc_version(void)
{
printf("This is parrot version " PARROT_VERSION " built for "
PARROT_ARCHNAME ".\n\
@@ -390,7 +394,8 @@
}
}
-int main(int argc, char * argv[])
+int
+main(int argc, char * argv[])
{
struct PackFile *pf;
int obj_file;
1.41 +24 -11 parrot/imcc/optimizer.c
Index: optimizer.c
===================================================================
RCS file: /cvs/public/parrot/imcc/optimizer.c,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -w -r1.40 -r1.41
--- optimizer.c 23 Oct 2003 17:02:49 -0000 1.40
+++ optimizer.c 4 Nov 2003 01:25:07 -0000 1.41
@@ -62,7 +62,9 @@
static int loop_optimization(struct Parrot_Interp *);
static int clone_remove(struct Parrot_Interp *);
-void pre_optimize(struct Parrot_Interp *interpreter) {
+void
+pre_optimize(struct Parrot_Interp *interpreter)
+{
if (optimizer_level & OPT_PRE) {
info(interpreter, 2, "pre_optimize\n");
subst_constants_mix(interpreter);
@@ -76,7 +78,9 @@
}
}
-int cfg_optimize(struct Parrot_Interp *interpreter) {
+int
+cfg_optimize(struct Parrot_Interp *interpreter)
+{
UNUSED(interpreter);
if (dont_optimize)
return 0;
@@ -93,8 +97,9 @@
return 0;
}
-int optimize(struct Parrot_Interp *interpreter) {
-
+int
+optimize(struct Parrot_Interp *interpreter)
+{
int any = 0;
if (optimizer_level & OPT_CFG) {
info(interpreter, 2, "optimize\n");
@@ -110,7 +115,8 @@
}
/* get negated opterator for op */
-const char * get_neg_op(char *op, int *n)
+const char *
+get_neg_op(char *op, int *n)
{
static struct br_pairs {
const char *op;
@@ -138,7 +144,8 @@
* branch L2 ---
* L1: L2:
*/
-static void if_branch(struct Parrot_Interp *interpreter)
+static void
+if_branch(struct Parrot_Interp *interpreter)
{
Instruction *ins, *last;
int reg;
@@ -184,10 +191,12 @@
ins = ins->next;
}
}
+
/* these are run after constant simplification, so it is
* guaranteed, that one operand is non constant, if opsize == 4
*/
-static void strength_reduce(struct Parrot_Interp *interpreter)
+static void
+strength_reduce(struct Parrot_Interp *interpreter)
{
Instruction *ins, *tmp;
const char *ops[] = { "add", "sub", "mul", "div" };
@@ -805,7 +814,8 @@
* branch L2
*
*/
-static int branch_branch(struct Parrot_Interp *interpreter)
+static int
+branch_branch(struct Parrot_Interp *interpreter)
{
Instruction *ins, *next;
SymReg * r;
@@ -836,7 +846,8 @@
return changed;
}
-static int unused_label(struct Parrot_Interp *interpreter)
+static int
+unused_label(struct Parrot_Interp *interpreter)
{
Instruction *ins;
int used;
@@ -898,7 +909,8 @@
return changed;
}
-static int dead_code_remove(struct Parrot_Interp *interpreter)
+static int
+dead_code_remove(struct Parrot_Interp *interpreter)
{
Basic_block *bb;
int i;
@@ -955,7 +967,8 @@
}
/* optimizations with CFG & life info built */
-static int used_once(Parrot_Interp interpreter)
+static int
+used_once(Parrot_Interp interpreter)
{
Instruction *ins;
SymReg * r;
1.7 +1 -0 parrot/imcc/stacks.c
Index: stacks.c
===================================================================
RCS file: /cvs/public/parrot/imcc/stacks.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -w -r1.6 -r1.7
--- stacks.c 23 Oct 2003 17:02:49 -0000 1.6
+++ stacks.c 4 Nov 2003 01:25:07 -0000 1.7
@@ -92,6 +92,7 @@
return entry->value;
}
+
/*
* Local variables:
* c-indentation-style: bsd
1.35 +77 -25 parrot/imcc/symreg.c
Index: symreg.c
===================================================================
RCS file: /cvs/public/parrot/imcc/symreg.c,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -w -r1.34 -r1.35
--- symreg.c 23 Oct 2003 17:02:49 -0000 1.34
+++ symreg.c 4 Nov 2003 01:25:07 -0000 1.35
@@ -1,4 +1,11 @@
/*
+ * symreg.c
+ *
+ * XXX: SymReg stuff has become overused. SymReg should be for symbolic
+ * registers, reg allocation, etc. but we are now using it for extensive
+ * symbol table management. Need to convert much of this over the use Symbol
+ * and SymbolTable (see symbol.h and symbol.c)
+ *
* imcc symbol handling
*/
@@ -10,7 +17,9 @@
static SymReg * dup_sym(SymReg *r);
-void push_namespace(char * name) {
+void
+push_namespace(char * name)
+{
Namespace * ns = (Namespace *) malloc(sizeof(*ns));
ns->parent = namespace;
ns->name = name;
@@ -18,7 +27,9 @@
namespace = ns;
}
-void pop_namespace(char * name) {
+void
+pop_namespace(char * name)
+{
Namespace * ns = namespace;
if (ns == NULL) {
fprintf(stderr, "pop() on empty namespace stack\n");
@@ -44,7 +55,9 @@
/* symbolic registers */
/* Makes a new SymReg from its varname and type */
-SymReg * _mk_symreg(SymReg* hsh[],char * name, int t) {
+SymReg *
+_mk_symreg(SymReg* hsh[],char * name, int t)
+{
SymReg * r;
if((r = _get_sym(hsh, name)) && r->set == t) {
free(name);
@@ -66,18 +79,23 @@
return r;
}
-SymReg * mk_symreg(char * name, int t) {
+SymReg *
+mk_symreg(char * name, int t)
+{
return _mk_symreg(hash, name, t);
}
-SymReg * mk_temp_reg(int t) {
+SymReg *
+mk_temp_reg(int t)
+{
char buf[128];
static int temp;
sprintf(buf, "__imcc_temp_%d", ++temp);
return mk_symreg(str_dup(buf), t);
}
-SymReg * mk_pcc_sub(char * name, int proto) {
+SymReg *
+mk_pcc_sub(char * name, int proto) {
SymReg *r = _mk_symreg(hash, name, proto);
r->type = VT_PCC_SUB;
r->pcc_sub = calloc(1, sizeof(struct pcc_sub_t));
@@ -144,7 +162,8 @@
r->pcc_sub->cc->type = VT_REGP;
}
-SymReg * mk_pasm_reg(char * name) {
+SymReg * mk_pasm_reg(char * name)
+{
SymReg * r;
if((r = _get_sym(hash, name))) {
free(name);
@@ -159,7 +178,9 @@
return r;
}
-char * _mk_fullname(Namespace * ns, const char * name) {
+char *
+_mk_fullname(Namespace * ns, const char * name)
+{
char * result;
if (ns == NULL) return str_dup(name);
@@ -168,12 +189,14 @@
return result;
}
-char * mk_fullname(const char * name) {
+char * mk_fullname(const char * name)
+{
return _mk_fullname(namespace, name);
}
/* Makes a new identifier */
-SymReg * mk_ident(char * name, int t) {
+SymReg * mk_ident(char * name, int t)
+{
char * fullname = _mk_fullname(namespace, name);
Identifier * ident;
SymReg * r;
@@ -204,19 +227,25 @@
}
/* Makes a new constant*/
-SymReg * _mk_const(SymReg *hsh[], char * name, int t) {
+SymReg *
+_mk_const(SymReg *hsh[], char * name, int t)
+{
SymReg * r = _mk_symreg(hsh, name, t);
r->type = VTCONST;
r->use_count++;
return r;
}
-SymReg * mk_const(char * name, int t) {
+SymReg *
+mk_const(char * name, int t)
+{
return _mk_const(ghash, name, t);
}
/* Makes a new address */
-SymReg * _mk_address(SymReg *hsh[], char * name, int uniq) {
+SymReg *
+_mk_address(SymReg *hsh[], char * name, int uniq)
+{
SymReg * r;
if (uniq == U_add_all) {
@@ -247,10 +276,12 @@
}
-SymReg * mk_address(char * name, int uniq) {
+SymReg * mk_address(char * name, int uniq)
+{
SymReg ** h = *name == '_' ? ghash : hash;
return _mk_address(h, name, uniq);
}
+
/* link keys to a keys structure = SymReg
*
* we might have
@@ -289,7 +320,8 @@
*
*/
-static SymReg * dup_sym(SymReg *r)
+static SymReg *
+dup_sym(SymReg *r)
{
SymReg * new = malloc(sizeof(SymReg));
if (!new)
@@ -299,7 +331,8 @@
return new;
}
-SymReg * link_keys(int nargs, SymReg * keys[])
+SymReg *
+link_keys(int nargs, SymReg * keys[])
{
SymReg * first, *key, *keychain;
int i;
@@ -383,21 +416,29 @@
/*
* This functions manipulate the hash of symbols.
+ * XXX: Migrate to use Symbol and SymbolTable
*
*/
/* Stores a symbol into the hash */
-void _store_symreg(SymReg *hsh[], SymReg * r) {
+void
+_store_symreg(SymReg *hsh[], SymReg * r)
+{
int i = hash_str(r->name) % HASH_SIZE;
r->next = hsh[i];
hsh[i] = r;
}
-void store_symreg(SymReg * r) {
+
+void
+store_symreg(SymReg * r)
+{
_store_symreg(hash, r);
}
/* Gets a symbol from the hash */
-SymReg * _get_sym(SymReg * hsh[], const char * name) {
+SymReg *
+_get_sym(SymReg * hsh[], const char * name)
+{
SymReg * p;
int i = hash_str(name) % HASH_SIZE;
for(p = hsh[i]; p; p = p->next) {
@@ -406,13 +447,17 @@
}
return 0;
}
-SymReg * get_sym(const char * name) {
+
+SymReg *
+get_sym(const char * name)
+{
return _get_sym(hash, name);
}
/* find a symbol hash or ghash */
SymReg *
-_find_sym(Namespace * nspace, SymReg * hsh[], const char * name) {
+_find_sym(Namespace * nspace, SymReg * hsh[], const char * name)
+{
Namespace * ns;
SymReg *p;
@@ -433,13 +478,16 @@
}
-SymReg * find_sym(const char * name) {
+SymReg *
+find_sym(const char * name)
+{
return _find_sym(namespace, hash, name);
}
void
-_delete_sym(Parrot_Interp interpreter, SymReg * hsh[], const char * name) {
+_delete_sym(Parrot_Interp interpreter, SymReg * hsh[], const char * name)
+{
SymReg ** p;
int i = hash_str(name) % HASH_SIZE;
for(p = &hsh[i]; *p; p = &(*p)->next) {
@@ -457,7 +505,8 @@
/* Deletes all symbols */
void
-clear_tables(Parrot_Interp interpreter, SymReg * hsh[]) {
+clear_tables(Parrot_Interp interpreter, SymReg * hsh[])
+{
int i;
SymReg * p, *next;
for(i = 0; i < HASH_SIZE; i++) {
@@ -477,7 +526,9 @@
/* utility functions: */
-unsigned int hash_str(const char * str) {
+unsigned int
+hash_str(const char * str)
+{
unsigned long key = 0;
const char * s;
for(s=str; *s; s++)
@@ -494,3 +545,4 @@
*
* vim: expandtab shiftwidth=4:
*/
+