[Bug tree-optimization/82604] [8 Regression] SPEC CPU2006 410.bwaves ~50% performance regression with trunk@253679 when ftree-parallelize-loops is used
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Nov 17 11:01:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82604
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
Sth like the following which only works up to the point of dependence analysis
trying to disambiguate this ref against others ... I suppose some
dr_may_alias_p tweaks to consider niter information and step/size to do
a "simple" offset based overlap test is missing.
Index: gcc/tree-data-ref.c
===================================================================
--- gcc/tree-data-ref.c (revision 254858)
+++ gcc/tree-data-ref.c (working copy)
@@ -4827,7 +4827,7 @@ get_references_in_stmt (gimple *stmt, ve
clobbers_memory = true;
break;
}
- else
+ else if (! gimple_call_builtin_p (stmt, BUILT_IN_MEMSET))
clobbers_memory = true;
}
else if (stmt_code == GIMPLE_ASM
@@ -4888,6 +4888,12 @@ get_references_in_stmt (gimple *stmt, ve
default:
break;
}
+ else if (gimple_call_builtin_p (stmt, BUILT_IN_MEMSET))
+ {
+ ref.ref = fold_build2 (MEM_REF, build_array_type (char_type_node,
build_index_type (gimple_call_arg (stmt, 2))), gimple_call_arg (stmt, 0),
build_zero_cst (ptr_type_node));
+ references->safe_push (ref);
+ return false;
+ }
op0 = gimple_call_lhs (stmt);
n = gimple_call_num_args (stmt);
More information about the Gcc-bugs
mailing list