OpenCores
URL https://opencores.org/ocsvn/eco32/eco32/trunk

Subversion Repositories eco32

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /eco32/tags/eco32-0.23/lcc/lib
    from Rev 4 to Rev 157
    Reverse comparison

Rev 4 → Rev 157

/assert.c
0,0 → 1,19
#include <stdio.h>
#include <stdlib.h>
#ifndef EXPORT
#define EXPORT
#endif
 
static char rcsid[] = "$Id: assert.c,v 1.2 2001/06/07 22:30:08 drh Exp $";
 
EXPORT int _assert(char *e, char *file, int line) {
fprintf(stderr, "assertion failed:");
if (e)
fprintf(stderr, " %s", e);
if (file)
fprintf(stderr, " file %s", file);
fprintf(stderr, " line %d\n", line);
fflush(stderr);
abort();
return 0;
}
/yynull.c
0,0 → 1,16
#include <stdio.h>
#include <stdlib.h>
#ifndef EXPORT
#define EXPORT
#endif
 
static char rcsid[] = "$Id: yynull.c,v 1.3 2001/06/07 22:30:09 drh Exp $";
 
EXPORT void _YYnull(char *file, int line) {
fprintf(stderr, "null pointer dereferenced:");
if (file)
fprintf(stderr, " file %s,", file);
fprintf(stderr, " line %d\n", line);
fflush(stderr);
abort();
}
/bbexit.c
0,0 → 1,131
#include <stdio.h>
#include <stdlib.h>
#ifndef EXPORT
#define EXPORT
#endif
 
static char rcsid[] = "$Id: bbexit.c,v 1.6 2001/06/15 20:58:40 drh Exp $";
 
EXPORT struct callsite {
char *file, *name;
union coordinate {
struct { unsigned int index:6,x:10,y:16; } be;
struct { unsigned int y:16,x:10,index:6; } le;
unsigned int coord;
} u;
} *_caller, **_callerp = &_caller;
 
EXPORT void _setcallerp(struct callsite **p) {
_callerp = p;
}
 
static struct _bbdata {
struct _bbdata *link;
int npoints, *counts;
union coordinate *coords;
char **files;
struct func {
struct func *link;
struct caller {
struct caller *link;
struct callsite *caller;
int count;
} *callers;
char *name;
union coordinate src;
} *funcs;
} tail, *_bblist = &tail;
 
static void unpack(unsigned int coord, int *index, int *x, int *y) {
static union { int x; char endian; } little = { 1 };
union coordinate u;
 
u.coord = coord;
if (little.endian) {
*index = u.le.index;
*x = u.le.x;
*y = u.le.y;
} else {
*index = u.be.index;
*x = u.be.x;
*y = u.be.y;
}
}
 
static void profout(struct _bbdata *p, FILE *fp) {
int i, index, x, y;
struct func *f;
struct caller *q;
 
for (i = 0; p->files[i]; i++)
;
fprintf(fp, "%d\n", i);
for (i = 0; p->files[i]; i++)
fprintf(fp, "%s\n", p->files[i]);
for (i = 0, f = p->funcs; f; i++, f = f->link)
if (q = f->callers)
for (i--; q; q = q->link)
i++;
fprintf(fp, "%d\n", i);
for (f = p->funcs; f; f = f->link) {
int n = 0;
for (q = f->callers; q; n += q->count, q = q->link) {
unpack(f->src.coord, &index, &x, &y);
fprintf(fp, "%s %d %d %d %d", f->name, index, x, y, q->count);
if (q->caller) {
unpack(q->caller->u.coord, &index, &x, &y);
fprintf(fp, " %s %s %d %d\n", q->caller->name, q->caller->file, x, y);
} else
fprintf(fp, " ? ? 0 0\n");
}
if (n == 0) {
unpack(f->src.coord, &index, &x, &y);
fprintf(fp, "%s %d %d %d 0 ? ? 0 0\n", f->name, index, x, y);
}
}
fprintf(fp, "%d\n", p->npoints);
for (i = 0; i < p->npoints; i++) {
unpack(p->coords[i].coord, &index, &x, &y);
fprintf(fp, "%d %d %d %d\n", index, x, y, p->counts[i]);
}
}
 
static void bbexit(void) {
FILE *fp;
 
if (_bblist != &tail && (fp = fopen("prof.out", "a"))) {
for ( ; _bblist != &tail; _bblist = _bblist->link)
profout(_bblist, fp);
fclose(fp);
}
}
 
EXPORT void _epilogue(struct func *callee) {
*_callerp = 0;
}
 
EXPORT void _prologue(struct func *callee, struct _bbdata *yylink) {
static struct caller callers[4096];
static int next;
struct caller *p;
 
if (!yylink->link) {
yylink->link = _bblist;
_bblist = yylink;
if (next == 0)
atexit(bbexit);
}
for (p = callee->callers; p; p = p->link)
if (p->caller == *_callerp) {
p->count++;
break;
}
if (!p && next < sizeof callers/sizeof callers[0]) {
p = &callers[next++];
p->caller = *_callerp;
p->count = 1;
p->link = callee->callers;
callee->callers = p;
}
*_callerp = 0;
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.