diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 026f8a95d5873bda720f4d65d6fd4516b052672a..15fd58eb4cf66022601c003b4d2a52627ac311b9 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,17 @@
+2009-09-08  Joseph Myers  <joseph@codesourcery.com>
+
+	* gcc.misc-tests/i386-prefetch.exp: Skip tests when multilib flags
+	contain -march.
+	* gcc.dg/tree-ssa/prefetch-7.c, gcc.target/i386/387-1.c,
+	gcc.target/i386/387-5.c, gcc.target/i386/cmov7.c,
+	gcc.target/i386/funcspec-1.c, gcc.target/i386/funcspec-8.c,
+	gcc.target/i386/gcc-have-sync-compare-and-swap-1.c,
+	gcc.target/i386/gcc-have-sync-compare-and-swap-2.c,
+	gcc.target/i386/isa-6.c, gcc.target/i386/lea.c,
+	gcc.target/i386/pentium4-not-mull.c, gcc.target/i386/sse-5.c,
+	gcc.target/i386/ssefn-1.c: Skip when multilib flags contain -march
+	options other than that used in dg-options.
+
 2009-09-07  Jakub Jelinek  <jakub@redhat.com>
 
 	PR rtl-optimization/41239
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/prefetch-7.c b/gcc/testsuite/gcc.dg/tree-ssa/prefetch-7.c
index 3024bed1b71b3834f7e433eb60269079922b33db..856df0a4a8fe28091a65e6674475e6329b974ce2 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/prefetch-7.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/prefetch-7.c
@@ -1,5 +1,6 @@
 /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
 /* { dg-require-effective-target ilp32 } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=athlon" } } */
 /* { dg-options "-O2 -fprefetch-loop-arrays -march=athlon -msse2 -mfpmath=sse --param simultaneous-prefetches=100 --param max-unrolled-insns=1 -fdump-tree-aprefetch-details -fdump-tree-optimized" } */
 
 #define K 1000000
diff --git a/gcc/testsuite/gcc.misc-tests/i386-prefetch.exp b/gcc/testsuite/gcc.misc-tests/i386-prefetch.exp
index e9909845c44abfba7370f06cd38600ab23e2aaf2..a9f767cde0a3b3edf18f430c72e4affe86b9e446 100644
--- a/gcc/testsuite/gcc.misc-tests/i386-prefetch.exp
+++ b/gcc/testsuite/gcc.misc-tests/i386-prefetch.exp
@@ -90,6 +90,13 @@ load_lib torture-options.exp
 dg-init
 torture-init
 
+if { [board_info target exists multilib_flags]
+     && [string match "* -march=*" " [board_info target multilib_flags] "] } {
+    # Multilib flags come after the -march flags we pass and override
+    # them, so skip these tests when such flags are passed.
+    return
+}
+
 set-torture-options $PREFETCH_NONE
 gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/i386-pf-none-*.c]] ""
 
diff --git a/gcc/testsuite/gcc.target/i386/387-1.c b/gcc/testsuite/gcc.target/i386/387-1.c
index 2b3ca0b06103ecf15377d2a3f8dd67945eb51d52..83af71f9647b141329284e5676e85a5813507999 100644
--- a/gcc/testsuite/gcc.target/i386/387-1.c
+++ b/gcc/testsuite/gcc.target/i386/387-1.c
@@ -1,6 +1,7 @@
 /* Verify that -mno-fancy-math-387 works.  */
 /* { dg-do compile } */
 /* { dg-require-effective-target ilp32 } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i386" } } */
 /* { dg-options "-O -ffast-math -mfpmath=387 -mno-fancy-math-387 -march=i386" } */
 /* { dg-final { scan-assembler "call\t(.*)sin" } } */
 /* { dg-final { scan-assembler "call\t(.*)cos" } } */
diff --git a/gcc/testsuite/gcc.target/i386/387-5.c b/gcc/testsuite/gcc.target/i386/387-5.c
index 0a050081780f38c3907c23b812f08209786903c8..027799a878ae4e8566824247e33c94fb7cc86f34 100644
--- a/gcc/testsuite/gcc.target/i386/387-5.c
+++ b/gcc/testsuite/gcc.target/i386/387-5.c
@@ -1,6 +1,7 @@
 /* Verify that -mno-fancy-math-387 works.  */
 /* { dg-do compile } */
 /* { dg-require-effective-target ilp32 } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i386" } } */
 /* { dg-options "-O -ffast-math -mfpmath=387 -mno-fancy-math-387 -march=i386" } */
 /* { dg-final { scan-assembler "call\t(.*)atan" } } */
 /* { dg-final { scan-assembler "call\t(.*)log1p" } } */
diff --git a/gcc/testsuite/gcc.target/i386/cmov7.c b/gcc/testsuite/gcc.target/i386/cmov7.c
index 31b4816543227afc48f75830726c6d8133671032..433bf57f8e74ce197dea8dbe3b244f5fbaa4657d 100644
--- a/gcc/testsuite/gcc.target/i386/cmov7.c
+++ b/gcc/testsuite/gcc.target/i386/cmov7.c
@@ -1,6 +1,7 @@
 /* PR middle-end/33187 */
 
 /* { dg-do compile } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=k8" } } */
 /* { dg-options "-O2 -ffast-math -march=k8 -mbranch-cost=5 -mfpmath=387" } */
 /* { dg-final { scan-assembler "fcmov" } } */
 
diff --git a/gcc/testsuite/gcc.target/i386/funcspec-1.c b/gcc/testsuite/gcc.target/i386/funcspec-1.c
index 1416c75f357ef94da8bb928ab2b3eb3adff0055c..52420ec93e9589df578f6a6675bf5009d426464a 100644
--- a/gcc/testsuite/gcc.target/i386/funcspec-1.c
+++ b/gcc/testsuite/gcc.target/i386/funcspec-1.c
@@ -3,6 +3,7 @@
    for a function that doesn't use attribute((option)).  */
 /* { dg-do compile } */
 /* { dg-require-effective-target ilp32 } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i386" } } */
 /* { dg-options "-O3 -ftree-vectorize -march=i386" } */
 /* { dg-final { scan-assembler "addps\[ \t\]" } } */
 /* { dg-final { scan-assembler "fsubs\[ \t\]" } } */
diff --git a/gcc/testsuite/gcc.target/i386/funcspec-8.c b/gcc/testsuite/gcc.target/i386/funcspec-8.c
index 2b8bb6f4af606c76098043400941e7ee22489627..c370733a01bb36f12fd20e49af47ebbe02206f91 100644
--- a/gcc/testsuite/gcc.target/i386/funcspec-8.c
+++ b/gcc/testsuite/gcc.target/i386/funcspec-8.c
@@ -1,6 +1,7 @@
 /* Test whether using target specific options, we can use the x86 builtin
    functions in functions with the appropriate function specific options.  */
 /* { dg-do compile } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=k8" } } */
 /* { dg-options "-O2 -march=k8 -mfpmath=sse" } */
 
 typedef float     __m128  __attribute__ ((__vector_size__ (16), __may_alias__));
diff --git a/gcc/testsuite/gcc.target/i386/gcc-have-sync-compare-and-swap-1.c b/gcc/testsuite/gcc.target/i386/gcc-have-sync-compare-and-swap-1.c
index 598f2ddbc31fec59577667d6ce1aa6b5dc6c8417..d20a71760380c382802b99dd4196bede4cffc689 100644
--- a/gcc/testsuite/gcc.target/i386/gcc-have-sync-compare-and-swap-1.c
+++ b/gcc/testsuite/gcc.target/i386/gcc-have-sync-compare-and-swap-1.c
@@ -1,5 +1,6 @@
 /* { dg-do preprocess } */
 /* { dg-require-effective-target ilp32 } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i386" } } */
 /* { dg-options "-march=i386" } */
 
 #ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1
diff --git a/gcc/testsuite/gcc.target/i386/gcc-have-sync-compare-and-swap-2.c b/gcc/testsuite/gcc.target/i386/gcc-have-sync-compare-and-swap-2.c
index fa6e7c654efef68dd45d900204f5f12a07834acc..01a49b64a837aa171655cade7bb05a87ba58c5c9 100644
--- a/gcc/testsuite/gcc.target/i386/gcc-have-sync-compare-and-swap-2.c
+++ b/gcc/testsuite/gcc.target/i386/gcc-have-sync-compare-and-swap-2.c
@@ -1,5 +1,6 @@
 /* { dg-do preprocess } */
 /* { dg-require-effective-target ilp32 } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i486" } } */
 /* { dg-options "-march=i486" } */
 
 #ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1
diff --git a/gcc/testsuite/gcc.target/i386/isa-6.c b/gcc/testsuite/gcc.target/i386/isa-6.c
index ec1fbeaa4d43e38e6120e1d1b024b15b8f18ff8f..7f01a884ea6dd4cdf47425f3efd251bc0f78cebf 100644
--- a/gcc/testsuite/gcc.target/i386/isa-6.c
+++ b/gcc/testsuite/gcc.target/i386/isa-6.c
@@ -1,4 +1,5 @@
 /* { dg-do run } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=amdfam10" } } */
 /* { dg-options "-march=amdfam10 -mno-sse4" } */
 
 extern void abort (void);
diff --git a/gcc/testsuite/gcc.target/i386/lea.c b/gcc/testsuite/gcc.target/i386/lea.c
index afbbfa4fbc0848d2acbff7135a7deee21e16d334..f8f967e00f15330e3ad5128a5c98d120b8570933 100644
--- a/gcc/testsuite/gcc.target/i386/lea.c
+++ b/gcc/testsuite/gcc.target/i386/lea.c
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target ilp32 } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=pentiumpro" } } */
 /* { dg-options "-O2 -march=pentiumpro" } */
 /* { dg-final { scan-assembler "leal" } } */
 typedef struct {
diff --git a/gcc/testsuite/gcc.target/i386/pentium4-not-mull.c b/gcc/testsuite/gcc.target/i386/pentium4-not-mull.c
index be48185a86c7335408ceb0086744bfcd5b713bf2..a846aae61b00cfeb5d1a47569e81c71151cb5894 100644
--- a/gcc/testsuite/gcc.target/i386/pentium4-not-mull.c
+++ b/gcc/testsuite/gcc.target/i386/pentium4-not-mull.c
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target ilp32 } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=pentium4" } } */
 /* { dg-options "-O2 -march=pentium4" } */
 /* { dg-final { scan-assembler-not "imull" } } */
 
diff --git a/gcc/testsuite/gcc.target/i386/sse-5.c b/gcc/testsuite/gcc.target/i386/sse-5.c
index c3ed8f2672b3c6ee4aab512739dff0c641cdb1e9..bdbd5012e48989efe3740eff34af2e97f28abdc1 100644
--- a/gcc/testsuite/gcc.target/i386/sse-5.c
+++ b/gcc/testsuite/gcc.target/i386/sse-5.c
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target ilp32 } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i386" } } */
 /* { dg-options "-Winline -O2 -march=i386" } */
 
 typedef double v2df __attribute__ ((vector_size (16)));
diff --git a/gcc/testsuite/gcc.target/i386/ssefn-1.c b/gcc/testsuite/gcc.target/i386/ssefn-1.c
index 0279a553346a23c50721e4be7303617ad57aa3f3..bea6cb2bf0bee583a51dcfcf62b3754d49a9fed3 100644
--- a/gcc/testsuite/gcc.target/i386/ssefn-1.c
+++ b/gcc/testsuite/gcc.target/i386/ssefn-1.c
@@ -7,6 +7,7 @@
 /* { dg-final { scan-assembler "mulss" } } */
 /* { dg-final { scan-assembler-not "movsd" } } */
 /* { dg-final { scan-assembler-not "mulsd" } } */
+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i386" } } */
 /* { dg-options "-O2 -march=i386 -msse -mfpmath=sse -fno-inline" } */
 
 static float xs (void)