diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 754f14fe8797ad1c89f6c701dcc1f803481deb12..90d37de683d33bf9b2ece42e8512c3c37baa27f9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,8 @@
 2006-01-04  Jakub Jelinek  <jakub@redhat.com>
 
+	* config/i386/pmm_malloc.h (posix_memalign): If __cplusplus,
+	make the prototype extern "C" and add throw ().
+
 	PR target/25554
 	* config/i386/i386.md (testqi_ext_3): Ensure len is positive
 	and pos non-negative and pos + len <= 32.
diff --git a/gcc/config/i386/pmm_malloc.h b/gcc/config/i386/pmm_malloc.h
index ae09aad31c6e31d494262615635f2c0ed8967039..744ac6d41cc1453a19646a7af691bce2a9109857 100644
--- a/gcc/config/i386/pmm_malloc.h
+++ b/gcc/config/i386/pmm_malloc.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2006 Free Software Foundation, Inc.
 
    This file is part of GCC.
 
@@ -31,7 +31,11 @@
 
 /* We can't depend on <stdlib.h> since the prototype of posix_memalign
    may not be visible.  */
+#ifndef __cplusplus
 extern int posix_memalign (void **, size_t, size_t);
+#else
+extern "C" int posix_memalign (void **, size_t, size_t) throw ();
+#endif
 
 static __inline void *
 _mm_malloc (size_t size, size_t alignment)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 7dda6a144bd3fd7cf7c86cf70e0bdfb7a83bfd2f..1e33d4c9c634a8a461e805edc004a7ec8c7c65e4 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,7 @@
 2006-01-04  Jakub Jelinek  <jakub@redhat.com>
 
+	* g++.dg/other/i386-2.C: New test.
+
 	PR target/25554
 	* gcc.c-torture/compile/20051228-1.c: New test.
 
diff --git a/gcc/testsuite/g++.dg/other/i386-2.C b/gcc/testsuite/g++.dg/other/i386-2.C
new file mode 100644
index 0000000000000000000000000000000000000000..b988f9d93da184f2a9cb4a08b2451f3b6dde299e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/i386-2.C
@@ -0,0 +1,12 @@
+/* Test that {,x,e,p}mmintrin.h and mm_malloc.h are
+   usable with -pedantic-errors.  */
+/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
+/* { dg-options "-pedantic-errors -msse3" } */
+
+#include <mmintrin.h>
+#include <xmmintrin.h>
+#include <emmintrin.h>
+#include <pmmintrin.h>
+#include <mm_malloc.h>
+
+int dummy;