aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormeissner <meissner@138bc75d-0d04-0410-961f-82ee72b054a4>2009-08-24 18:07:23 +0000
committermeissner <meissner@138bc75d-0d04-0410-961f-82ee72b054a4>2009-08-24 18:07:23 +0000
commitc74181b25ca2ba32f34a59a4f0114a3edf83ffc9 (patch)
treea51ff99267d59218d7cef73454c45addeddc5121
parent31e84bbd12d3d3fc29ca5c9f0c15d6ba2da3b6cd (diff)
Apply fixes for 40671, 41145 from mainline to branch
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/ibm/gcc-4_3-branch@151058 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog.ibm11
-rw-r--r--gcc/config/rs6000/rs6000.c20
2 files changed, 21 insertions, 10 deletions
diff --git a/gcc/ChangeLog.ibm b/gcc/ChangeLog.ibm
index f63bcc834a9..66946bb404d 100644
--- a/gcc/ChangeLog.ibm
+++ b/gcc/ChangeLog.ibm
@@ -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-07-28 Michael Meissner <meissner@linux.vnet.ibm.com>
* config/rs6000/rs6000.opt (-mvectorize-buitlins): Disable this by
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index ef4fb6fdd56..281dfc1af72 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -2174,7 +2174,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;
@@ -22611,7 +22611,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)
{
@@ -22629,14 +22637,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)
{