parent
f88a74911f
commit
b9d35b4069
|
@ -1452,99 +1452,6 @@ output_label (label_number)
|
|||
{
|
||||
ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, "L", label_number);
|
||||
}
|
||||
|
||||
/* Handle a pragma directive. HANDLE_PRAGMA conspires to parse the input
|
||||
following #pragma into tokens based on yylex. */
|
||||
|
||||
void
|
||||
m88k_handle_pragma_token (string, token)
|
||||
char *string;
|
||||
tree token;
|
||||
{
|
||||
static enum pragma_state
|
||||
{
|
||||
ps_start,
|
||||
ps_done,
|
||||
ps_bad,
|
||||
ps_weak,
|
||||
ps_name,
|
||||
ps_equals,
|
||||
ps_value
|
||||
} state;
|
||||
static char *name;
|
||||
static char *value;
|
||||
|
||||
if (HANDLE_PRAGMA_WEAK)
|
||||
{
|
||||
if (string == 0)
|
||||
{
|
||||
if (state == ps_name || state == ps_value)
|
||||
{
|
||||
fprintf (asm_out_file, "\t%s\t ", WEAK_ASM_OP);
|
||||
ASM_OUTPUT_LABELREF (asm_out_file, name);
|
||||
fputc ('\n', asm_out_file);
|
||||
if (state == ps_value)
|
||||
{
|
||||
fprintf (asm_out_file, "\t%s\t ", SET_ASM_OP);
|
||||
ASM_OUTPUT_LABELREF (asm_out_file, name);
|
||||
fputc (',', asm_out_file);
|
||||
ASM_OUTPUT_LABELREF (asm_out_file, value);
|
||||
fputc ('\n', asm_out_file);
|
||||
}
|
||||
}
|
||||
else if (! (state == ps_done || state == ps_start))
|
||||
warning ("ignoring malformed #pragma weak symbol [=value]");
|
||||
state = ps_start;
|
||||
}
|
||||
else
|
||||
switch (state)
|
||||
{
|
||||
case ps_start:
|
||||
if (token
|
||||
&& TREE_CODE (token) == IDENTIFIER_NODE
|
||||
&& !strcmp (IDENTIFIER_POINTER (token), "weak"))
|
||||
state = ps_weak;
|
||||
else
|
||||
state = ps_done;
|
||||
break;
|
||||
|
||||
case ps_weak:
|
||||
if (token
|
||||
&& TREE_CODE (token) == IDENTIFIER_NODE)
|
||||
{
|
||||
name = IDENTIFIER_POINTER (token);
|
||||
state = ps_name;
|
||||
}
|
||||
else
|
||||
state = ps_bad;
|
||||
break;
|
||||
|
||||
case ps_name:
|
||||
state = (strcmp (string, "=") ? ps_bad : ps_equals);
|
||||
break;
|
||||
|
||||
case ps_equals:
|
||||
if (token
|
||||
&& TREE_CODE (token) == IDENTIFIER_NODE)
|
||||
{
|
||||
value = IDENTIFIER_POINTER (token);
|
||||
state = ps_value;
|
||||
}
|
||||
else
|
||||
state = ps_bad;
|
||||
break;
|
||||
|
||||
case ps_value:
|
||||
state = ps_bad;
|
||||
case ps_bad:
|
||||
case ps_done:
|
||||
break;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Generate the assembly code for function entry.
|
||||
|
||||
|
|
Loading…
Reference in New Issue