Fix 40671, 41145
authorMichael Meissner <meissner@linux.vnet.ibm.com>
Fri, 21 Aug 2009 23:14:32 +0000 (23:14 +0000)
committerMichael Meissner <meissner@gcc.gnu.org>
Fri, 21 Aug 2009 23:14:32 +0000 (23:14 +0000)
From-SVN: r151004

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index a250853..38d4dcc 100644 (file)
@@ -1,3 +1,14 @@
+2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
+
+       PR target/40671
+       * config/rs6000/rs6000.c (rs6000_override_options): Use
+       TARGET_64BIT instead of TARGET_POWERPC64 to set the size of
+       pointers.
+
+       PR target/41145
+       * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
+       reporting of vector + decimal/boolean/complex, 
+
 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
 
        * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
index ab209a8..95f8ab5 100644 (file)
@@ -2198,7 +2198,7 @@ rs6000_override_options (const char *default_cpu)
   };
 
   /* Set the pointer size.  */
-  if (TARGET_POWERPC64)
+  if (TARGET_64BIT)
     {
       rs6000_pmode = (int)DImode;
       rs6000_pointer_size = 64;
@@ -22827,7 +22827,15 @@ rs6000_handle_altivec_attribute (tree *node,
   mode = TYPE_MODE (type);
 
   /* Check for invalid AltiVec type qualifiers.  */
-  if (!TARGET_VSX)
+  if (type == long_double_type_node)
+    error ("use of %<long double%> in AltiVec types is invalid");
+  else if (type == boolean_type_node)
+    error ("use of boolean types in AltiVec types is invalid");
+  else if (TREE_CODE (type) == COMPLEX_TYPE)
+    error ("use of %<complex%> in AltiVec types is invalid");
+  else if (DECIMAL_FLOAT_MODE_P (mode))
+    error ("use of decimal floating point types in AltiVec types is invalid");
+  else if (!TARGET_VSX)
     {
       if (type == long_unsigned_type_node || type == long_integer_type_node)
        {
@@ -22845,14 +22853,6 @@ rs6000_handle_altivec_attribute (tree *node,
       else if (type == double_type_node)
        error ("use of %<double%> in AltiVec types is invalid without -mvsx");
     }
-  else if (type == long_double_type_node)
-    error ("use of %<long double%> in AltiVec types is invalid");
-  else if (type == boolean_type_node)
-    error ("use of boolean types in AltiVec types is invalid");
-  else if (TREE_CODE (type) == COMPLEX_TYPE)
-    error ("use of %<complex%> in AltiVec types is invalid");
-  else if (DECIMAL_FLOAT_MODE_P (mode))
-    error ("use of decimal floating point types in AltiVec types is invalid");
 
   switch (altivec_type)
     {