/* PR target/12898
|
/* PR target/12898
|
0x8000 needs multiple instructions to be emitted on Alpha; the
|
0x8000 needs multiple instructions to be emitted on Alpha; the
|
fluff around it causes it to be emitted in a no_new_pseudos
|
fluff around it causes it to be emitted in a no_new_pseudos
|
context, which triggered a problem in alpha.c. */
|
context, which triggered a problem in alpha.c. */
|
|
|
void f (const char *, ...);
|
void f (const char *, ...);
|
int g (void);
|
int g (void);
|
void *p (void);
|
void *p (void);
|
|
|
int isymBase, ilineBase, sym_hdr, want_line, proc_desc;
|
int isymBase, ilineBase, sym_hdr, want_line, proc_desc;
|
char *lines;
|
char *lines;
|
|
|
void print_file_desc (int *fdp)
|
void print_file_desc (int *fdp)
|
{
|
{
|
char *str_base = p ();
|
char *str_base = p ();
|
int symi, pdi = g ();
|
int symi, pdi = g ();
|
|
|
for (symi = 0; isymBase;)
|
for (symi = 0; isymBase;)
|
{
|
{
|
int proc_ptr = proc_desc + pdi;
|
int proc_ptr = proc_desc + pdi;
|
f("1", isymBase, proc_ptr + *fdp, str_base);
|
f("1", isymBase, proc_ptr + *fdp, str_base);
|
if (want_line && *fdp)
|
if (want_line && *fdp)
|
{
|
{
|
int delta;
|
int delta;
|
long cur_line = proc_ptr;
|
long cur_line = proc_ptr;
|
char *line_ptr = lines + proc_ptr;
|
char *line_ptr = lines + proc_ptr;
|
char *line_end = p ();
|
char *line_end = p ();
|
|
|
f("2", sym_hdr);
|
f("2", sym_hdr);
|
while (line_ptr < line_end)
|
while (line_ptr < line_end)
|
{
|
{
|
delta = *line_ptr;
|
delta = *line_ptr;
|
if (delta)
|
if (delta)
|
line_ptr++;
|
line_ptr++;
|
else
|
else
|
delta = line_ptr[1] ^ 0x8000;
|
delta = line_ptr[1] ^ 0x8000;
|
f("3", cur_line, delta);
|
f("3", cur_line, delta);
|
}
|
}
|
}
|
}
|
}
|
}
|
}
|
}
|
|
|