aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJie Zhang <jie@codesourcery.com>2010-04-19 10:02:52 +0000
committerJie Zhang <jiez@gcc.gnu.org>2010-04-19 10:02:52 +0000
commit8d9b7be5f33baf9ca297dd2e65a18890140d874a (patch)
treef360ca302ff7c15dd21a43595f424c4a18467b7f /gcc
parentd38f6bc03eaaad33870a9bdb802c4568890ced65 (diff)
downloadgcc-8d9b7be5f33baf9ca297dd2e65a18890140d874a.zip
gcc-8d9b7be5f33baf9ca297dd2e65a18890140d874a.tar.gz
gcc-8d9b7be5f33baf9ca297dd2e65a18890140d874a.tar.bz2
re PR target/43662 (ICE in insert_save with ms_abi attribute)
PR target/43662 * reginfo.c (reinit_regs): Set caller_save_initialized_p to false. testsuite/ PR target/43662 * gcc.target/i386/pr43662.c: New test. From-SVN: r158509
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/reginfo.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/i386/pr43662.c24
4 files changed, 37 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 98c8004..23f76a3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2010-04-19 Jie Zhang <jie@codesourcery.com>
+
+ PR target/43662
+ * reginfo.c (reinit_regs): Set caller_save_initialized_p
+ to false.
+
2010-04-19 Ira Rosen <irar@il.ibm.com>
PR tree-optimization/37027
diff --git a/gcc/reginfo.c b/gcc/reginfo.c
index ee6c7ee..bf43d70 100644
--- a/gcc/reginfo.c
+++ b/gcc/reginfo.c
@@ -666,6 +666,8 @@ void
reinit_regs (void)
{
init_regs ();
+ /* caller_save needs to be re-initialized. */
+ caller_save_initialized_p = false;
ira_init ();
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 8215f83..01a2602 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2010-04-19 Jie Zhang <jie@codesourcery.com>
+
+ PR target/43662
+ * gcc.target/i386/pr43662.c: New test.
+
2010-04-19 Dodji Seketeli <dodji@redhat.com>
PR c++/43704
diff --git a/gcc/testsuite/gcc.target/i386/pr43662.c b/gcc/testsuite/gcc.target/i386/pr43662.c
new file mode 100644
index 0000000..246c8aa
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr43662.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target lp64 } */
+/* { dg-options "-O2" } */
+
+void __attribute__ ((ms_abi)) foo (void)
+{
+}
+
+typedef struct _IAVIStreamImpl
+{
+ int sInfo;
+ int has;
+} IAVIStreamImpl;
+
+extern int __attribute__ ((ms_abi)) aso (void *);
+extern int sre (void *);
+
+int AVIFILE_OpenCompressor (IAVIStreamImpl *This)
+{
+ if (This->has != 0)
+ aso (&This->has);
+ sre (&This->sInfo);
+ return 0;
+}