diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 3bbc46ac0c76d625b211c67ef770ce1b804652d9..2400d1dd16cf64447d00319c79b11f25e9359034 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,8 @@
 2004-08-12  Janis Johnson  <janis187@us.ibm.com>
 
+	* g++.dg/ext/altivec-2.C: Check for hardware support before
+	executing any VMX instructions.
+
 	* gcc.dg/vmx/ops-long-2.c: Add dg-error directives.
 
 2004-08-12  Jakub Jelinek  <jakub@redhat.com>
diff --git a/gcc/testsuite/g++.dg/ext/altivec-2.C b/gcc/testsuite/g++.dg/ext/altivec-2.C
index c162291c68182524d85e2885407df97607913f7e..82d2078dd83a7e43ada1b846c549884761396ca0 100644
--- a/gcc/testsuite/g++.dg/ext/altivec-2.C
+++ b/gcc/testsuite/g++.dg/ext/altivec-2.C
@@ -8,15 +8,13 @@
 #include <altivec.h>
 #include "altivec_check.h"
 
-int main (int argc, const char * argv[])
+int main1 (void)
 {
   int i;
   const float cf = 1.0;
   vector float v;
   const vector float cv = (vector float){1.0, 2.0, 3.0, 4.0};
 
-  altivec_check ();
-
   vec_dst(&cv, i, 0);
   v = vec_ld(0, &cv);	
   v = vec_lde(0, &cf);
@@ -24,3 +22,9 @@ int main (int argc, const char * argv[])
   
   return 0;
 }
+
+int main (int argc, const char * argv[])
+{
+  altivec_check ();
+  return main1 ();
+}