Commit 96863f32 by Martin Liska Committed by Martin Liska

Assign result of get_string_lenth to a SSA_NAME (PR tree-optimization/83552).

2017-12-27  Martin Liska  <mliska@suse.cz>

	PR tree-optimization/83552
	* tree-ssa-strlen.c (fold_strstr_to_strncmp): Assign result
	of get_string_lenth to a SSA_NAME if not a GIMPLE value.
2017-12-27  Martin Liska  <mliska@suse.cz>

	PR tree-optimization/83552
	* gcc.dg/pr83552.c: New test.

From-SVN: r256009
parent 7ec16b79
2017-12-27 Martin Liska <mliska@suse.cz>
PR tree-optimization/83552
* tree-ssa-strlen.c (fold_strstr_to_strncmp): Assign result
of get_string_lenth to a SSA_NAME if not a GIMPLE value.
2017-12-27 Tom de Vries <tom@codesourcery.com>
* config/nvptx/nvptx.c (nvptx_option_override): Disable
2017-12-27 Martin Liska <mliska@suse.cz>
PR tree-optimization/83552
* gcc.dg/pr83552.c: New test.
2017-12-26 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/83540
......
/* PR tree-optimization/83364 */
/* { dg-options "-O2" } */
char *b;
char d[100];
void a ();
void
c (void)
{
__builtin_strcat (d, "12345");
if (__builtin_strstr (b, d) == b)
a ();
}
......@@ -3005,6 +3005,16 @@ fold_strstr_to_strncmp (tree rhs1, tree rhs2, gimple *stmt)
{
gimple_stmt_iterator gsi = gsi_for_stmt (call_stmt);
tree strncmp_decl = builtin_decl_explicit (BUILT_IN_STRNCMP);
if (!is_gimple_val (arg1_len))
{
tree arg1_len_tmp = make_ssa_name (TREE_TYPE (arg1_len));
gassign *arg1_stmt = gimple_build_assign (arg1_len_tmp,
arg1_len);
gsi_insert_before (&gsi, arg1_stmt, GSI_SAME_STMT);
arg1_len = arg1_len_tmp;
}
gcall *strncmp_call = gimple_build_call (strncmp_decl, 3,
arg0, arg1, arg1_len);
tree strncmp_lhs = make_ssa_name (integer_type_node);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment