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
This commit is contained in:
parent
7ec16b79f0
commit
96863f32b5
4 changed files with 34 additions and 0 deletions
|
@ -1,3 +1,9 @@
|
|||
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
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
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
|
||||
|
|
13
gcc/testsuite/gcc.dg/pr83552.c
Normal file
13
gcc/testsuite/gcc.dg/pr83552.c
Normal file
|
@ -0,0 +1,13 @@
|
|||
/* 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);
|
||||
|
|
Loading…
Add table
Reference in a new issue