summaryrefslogtreecommitdiff
path: root/gcc/tree-cfg.c
diff options
context:
space:
mode:
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2009-01-04 22:14:39 +0000
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2009-01-04 22:14:39 +0000
commitf323bb78c23c76eeccced9092b9a136040ec4b88 (patch)
tree2afc7059c58e4a4029cc635e870740de81b70352 /gcc/tree-cfg.c
parentb73796fa0087ea516cea123e3590a2deba777939 (diff)
downloadgcc-f323bb78c23c76eeccced9092b9a136040ec4b88.tar.gz
gcc/
* tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary. * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of fixed-point types, and vectors of the same. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@143061 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r--gcc/tree-cfg.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 3def9a2ec9b..875d123244d 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -3474,6 +3474,12 @@ verify_gimple_assign_binary (gimple stmt)
case LSHIFT_EXPR:
case RSHIFT_EXPR:
+ if (FIXED_POINT_TYPE_P (rhs1_type)
+ && INTEGRAL_TYPE_P (rhs2_type)
+ && useless_type_conversion_p (lhs_type, rhs1_type))
+ return false;
+ /* Fall through. */
+
case LROTATE_EXPR:
case RROTATE_EXPR:
{
@@ -3495,7 +3501,8 @@ verify_gimple_assign_binary (gimple stmt)
case VEC_RSHIFT_EXPR:
{
if (TREE_CODE (rhs1_type) != VECTOR_TYPE
- || !INTEGRAL_TYPE_P (TREE_TYPE (rhs1_type))
+ || !(INTEGRAL_TYPE_P (TREE_TYPE (rhs1_type))
+ || FIXED_POINT_TYPE_P (TREE_TYPE (rhs1_type)))
|| (!INTEGRAL_TYPE_P (rhs2_type)
&& (TREE_CODE (rhs2_type) != VECTOR_TYPE
|| !INTEGRAL_TYPE_P (TREE_TYPE (rhs2_type))))