aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@gcc.gnu.org>2016-01-13 20:21:59 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2016-01-13 20:21:59 +0100
commit2ad3adf102641812fe09742f545f8565bebd74ac (patch)
tree5cf0ee272a52d3041c573de778920af037820ca4 /gcc/gimple.c
parent260936f29d63bb0cebfd624804c915e528aea575 (diff)
downloadgcc-2ad3adf102641812fe09742f545f8565bebd74ac.zip
gcc-2ad3adf102641812fe09742f545f8565bebd74ac.tar.gz
gcc-2ad3adf102641812fe09742f545f8565bebd74ac.tar.bz2
re PR middle-end/69156 (gcc.dg/pr59630.c: ICE: verify_gimple failed: non-trivial conversion at assignment with -fno-tree-ccp)
PR tree-optimization/69156 * gimple.c (validate_type): Removed. (gimple_builtin_call_types_compatible_p): Use useless_type_conversion_p instead of validate_type. * value-prof.c (gimple_stringop_fixed_value): Fold icall_size to correct type. * gcc.dg/pr69156.c: New test. From-SVN: r232342
Diffstat (limited to 'gcc/gimple.c')
-rw-r--r--gcc/gimple.c23
1 files changed, 3 insertions, 20 deletions
diff --git a/gcc/gimple.c b/gcc/gimple.c
index f312f90..ff3c68a 100644
--- a/gcc/gimple.c
+++ b/gcc/gimple.c
@@ -2445,24 +2445,6 @@ gimple_ior_addresses_taken (bitmap addresses_taken, gimple *stmt)
}
-/* Return true if TYPE1 and TYPE2 are compatible enough for builtin
- processing. */
-
-static bool
-validate_type (tree type1, tree type2)
-{
- if (INTEGRAL_TYPE_P (type1)
- && INTEGRAL_TYPE_P (type2))
- ;
- else if (POINTER_TYPE_P (type1)
- && POINTER_TYPE_P (type2))
- ;
- else if (TREE_CODE (type1)
- != TREE_CODE (type2))
- return false;
- return true;
-}
-
/* Return true when STMTs arguments and return value match those of FNDECL,
a decl of a builtin function. */
@@ -2473,7 +2455,8 @@ gimple_builtin_call_types_compatible_p (const gimple *stmt, tree fndecl)
tree ret = gimple_call_lhs (stmt);
if (ret
- && !validate_type (TREE_TYPE (ret), TREE_TYPE (TREE_TYPE (fndecl))))
+ && !useless_type_conversion_p (TREE_TYPE (ret),
+ TREE_TYPE (TREE_TYPE (fndecl))))
return false;
tree targs = TYPE_ARG_TYPES (TREE_TYPE (fndecl));
@@ -2484,7 +2467,7 @@ gimple_builtin_call_types_compatible_p (const gimple *stmt, tree fndecl)
if (!targs)
return true;
tree arg = gimple_call_arg (stmt, i);
- if (!validate_type (TREE_TYPE (arg), TREE_VALUE (targs)))
+ if (!useless_type_conversion_p (TREE_VALUE (targs), TREE_TYPE (arg)))
return false;
targs = TREE_CHAIN (targs);
}