(EXPORT_PARMS, ASM_DECLARE_FUNCTION): Blow away usage of EXPORT_PARMS.
(EXPORT_PARMS, ASM_DECLARE_FUNCTION): Blow away usage of EXPORT_PARMS. BUGGY_GAS isn't a problem any more. (TEXT_SPACE_P, FUNCTION_NAME_P): New macros. (ENCODE_SECTION_INFO): Use TEXT_SPACE_P. (STRIP_NAME_ENCODING): Strip a '*' which might preceed a '@'. (ASM_OUTPUT_EXTERNAL): Give only function labels a CODE type. (ASM_OUTPUT_LABELREF): Use FUNCTION_NAME_P. From-SVN: r2617
This commit is contained in:
parent
6181e18d54
commit
ff2b625255
|
@ -818,12 +818,6 @@ extern enum cmp_type hppa_branch_type;
|
|||
fprintf (FILE, ",ARGW%d=FR", (ARG1));} while (0)
|
||||
#endif
|
||||
|
||||
#ifdef BUGGY_GAS
|
||||
#define EXPORT_PARMS(FILE) fputs (",PRIV_LEV=3", FILE)
|
||||
#else
|
||||
#define EXPORT_PARMS(FILE) fputs (",ENTRY,PRIV_LEV=3", FILE)
|
||||
#endif
|
||||
|
||||
#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \
|
||||
do { tree fntype = DECL_RESULT (DECL); \
|
||||
tree tree_type = TREE_TYPE (DECL); \
|
||||
|
@ -832,7 +826,7 @@ extern enum cmp_type hppa_branch_type;
|
|||
if (TREE_PUBLIC (DECL)) \
|
||||
{ extern int current_function_varargs; \
|
||||
fputs ("\t.EXPORT ", FILE); assemble_name (FILE, NAME); \
|
||||
EXPORT_PARMS (FILE); \
|
||||
fputs (",ENTRY,PRIV_LEV=3", FILE); \
|
||||
for (parm = DECL_ARGUMENTS (DECL), i = 0; parm && i < 4; \
|
||||
parm = TREE_CHAIN (parm)) \
|
||||
{ \
|
||||
|
@ -1270,23 +1264,31 @@ extern union tree_node *current_function_decl;
|
|||
information).
|
||||
|
||||
On the HP-PA we use this to indicate if a symbol is in text or
|
||||
data space. */
|
||||
data space. Also, function labels need special treatment. */
|
||||
|
||||
#define TEXT_SPACE_P(DECL)\
|
||||
(TREE_CODE (DECL) == FUNCTION_DECL \
|
||||
|| (TREE_CODE (DECL) == VAR_DECL \
|
||||
&& TREE_READONLY (DECL) && ! TREE_SIDE_EFFECTS (DECL) \
|
||||
&& !flag_pic) \
|
||||
|| (*tree_code_type[(int) TREE_CODE (DECL)] == 'c' \
|
||||
&& !(TREE_CODE (DECL) == STRING_CST && flag_writable_strings)))
|
||||
|
||||
#define FUNCTION_NAME_P(NAME) \
|
||||
(*(NAME) == '@' || (*(NAME) == '*' && *((NAME) + 1) == '@'))
|
||||
|
||||
#define ENCODE_SECTION_INFO(DECL)\
|
||||
do \
|
||||
{ \
|
||||
if (TREE_CODE (DECL) == FUNCTION_DECL) \
|
||||
{ \
|
||||
hppa_encode_label (XEXP (DECL_RTL (DECL), 0)); \
|
||||
SYMBOL_REF_FLAG (XEXP (DECL_RTL (DECL), 0)) = 1; \
|
||||
} \
|
||||
{ if (TEXT_SPACE_P (DECL)) \
|
||||
{ rtx _rtl; \
|
||||
if (TREE_CODE (DECL) == FUNCTION_DECL \
|
||||
|| TREE_CODE (DECL) == VAR_DECL) \
|
||||
_rtl = DECL_RTL (DECL); \
|
||||
else \
|
||||
{ \
|
||||
rtx rtl = (TREE_CODE_CLASS (TREE_CODE (DECL)) != 'd' \
|
||||
? TREE_CST_RTL (DECL) : DECL_RTL (DECL)); \
|
||||
if (RTX_UNCHANGING_P (rtl) && !MEM_VOLATILE_P (rtl) \
|
||||
&& !flag_pic) \
|
||||
SYMBOL_REF_FLAG (XEXP (rtl, 0)) = 1; \
|
||||
_rtl = TREE_CST_RTL (DECL); \
|
||||
SYMBOL_REF_FLAG (XEXP (_rtl, 0)) = 1; \
|
||||
if (TREE_CODE (DECL) == FUNCTION_DECL) \
|
||||
hppa_encode_label (XEXP (DECL_RTL (DECL), 0));\
|
||||
} \
|
||||
} \
|
||||
while (0)
|
||||
|
@ -1295,8 +1297,9 @@ while (0)
|
|||
This is sort of inverse to ENCODE_SECTION_INFO. */
|
||||
|
||||
#define STRIP_NAME_ENCODING(VAR,SYMBOL_NAME) \
|
||||
(VAR) = ((SYMBOL_NAME) \
|
||||
+ ((SYMBOL_NAME)[0] == '*' || (SYMBOL_NAME)[0] == '@'))
|
||||
(VAR) = ((SYMBOL_NAME) + ((SYMBOL_NAME)[0] == '*' ? \
|
||||
1 + (SYMBOL_NAME)[1] == '@'\
|
||||
: (SYMBOL_NAME)[0] == '@'))
|
||||
|
||||
/* Specify the machine mode that this machine uses
|
||||
for the index in the tablejump instruction. */
|
||||
|
@ -1520,10 +1523,10 @@ bss_section () \
|
|||
#define ASM_OUTPUT_EXTERNAL(FILE, DECL, NAME) \
|
||||
do { fputs ("\t.IMPORT ", FILE); \
|
||||
assemble_name (FILE, NAME); \
|
||||
if (TREE_CODE (DECL) == VAR_DECL && ! TREE_READONLY (DECL)) \
|
||||
fputs (",DATA\n", FILE); \
|
||||
else \
|
||||
if (FUNCTION_NAME_P (NAME)) \
|
||||
fputs (",CODE\n", FILE); \
|
||||
else \
|
||||
fputs (",DATA\n", FILE); \
|
||||
} while (0)
|
||||
|
||||
/* hpux ld doesn't output the object file name, or anything useful at
|
||||
|
@ -1557,7 +1560,7 @@ bss_section () \
|
|||
`assemble_name' uses this. */
|
||||
|
||||
#define ASM_OUTPUT_LABELREF(FILE,NAME) \
|
||||
fprintf ((FILE), "%s", (NAME) + ((NAME)[0] == '@' ? 1 : 0))
|
||||
fprintf ((FILE), "%s", (NAME) + (FUNCTION_NAME_P (NAME) ? 1 : 0))
|
||||
|
||||
/* This is how to output an internal numbered label where
|
||||
PREFIX is the class of label and NUM is the number within the class. */
|
||||
|
|
Loading…
Reference in New Issue