diff options
author | James Greenhalgh <james.greenhalgh@arm.com> | 2014-11-18 22:45:21 +0000 |
---|---|---|
committer | James Greenhalgh <jgreenhalgh@gcc.gnu.org> | 2014-11-18 22:45:21 +0000 |
commit | 445d78261c0eada051247595f15d28a72ad4fc54 (patch) | |
tree | 4c0a8c365b4778e59a19fe154bd45e4a651be7d8 /gcc | |
parent | c39a5e99829ae233bd3e8ee89a6b7d986adbb1c8 (diff) | |
download | gcc-445d78261c0eada051247595f15d28a72ad4fc54.zip gcc-445d78261c0eada051247595f15d28a72ad4fc54.tar.gz gcc-445d78261c0eada051247595f15d28a72ad4fc54.tar.bz2 |
[Patch] PR target/63937 TARGET_USE_BY_PIECES_INFRASTRUCTURE_P should take an unsigned HOST_WIDE_INT size argument
gcc/
PR target/63937
* target.def (use_by_pieces_infrastructure_p): Take unsigned
HOST_WIDE_INT as the size parameter.
* targhooks.c (default_use_by_pieces_infrastructure_p): Likewise.
* targhooks.h (default_use_by_pieces_infrastructure_p): Likewise.
* config/arc/arc.c (arc_use_by_pieces_infrastructure_p)): Likewise.
* config/mips/mips.c (mips_use_by_pieces_infrastructure_p)): Likewise.
* config/s390/s390.c (s390_use_by_pieces_infrastructure_p)): Likewise.
* config/sh/sh.c (sh_use_by_pieces_infrastructure_p)): Likewise.
* config/aarch64/aarch64.c
(aarch64_use_by_pieces_infrastructure_p)): Likewise.
* doc/tm.texi: Regenerate.
gcc/testsuite/
PR target/63937
* gcc.dg/memset-2.c: New.
From-SVN: r217742
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 15 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64.c | 2 | ||||
-rw-r--r-- | gcc/config/arc/arc.c | 4 | ||||
-rw-r--r-- | gcc/config/mips/mips.c | 2 | ||||
-rw-r--r-- | gcc/config/s390/s390.c | 2 | ||||
-rw-r--r-- | gcc/config/sh/sh.c | 4 | ||||
-rw-r--r-- | gcc/doc/tm.texi | 2 | ||||
-rw-r--r-- | gcc/target.def | 2 | ||||
-rw-r--r-- | gcc/targhooks.c | 2 | ||||
-rw-r--r-- | gcc/targhooks.h | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/memset-2.c | 11 |
12 files changed, 42 insertions, 11 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 647902b..5072b44 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,18 @@ +2014-11-18 James Greenhalgh <james.greenhalgh@arm.com> + + PR target/63937 + * target.def (use_by_pieces_infrastructure_p): Take unsigned + HOST_WIDE_INT as the size parameter. + * targhooks.c (default_use_by_pieces_infrastructure_p): Likewise. + * targhooks.h (default_use_by_pieces_infrastructure_p): Likewise. + * config/arc/arc.c (arc_use_by_pieces_infrastructure_p)): Likewise. + * config/mips/mips.c (mips_use_by_pieces_infrastructure_p)): Likewise. + * config/s390/s390.c (s390_use_by_pieces_infrastructure_p)): Likewise. + * config/sh/sh.c (sh_use_by_pieces_infrastructure_p)): Likewise. + * config/aarch64/aarch64.c + (aarch64_use_by_pieces_infrastructure_p)): Likewise. + * doc/tm.texi: Regenerate. + 2014-11-18 Jan Hubicka <hubicka@ucw.cz> * ipa-cp.c (ipcp_cloning_candidate_p): Use opt_for_fn. diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 4fec21e..a53f942 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -10196,7 +10196,7 @@ aarch64_asan_shadow_offset (void) } static bool -aarch64_use_by_pieces_infrastructure_p (unsigned int size, +aarch64_use_by_pieces_infrastructure_p (unsigned HOST_WIDE_INT size, unsigned int align, enum by_pieces_operation op, bool speed_p) diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c index 0f3825e..764f736 100644 --- a/gcc/config/arc/arc.c +++ b/gcc/config/arc/arc.c @@ -416,7 +416,7 @@ static void output_short_suffix (FILE *file); static bool arc_frame_pointer_required (void); -static bool arc_use_by_pieces_infrastructure_p (unsigned int, +static bool arc_use_by_pieces_infrastructure_p (unsigned HOST_WIDE_INT, unsigned int, enum by_pieces_operation op, bool); @@ -9374,7 +9374,7 @@ arc_legitimize_reload_address (rtx *p, machine_mode mode, int opnum, /* Implement TARGET_USE_BY_PIECES_INFRASTRUCTURE_P. */ static bool -arc_use_by_pieces_infrastructure_p (unsigned int size, +arc_use_by_pieces_infrastructure_p (unsigned HOST_WIDE_INT size, unsigned int align, enum by_pieces_operation op, bool speed_p) diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 02268f3..db58d07 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -7235,7 +7235,7 @@ mips_function_ok_for_sibcall (tree decl, tree exp ATTRIBUTE_UNUSED) /* Implement TARGET_USE_MOVE_BY_PIECES_INFRASTRUCTURE_P. */ bool -mips_use_by_pieces_infrastructure_p (unsigned int size, +mips_use_by_pieces_infrastructure_p (unsigned HOST_WIDE_INT size, unsigned int align, enum by_pieces_operation op, bool speed_p) diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index 3152762..ae3ffd1 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -12036,7 +12036,7 @@ s390_option_override (void) /* Implement TARGET_USE_BY_PIECES_INFRASTRUCTURE_P. */ static bool -s390_use_by_pieces_infrastructure_p (unsigned int size, +s390_use_by_pieces_infrastructure_p (unsigned HOST_WIDE_INT size, unsigned int align ATTRIBUTE_UNUSED, enum by_pieces_operation op ATTRIBUTE_UNUSED, bool speed_p ATTRIBUTE_UNUSED) diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index 5bac2af..e449121 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -338,7 +338,7 @@ static void sh_conditional_register_usage (void); static bool sh_legitimate_constant_p (machine_mode, rtx); static int mov_insn_size (machine_mode, bool); static int mov_insn_alignment_mask (machine_mode, bool); -static bool sh_use_by_pieces_infrastructure_p (unsigned int, +static bool sh_use_by_pieces_infrastructure_p (unsigned HOST_WIDE_INT, unsigned int, enum by_pieces_operation, bool); @@ -13680,7 +13680,7 @@ sh_mode_priority (int entity ATTRIBUTE_UNUSED, int n) /* Implement TARGET_USE_BY_PIECES_INFRASTRUCTURE_P. */ static bool -sh_use_by_pieces_infrastructure_p (unsigned int size, +sh_use_by_pieces_infrastructure_p (unsigned HOST_WIDE_INT size, unsigned int align, enum by_pieces_operation op, bool speed_p) diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index c09c510..0d3a9fd 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -6205,7 +6205,7 @@ optimized for speed rather than size. If you don't define this, a reasonable default is used. @end defmac -@deftypefn {Target Hook} bool TARGET_USE_BY_PIECES_INFRASTRUCTURE_P (unsigned int @var{size}, unsigned int @var{alignment}, enum by_pieces_operation @var{op}, bool @var{speed_p}) +@deftypefn {Target Hook} bool TARGET_USE_BY_PIECES_INFRASTRUCTURE_P (unsigned HOST_WIDE_INT @var{size}, unsigned int @var{alignment}, enum by_pieces_operation @var{op}, bool @var{speed_p}) GCC will attempt several strategies when asked to copy between two areas of memory, or to set, clear or store to memory, for example when copying a @code{struct}. The @code{by_pieces} infrastructure diff --git a/gcc/target.def b/gcc/target.def index 3ccb028..bc5160d 100644 --- a/gcc/target.def +++ b/gcc/target.def @@ -3314,7 +3314,7 @@ the body of the memory operation.\n\ Returning true for higher values of @code{size} may also cause an increase\n\ in code size, for example where the number of insns emitted to perform a\n\ move would be greater than that of a library call.", - bool, (unsigned int size, unsigned int alignment, + bool, (unsigned HOST_WIDE_INT size, unsigned int alignment, enum by_pieces_operation op, bool speed_p), default_use_by_pieces_infrastructure_p) diff --git a/gcc/targhooks.c b/gcc/targhooks.c index 7b1b5dc..bef1887 100644 --- a/gcc/targhooks.c +++ b/gcc/targhooks.c @@ -1430,7 +1430,7 @@ get_move_ratio (bool speed_p ATTRIBUTE_UNUSED) a call to memcpy emitted. */ bool -default_use_by_pieces_infrastructure_p (unsigned int size, +default_use_by_pieces_infrastructure_p (unsigned HOST_WIDE_INT size, unsigned int alignment, enum by_pieces_operation op, bool speed_p) diff --git a/gcc/targhooks.h b/gcc/targhooks.h index faadd23..9734220 100644 --- a/gcc/targhooks.h +++ b/gcc/targhooks.h @@ -181,7 +181,7 @@ extern int default_memory_move_cost (machine_mode, reg_class_t, bool); extern int default_register_move_cost (machine_mode, reg_class_t, reg_class_t); -extern bool default_use_by_pieces_infrastructure_p (unsigned int, +extern bool default_use_by_pieces_infrastructure_p (unsigned HOST_WIDE_INT, unsigned int, enum by_pieces_operation, bool); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 49f4973..1a56e1a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-11-18 James Greenhalgh <james.greenhalgh@arm.com> + + PR target/63937 + * gcc.dg/memset-2.c: New. + 2014-11-18 Jakub Jelinek <jakub@redhat.com> PR sanitizer/63813 diff --git a/gcc/testsuite/gcc.dg/memset-2.c b/gcc/testsuite/gcc.dg/memset-2.c new file mode 100644 index 0000000..fb4debc --- /dev/null +++ b/gcc/testsuite/gcc.dg/memset-2.c @@ -0,0 +1,11 @@ +/* PR target/63937 */ +/* { dg-do compile { target lp64 } } */ +/* { dg-options "-O2" } */ + +void +foo (char *p) +{ + p = __builtin_assume_aligned (p, 64); + __builtin_memset (p, 0, 0x100000001ULL); +} + |