Commit 4b69d2a3 by Richard Stallman

*** empty log message ***

From-SVN: r634
parent 2525c782
...@@ -438,7 +438,7 @@ enum reg_class { NO_REGS, GENERAL_REGS, FP_REGS, ALL_REGS, LIM_REG_CLASSES }; ...@@ -438,7 +438,7 @@ enum reg_class { NO_REGS, GENERAL_REGS, FP_REGS, ALL_REGS, LIM_REG_CLASSES };
40, 41, 42, 43, 44, 45, 46, 47, \ 40, 41, 42, 43, 44, 45, 46, 47, \
48, 49, 50, 51, 52, 53, 54, 55, \ 48, 49, 50, 51, 52, 53, 54, 55, \
56, 57, 58, 59, 60, 61, 62, 63, \ 56, 57, 58, 59, 60, 61, 62, 63, \
1, 4, 5, 6, 7, 0, 14, 30}; 1, 4, 5, 6, 7, 0, 14, 30}
/* This is the order in which to allocate registers for /* This is the order in which to allocate registers for
leaf functions. If all registers can fit in the "i" registers, leaf functions. If all registers can fit in the "i" registers,
...@@ -451,7 +451,7 @@ enum reg_class { NO_REGS, GENERAL_REGS, FP_REGS, ALL_REGS, LIM_REG_CLASSES }; ...@@ -451,7 +451,7 @@ enum reg_class { NO_REGS, GENERAL_REGS, FP_REGS, ALL_REGS, LIM_REG_CLASSES };
40, 41, 42, 43, 44, 45, 46, 47, \ 40, 41, 42, 43, 44, 45, 46, 47, \
48, 49, 50, 51, 52, 53, 54, 55, \ 48, 49, 50, 51, 52, 53, 54, 55, \
56, 57, 58, 59, 60, 61, 62, 63, \ 56, 57, 58, 59, 60, 61, 62, 63, \
1, 4, 5, 6, 7, 0, 14, 30, 31}; 1, 4, 5, 6, 7, 0, 14, 30, 31}
#define ORDER_REGS_FOR_LOCAL_ALLOC order_regs_for_local_alloc () #define ORDER_REGS_FOR_LOCAL_ALLOC order_regs_for_local_alloc ()
...@@ -463,7 +463,7 @@ enum reg_class { NO_REGS, GENERAL_REGS, FP_REGS, ALL_REGS, LIM_REG_CLASSES }; ...@@ -463,7 +463,7 @@ enum reg_class { NO_REGS, GENERAL_REGS, FP_REGS, ALL_REGS, LIM_REG_CLASSES };
1, 1, 1, 1, 1, 1, 1, 1, \ 1, 1, 1, 1, 1, 1, 1, 1, \
1, 1, 1, 1, 1, 1, 1, 1, \ 1, 1, 1, 1, 1, 1, 1, 1, \
1, 1, 1, 1, 1, 1, 1, 1, \ 1, 1, 1, 1, 1, 1, 1, 1, \
1, 1, 1, 1, 1, 1, 1, 1}; 1, 1, 1, 1, 1, 1, 1, 1}
extern char leaf_reg_remap[]; extern char leaf_reg_remap[];
#define LEAF_REG_REMAP(REGNO) (leaf_reg_remap[REGNO]) #define LEAF_REG_REMAP(REGNO) (leaf_reg_remap[REGNO])
...@@ -765,20 +765,23 @@ extern struct rtx_def *sparc_compare_op0, *sparc_compare_op1; ...@@ -765,20 +765,23 @@ extern struct rtx_def *sparc_compare_op0, *sparc_compare_op1;
extern struct rtx_def *gen_compare_reg (); extern struct rtx_def *gen_compare_reg ();
/* Generate the special assembly code needed to tell the assembler whatever
it might need to know about the return value of a function.
For Sparc assemblers, we need to output a .proc pseudo-op which conveys
information to the assembler relating to peephole optimization (done in
the assembler). */
#define ASM_DECLARE_RESULT(FILE, RESULT) \
fprintf ((FILE), "\t.proc\t0%o\n", sparc_type_code (TREE_TYPE (RESULT)))
/* Output the label for a function definition. */ /* Output the label for a function definition. */
#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \ #define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \
{ \ do { \
extern tree double_type_node, float_type_node; \ ASM_DECLARE_RESULT (FILE, DECL_RESULT (DECL)); \
if (TREE_TYPE (DECL) == float_type_node) \ ASM_OUTPUT_LABEL (FILE, NAME); \
fprintf (FILE, "\t.proc 6\n"); \ } while (0)
else if (TREE_TYPE (DECL) == double_type_node) \
fprintf (FILE, "\t.proc 7\n"); \
else if (TREE_TYPE (DECL) == void_type_node) \
fprintf (FILE, "\t.proc 0\n"); \
else fprintf (FILE, "\t.proc 1\n"); \
ASM_OUTPUT_LABEL (FILE, NAME); \
}
/* Two views of the size of the current frame. */ /* Two views of the size of the current frame. */
extern int actual_fsize; extern int actual_fsize;
...@@ -1500,13 +1503,25 @@ extern struct rtx_def *legitimize_pic_address (); ...@@ -1500,13 +1503,25 @@ extern struct rtx_def *legitimize_pic_address ();
/* This is how to output an element of a case-vector that is absolute. */ /* This is how to output an element of a case-vector that is absolute. */
#define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) \ #define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) \
fprintf (FILE, "\t.word L%d\n", VALUE) do { \
char label[30]; \
ASM_GENERATE_INTERNAL_LABEL (label, "L", VALUE); \
fprintf (FILE, "\t.word\t"); \
assemble_name (FILE, label); \
fprintf (FILE, "\n"); \
} while (0)
/* This is how to output an element of a case-vector that is relative. /* This is how to output an element of a case-vector that is relative.
(SPARC uses such vectors only when generating PIC.) */ (SPARC uses such vectors only when generating PIC.) */
#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, VALUE, REL) \ #define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, VALUE, REL) \
fprintf (FILE, "\t.word L%d-1b\n", VALUE) do { \
char label[30]; \
ASM_GENERATE_INTERNAL_LABEL (label, "L", VALUE); \
fprintf (FILE, "\t.word\t"); \
assemble_name (FILE, label); \
fprintf (FILE, "-1b\n"); \
} while (0)
/* This is how to output an assembler line /* This is how to output an assembler line
that says to advance the location counter that says to advance the location counter
......
...@@ -281,20 +281,13 @@ do { \ ...@@ -281,20 +281,13 @@ do { \
/* This is how to output an internal numbered label where /* This is how to output an internal numbered label where
PREFIX is the class of label and NUM is the number within the class. PREFIX is the class of label and NUM is the number within the class.
If the NUM argument is negative, we don't use it when generating the
label.
For most svr4 systems, the convention is that any symbol which begins For most svr4 systems, the convention is that any symbol which begins
with a period is not put into the linker symbol table by the assembler. with a period is not put into the linker symbol table by the assembler. */
*/
#undef ASM_OUTPUT_INTERNAL_LABEL #undef ASM_OUTPUT_INTERNAL_LABEL
#define ASM_OUTPUT_INTERNAL_LABEL(FILE, PREFIX, NUM) \ #define ASM_OUTPUT_INTERNAL_LABEL(FILE, PREFIX, NUM) \
do { \ do { \
if ((int) (NUM) >= 0) \ ??? fprintf (FILE, ".%s%d:\n", PREFIX, NUM); \
fprintf (FILE, ".%s%d:\n", PREFIX, NUM); \
else \
fprintf (FILE, ".%s:\n", PREFIX); \
} while (0) } while (0)
/* This is how to store into the string LABEL /* This is how to store into the string LABEL
...@@ -302,20 +295,13 @@ do { \ ...@@ -302,20 +295,13 @@ do { \
PREFIX is the class of label and NUM is the number within the class. PREFIX is the class of label and NUM is the number within the class.
This is suitable for output with `assemble_name'. This is suitable for output with `assemble_name'.
If the NUM argument is negative, we don't use it when generating the
label.
For most svr4 systems, the convention is that any symbol which begins For most svr4 systems, the convention is that any symbol which begins
with a period is not put into the linker symbol table by the assembler. with a period is not put into the linker symbol table by the assembler. */
*/
#undef ASM_GENERATE_INTERNAL_LABEL #undef ASM_GENERATE_INTERNAL_LABEL
#define ASM_GENERATE_INTERNAL_LABEL(LABEL, PREFIX, NUM) \ #define ASM_GENERATE_INTERNAL_LABEL(LABEL, PREFIX, NUM) \
do { \ do { \
if ((int) (NUM) >= 0) \ sprintf (LABEL, "*.%s%d", PREFIX, NUM); \
sprintf (LABEL, "*.%s%d", PREFIX, NUM); \
else \
sprintf (LABEL, "*.%s", PREFIX); \
} while (0) } while (0)
/* The standard SVR4 assembler seems to require that certain builtin /* The standard SVR4 assembler seems to require that certain builtin
...@@ -345,13 +331,15 @@ do { \ ...@@ -345,13 +331,15 @@ do { \
the linker seems to want the alignment of data objects the linker seems to want the alignment of data objects
to depend on their types. We do exactly that here. */ to depend on their types. We do exactly that here. */
#define BSS_ASM_OP ".bss" #define LOCAL_ASM_OP ".local"
#undef ASM_OUTPUT_ALIGNED_LOCAL #undef ASM_OUTPUT_ALIGNED_LOCAL
#define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN) \ #define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN) \
do { \ do { \
fprintf ((FILE), "\t%s\t%s,%u,%u\n", \ fprintf ((FILE), "\t%s\t", LOCAL_ASM_OP); \
BSS_ASM_OP, (NAME), (SIZE), (ALIGN) / BITS_PER_UNIT); \ assemble_name ((FILE), (NAME)); \
fprintf ((FILE), "\n"); \
ASM_OUTPUT_ALIGNED_COMMON (FILE, NAME, SIZE, ALIGN); \
} while (0) } while (0)
/* This is the pseudo-op used to generate a 32-bit word of data with a /* This is the pseudo-op used to generate a 32-bit word of data with a
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment