Fix host_size_t_cst_p predicat

* fold-const-call.c (host_size_t_cst_p): Test whether
	t is convertible to size_t.
	* gcc.dg/tree-ssa/builtins-folding-gimple-ub.c (main): Add
	test case.

From-SVN: r241780
This commit is contained in:
Martin Liska 2016-11-02 10:56:04 +01:00 committed by Martin Liska
parent 4b2c06f49f
commit 4adbcdb4ba
4 changed files with 17 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2016-11-02 Martin Liska <mliska@suse.cz>
* fold-const-call.c (host_size_t_cst_p): Test whether
t is convertible to size_t.
2016-11-02 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
PR tree-optimization/78170

View File

@ -29,6 +29,7 @@ along with GCC; see the file COPYING3. If not see
#include "case-cfn-macros.h"
#include "tm.h" /* For C[LT]Z_DEFINED_AT_ZERO. */
#include "builtins.h"
#include "gimple-expr.h"
/* Functions that test for certain constant types, abstracting away the
decision about whether to check for overflow. */
@ -57,7 +58,8 @@ complex_cst_p (tree t)
static inline bool
host_size_t_cst_p (tree t, size_t *size_out)
{
if (integer_cst_p (t)
if (types_compatible_p (size_type_node, TREE_TYPE (t))
&& integer_cst_p (t)
&& wi::min_precision (t, UNSIGNED) <= sizeof (size_t) * CHAR_BIT)
{
*size_out = tree_to_uhwi (t);

View File

@ -1,3 +1,8 @@
2016-11-02 Martin Liska <mliska@suse.cz>
* gcc.dg/tree-ssa/builtins-folding-gimple-ub.c (main): Add
test case.
2016-11-02 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
PR tree-optimization/78170

View File

@ -17,6 +17,10 @@ main (void)
if (__builtin_memchr (foo1, 'x', 1000)) /* Not folded away. */
__builtin_abort ();
/* STRNCMP. */
if (strncmp ("a", "b", -1)) /* { dg-warning "implicit declaration of function" } */
__builtin_abort ();
return 0;
}