Add memmove to value profiling.
2018-08-01 Martin Liska <mliska@suse.cz> PR value-prof/35543 * value-prof.c (interesting_stringop_to_profile_p): Simplify the code and add BUILT_IN_MEMMOVE. (gimple_stringops_transform): Likewise. 2018-08-01 Martin Liska <mliska@suse.cz> PR value-prof/35543 * gcc.dg/tree-prof/val-prof-7.c: Add __builtin_memmove. From-SVN: r263201
This commit is contained in:
parent
00d29b97d9
commit
181f2e99d1
4 changed files with 25 additions and 5 deletions
|
@ -1,3 +1,10 @@
|
|||
2018-08-01 Martin Liska <mliska@suse.cz>
|
||||
|
||||
PR value-prof/35543
|
||||
* value-prof.c (interesting_stringop_to_profile_p):
|
||||
Simplify the code and add BUILT_IN_MEMMOVE.
|
||||
(gimple_stringops_transform): Likewise.
|
||||
|
||||
2018-08-01 Sam Tebbs <sam.tebbs@arm.com>
|
||||
|
||||
* config/aarch64/aarch64-simd.md
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2018-08-01 Martin Liska <mliska@suse.cz>
|
||||
|
||||
PR value-prof/35543
|
||||
* gcc.dg/tree-prof/val-prof-7.c: Add __builtin_memmove.
|
||||
|
||||
2018-08-01 Sam Tebbs <sam.tebbs@arm.com>
|
||||
|
||||
* gcc.target/aarch64/extract_zero_extend.c: New file.
|
||||
|
|
|
@ -23,6 +23,11 @@ __attribute__((noinline)) \
|
|||
void memset_test_ ## N (int len) \
|
||||
{ \
|
||||
__builtin_memset (buffer1, 'c', len); \
|
||||
} \
|
||||
__attribute__((noinline)) \
|
||||
void memmove_test_ ## N (int len) \
|
||||
{ \
|
||||
__builtin_memmove (buffer1, buffer2, len); \
|
||||
} \
|
||||
\
|
||||
void test_stringops_ ## N(int len) \
|
||||
|
@ -30,6 +35,7 @@ void test_stringops_ ## N(int len) \
|
|||
memcpy_test_## N (len); \
|
||||
mempcpy_test_ ## N (len); \
|
||||
memset_test_ ## N (len); \
|
||||
memmove_test_ ## N (len); \
|
||||
} \
|
||||
\
|
||||
void test_stringops_with_values_ ## N (int common, int not_common) \
|
||||
|
@ -70,3 +76,7 @@ int main() {
|
|||
/* { dg-final-use-not-autofdo { scan-ipa-dump "Single value 8 stringop transformation on __builtin_memset" "profile" } } */
|
||||
/* { dg-final-use-not-autofdo { scan-ipa-dump "Single value 55 stringop transformation on __builtin_memset" "profile" } } */
|
||||
/* { dg-final-use-not-autofdo { scan-ipa-dump-times "Single value 32 stringop transformation on __builtin_memset" 0 "profile" } } */
|
||||
|
||||
/* { dg-final-use-not-autofdo { scan-ipa-dump "Single value 8 stringop transformation on __builtin_memmove" "profile" } } */
|
||||
/* { dg-final-use-not-autofdo { scan-ipa-dump "Single value 55 stringop transformation on __builtin_memmove" "profile" } } */
|
||||
/* { dg-final-use-not-autofdo { scan-ipa-dump-times "Single value 32 stringop transformation on __builtin_memmove" 0 "profile" } } */
|
||||
|
|
|
@ -1527,14 +1527,11 @@ interesting_stringop_to_profile_p (gcall *call, int *size_arg)
|
|||
enum built_in_function fcode;
|
||||
|
||||
fcode = DECL_FUNCTION_CODE (gimple_call_fndecl (call));
|
||||
if (fcode != BUILT_IN_MEMCPY && fcode != BUILT_IN_MEMPCPY
|
||||
&& fcode != BUILT_IN_MEMSET && fcode != BUILT_IN_BZERO)
|
||||
return false;
|
||||
|
||||
switch (fcode)
|
||||
{
|
||||
case BUILT_IN_MEMCPY:
|
||||
case BUILT_IN_MEMPCPY:
|
||||
case BUILT_IN_MEMMOVE:
|
||||
*size_arg = 2;
|
||||
return validate_gimple_arglist (call, POINTER_TYPE, POINTER_TYPE,
|
||||
INTEGER_TYPE, VOID_TYPE);
|
||||
|
@ -1547,7 +1544,7 @@ interesting_stringop_to_profile_p (gcall *call, int *size_arg)
|
|||
return validate_gimple_arglist (call, POINTER_TYPE, INTEGER_TYPE,
|
||||
VOID_TYPE);
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1710,6 +1707,7 @@ gimple_stringops_transform (gimple_stmt_iterator *gsi)
|
|||
{
|
||||
case BUILT_IN_MEMCPY:
|
||||
case BUILT_IN_MEMPCPY:
|
||||
case BUILT_IN_MEMMOVE:
|
||||
src = gimple_call_arg (stmt, 1);
|
||||
src_align = get_pointer_alignment (src);
|
||||
if (!can_move_by_pieces (val, MIN (dest_align, src_align)))
|
||||
|
|
Loading…
Add table
Reference in a new issue