/* PR target/27531 */ /* This test case stressed the register allocator into reloading a LABEL_REF on sparc, but didn't add a REG_LABEL note, ultimately causing the assembly output to reference a label that had been eliminated. */ /* { dg-do link } */ /* { dg-options "-O2" } */ typedef struct _IO_FILE FILE; char const *RCSname; void *Locks; void * Head; struct Revpairs{ struct Revpairs * rnext; }; extern char *strchr(const char *s, int c); extern int fprintf(FILE *, const char *format, ...); static void getrevpairs (char*); static int branchflag; static struct Revpairs *revlist, *Revlst; extern int warn(const char *msg, char *argv); extern int error(const char *msg, int c, char *argv); extern int recentdate(void *foo, void *bar); char *t; int main (int argc, char **argv) { FILE *out; char *a, **newargv; void *currdate; int descflag, selectflag; int onlylockflag; int onlyRCSflag; int shownames; descflag = selectflag = shownames = 1; onlylockflag = onlyRCSflag = 0; while (a = *++argv, 0<--argc) { switch (*a++) { case 'L': onlylockflag = 1; case 'N': shownames = 0; case 'R': t = a; case 'b': branchflag = 1; case 'r': getrevpairs(a); } if (onlylockflag && !Locks) fprintf(out, "%s\n", RCSname); if (shownames) while( currdate) recentdate(Head, currdate); } } void getrevpairs(char *argv) { char c; struct Revpairs * nextrevpair; int separator; if (strchr(argv,':')) separator = ':'; else { if (strchr(argv,'-') ) warn("`-' is obsolete in `-r%s'; use `:' instead", argv); separator = '-'; } for (;;) { nextrevpair->rnext = revlist; for (;; c = *++argv) { switch (c) { default: continue; case ' ': case '\t': case '\n': break; case ':': case '-': if (c == separator) continue; } break; } if (!c) break; error("missing `,' near `%c%s'", c, argv+1); } } int warn(const char *msg, char *argv) { t = 0; /* this function needs side-effects. */ return 0; } int error(const char *msg, int c, char *argv) { t = 0; /* this function needs side-effects. */ return 0; } int recentdate(void *foo, void *bar) { t = 0; /* this function needs side-effects. */ return 0; }