{
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 ();
- }
- }
-}
\f
/* Generate the assembly code for function entry.