Commit c2a47e48 by Richard Kenner

*** empty log message ***

From-SVN: r1045
parent 3ad69266
......@@ -1406,7 +1406,7 @@ output_epilog (file, size)
from the function start. */
if (*fname == '*')
++fname;
fprintf (file, "L..tbtab_");
fprintf (file, "LT..");
ASM_OUTPUT_LABEL (file, fname);
/* The .tbtab psuedo-op can only be used for the first eight
......@@ -1534,7 +1534,7 @@ output_epilog (file, size)
fprintf (file, "\t.long %d\n", parm_info);
/* Offset from start of code to tb table. */
fprintf (file, "\t.long L..tbtab_");
fprintf (file, "\t.long LT..");
RS6000_OUTPUT_BASENAME (file, fname);
fprintf (file, "-.");
RS6000_OUTPUT_BASENAME (file, fname);
......@@ -1621,9 +1621,9 @@ output_toc (file, x, labelno)
RS6000_OUTPUT_BASENAME (file, name);
if (offset < 0)
fprintf (file, "P.N.%d", - offset);
fprintf (file, ".N%d", - offset);
else if (offset)
fprintf (file, ".P.%d", offset);
fprintf (file, ".P%d", offset);
fprintf (file, "[TC],");
output_addr_const (file, x);
......@@ -1766,7 +1766,7 @@ output_function_profiler (file, labelno)
/* Set up a TOC entry for the profiler label. */
toc_section ();
fprintf (file, "LPTOC..%d:\n\t.tc\tLP..%d[TC], LP..%d\n",
fprintf (file, "LPC..%d:\n\t.tc\tLP..%d[TC],LP..%d\n",
labelno, labelno, labelno);
text_section ();
......@@ -1787,7 +1787,7 @@ output_function_profiler (file, labelno)
/* Load location address into r3, and call mcount. */
fprintf (file, "\tl 3,LPTOC..%d(2)\n\tbl .mcount\n", labelno);
fprintf (file, "\tl 3,LPC..%d(2)\n\tbl .mcount\n", labelno);
/* Restore parameter registers. */
......
......@@ -1437,18 +1437,7 @@ toc_section () \
RS6000_OUTPUT_BASENAME (FILE, NAME); \
fprintf (FILE, ":\n"); \
if (write_symbols == XCOFF_DEBUG) \
{ \
dbxout_symbol (DECL, 0); \
fprintf (FILE, "\t.function ."); \
RS6000_OUTPUT_BASENAME (FILE, NAME); \
fprintf (FILE, ",."); \
RS6000_OUTPUT_BASENAME (FILE, NAME); \
fprintf (FILE, ",16,044,L..end_"); \
RS6000_OUTPUT_BASENAME (FILE, NAME); \
fprintf (FILE, "-."); \
RS6000_OUTPUT_BASENAME (FILE, NAME); \
fprintf (FILE, "\n"); \
} \
xcoffout_declare_function (FILE, DECL, NAME); \
}
/* Return non-zero if this entry is to be written into the constant pool
......
......@@ -6112,11 +6112,16 @@ cse_insn (insn, in_libcall_block)
sets[i].rtl = 0;
}
/* No further processing for this assignment if destination
is volatile. */
/* If destination is volatile, invalidate it and then do no further
processing for this assignment. */
else if (do_not_record)
sets[i].rtl = 0;
{
if (GET_CODE (dest) == REG || GET_CODE (dest) == SUBREG
|| GET_CODE (dest) == MEM)
invalidate (dest);
sets[i].rtl = 0;
}
if (sets[i].rtl != 0 && dest != SET_DEST (sets[i].rtl))
sets[i].dest_hash_code = HASH (SET_DEST (sets[i].rtl), mode);
......
......@@ -2254,6 +2254,14 @@ expand_divmod (rem_flag, code, mode, op0, op1, target, unsignedp)
op1 = convert_to_mode (compute_mode, op1, unsignedp);
}
/* If we are computing the remainder and one of the operands is a volatile
MEM, copy it into a register. */
if (rem_flag && GET_CODE (op0) == MEM && MEM_VOLATILE_P (op0))
adjusted_op0 = op0 = force_reg (compute_mode, op0), can_clobber_op0 = 1;
if (rem_flag && GET_CODE (op1) == MEM && MEM_VOLATILE_P (op1))
op1 = force_reg (compute_mode, op1);
if (target == 0 || GET_MODE (target) != compute_mode)
target = gen_reg_rtx (compute_mode);
......
......@@ -399,6 +399,33 @@ xcoffout_end_block (file, line, n)
ASM_OUTPUT_LBE (file, line, n);
}
/* Called at beginning of function (before prologue).
Declare function as needed for debugging. */
void
xcoffout_declare_function (file, decl, name)
FILE *file;
tree decl;
char *name;
{
char *n = name;
int i;
for (i = 0; name[i]; ++i)
{
if (name[i] == '[')
{
n = alloca (i + 1);
strncpy (n, name, i);
n[i] = '\0';
break;
}
}
dbxout_symbol (decl, 0);
fprintf (file, "\t.function .%s,.%s,16,044,FE..%s-.%s\n", n, n, n, n);
}
/* Called at beginning of function body (after prologue).
Record the function's starting line number, so we can output
relative line numbers for the other lines.
......@@ -438,7 +465,7 @@ xcoffout_end_epilogue (file)
char *fname = XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0);
if (*fname == '*')
++fname;
fprintf (file, "L..end_");
fprintf (file, "FE..");
ASM_OUTPUT_LABEL (file, fname);
}
#endif /* XCOFF_DEBUGGING_INFO */
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