aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>2010-04-08 14:48:46 +0000
committerRainer Orth <ro@gcc.gnu.org>2010-04-08 14:48:46 +0000
commit07c60ef701e0fe0c65f0186bd521ee83b6c24c3c (patch)
tree2c8a2c35bebf2ab5882be552d4f7a157dba3d12d /gcc
parent3e2f637e5c72b26c1d102f15cdc2f08b5d505401 (diff)
downloadgcc-07c60ef701e0fe0c65f0186bd521ee83b6c24c3c.zip
gcc-07c60ef701e0fe0c65f0186bd521ee83b6c24c3c.tar.gz
gcc-07c60ef701e0fe0c65f0186bd521ee83b6c24c3c.tar.bz2
re PR target/43643 (gcc -m64 -pg corrupts %rdx / %rcx register)
gcc: PR target/43643 * config/i386/gmon-sol2.c [__x86_64__]: Properly restore %rcx. gcc/testsuite: PR target/43643 * gcc.dg/pr43643.c: New test. From-SVN: r158130
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/i386/gmon-sol2.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr43643.c24
4 files changed, 35 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e23b3fb..0d9eb6d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2010-04-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+ PR target/43643
+ * config/i386/gmon-sol2.c [__x86_64__]: Properly restore %rcx.
+
+2010-04-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
* doc/install.texi (Specific, i?86-*-solaris2.10): Fix grammar.
(Specific, *-*-solaris2*): Likewise.
Don't prefer Sun as over GNU as.
diff --git a/gcc/config/i386/gmon-sol2.c b/gcc/config/i386/gmon-sol2.c
index e0923a0..fb813a1 100644
--- a/gcc/config/i386/gmon-sol2.c
+++ b/gcc/config/i386/gmon-sol2.c
@@ -275,7 +275,7 @@ asm(".globl _mcount\n"
"\tmovq\t0x20(%rsp),%rdi\n"
"\tmovq\t0x18(%rsp),%rsi\n"
"\tmovq\t0x10(%rsp),%rdx\n"
- "\tmovq\t0x08(%rsp),%rdx\n"
+ "\tmovq\t0x08(%rsp),%rcx\n"
"\tmovq\t(%rsp),%rax\n"
"\taddq\t$0x38,%rsp\n"
"\tretq\n"
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d46f375..738ee29 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2010-04-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR target/43643
+ * gcc.dg/pr43643.c: New test.
+
2010-04-08 Tobias Burnus <burnus@net-b.de>
* gfortran.dg/iso_fortran_env_6.f90: Add more checks.
diff --git a/gcc/testsuite/gcc.dg/pr43643.c b/gcc/testsuite/gcc.dg/pr43643.c
new file mode 100644
index 0000000..7fbbfc2
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr43643.c
@@ -0,0 +1,24 @@
+/* Contributed by Jürgen Keil <jrgn.keil@googlemail.com> */
+
+/* { dg-do run } */
+/* { dg-require-profiling "-pg" } */
+/* { dg-options "-O2 -pg" } */
+
+extern char *strdup (const char *);
+
+void
+func(char *a, char *b, char *c)
+{
+ strdup(a);
+ strdup(b);
+ strdup(c);
+}
+
+int
+main(void)
+{
+ func("a", "b", "c");
+ return 0;
+}
+
+/* { dg-final { cleanup-profile-file } } */