aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorChris Demetriou <cgd@broadcom.com>2003-03-14 15:53:48 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2003-03-14 15:53:48 +0000
commita0a89ed0afd227148e44cade7c4cf2220d358461 (patch)
tree143a87d994e2c1187f3241f5519f562df6bcd787 /gcc
parent8d3f82aa3ae7dc4a11f94bd191e56a63faa06ae8 (diff)
downloadgcc-a0a89ed0afd227148e44cade7c4cf2220d358461.zip
gcc-a0a89ed0afd227148e44cade7c4cf2220d358461.tar.gz
gcc-a0a89ed0afd227148e44cade7c4cf2220d358461.tar.bz2
mips.h (FUNCTION_PROFILER): _mcount() doesn't pop 2 words in new abis.
* config/mips/mips.h (FUNCTION_PROFILER): _mcount() doesn't pop 2 words in new abis. From-SVN: r64364
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/mips/mips.h15
2 files changed, 14 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3069374..75a3131 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2003-03-14 Chris Demetriou <cgd@broadcom.com>, Alexandre Oliva <aoliva@redhat.com>
+
+ * config/mips/mips.h (FUNCTION_PROFILER): _mcount() doesn't pop 2
+ words in new abis.
+
2003-03-14 Eric Botcazou <ebotcazou@libertysurf.fr>
PR optimization/8396
diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h
index 2064ace..9c6fefd 100644
--- a/gcc/config/mips/mips.h
+++ b/gcc/config/mips/mips.h
@@ -2921,12 +2921,15 @@ typedef struct mips_args {
fprintf (FILE, "\t.set\tnoat\n"); \
fprintf (FILE, "\tmove\t%s,%s\t\t# save current return address\n", \
reg_names[GP_REG_FIRST + 1], reg_names[GP_REG_FIRST + 31]); \
- fprintf (FILE, \
- "\t%s\t%s,%s,%d\t\t# _mcount pops 2 words from stack\n", \
- TARGET_64BIT ? "dsubu" : "subu", \
- reg_names[STACK_POINTER_REGNUM], \
- reg_names[STACK_POINTER_REGNUM], \
- Pmode == DImode ? 16 : 8); \
+ if (mips_abi != ABI_N32 && mips_abi != ABI_64) \
+ { \
+ fprintf (FILE, \
+ "\t%s\t%s,%s,%d\t\t# _mcount pops 2 words from stack\n", \
+ TARGET_64BIT ? "dsubu" : "subu", \
+ reg_names[STACK_POINTER_REGNUM], \
+ reg_names[STACK_POINTER_REGNUM], \
+ Pmode == DImode ? 16 : 8); \
+ } \
fprintf (FILE, "\tjal\t_mcount\n"); \
fprintf (FILE, "\t.set\tat\n"); \
}