aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meissner <meissner@linux.vnet.ibm.com>2009-08-21 23:14:32 +0000
committerMichael Meissner <meissner@gcc.gnu.org>2009-08-21 23:14:32 +0000
commit30402573869ec1e624da994d10a9501e9b500d80 (patch)
tree076c4409198f73a9a102218e1c7015ddefcbf45a
parent5399093be27221fc1dace508233bb244fc28571c (diff)
downloadgcc-30402573869ec1e624da994d10a9501e9b500d80.zip
gcc-30402573869ec1e624da994d10a9501e9b500d80.tar.gz
gcc-30402573869ec1e624da994d10a9501e9b500d80.tar.bz2
Fix 40671, 41145
From-SVN: r151004
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/config/rs6000/rs6000.c20
2 files changed, 21 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a250853..38d4dcc 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index ab209a8..95f8ab5 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -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)
{