Commit 4a61cf9c by Jeff Law Committed by Jeff Law

tree-ssa-dse.c (initialize_ao_ref_for_dse): Handle _chk variants of memcpy,…

tree-ssa-dse.c (initialize_ao_ref_for_dse): Handle _chk variants of memcpy, memmove and memset builtins.

	* tree-ssa-dse.c (initialize_ao_ref_for_dse): Handle _chk variants of
	memcpy, memmove and memset builtins.
	(maybe_trim_memstar_call): Likewise.

	* gcc.c-torture/execute/builtins/builtins.exp: Add -fno-tree-dse
	as DSE compromises several of these tests.
	* gcc.dg/builtin-stringop-chk-1.c: Similarly.
	* gcc.dg/memcpy-2.c: Similarly.
	* gcc.dg/pr40340-1.c: Similarly.
	* gcc.dg/pr40340-2.c: Similarly.
	* gcc.dg/pr40340-5.c: Similarly.

From-SVN: r272704
parent f363fc5b
2019-06-26 Jeff Law <law@redhat.com>
* tree-ssa-dse.c (initialize_ao_ref_for_dse): Handle _chk variants of
memcpy, memmove and memset builtins.
(maybe_trim_memstar_call): Likewise.
2019-06-26 David Edelsohn <dje.gcc@gmail.com> 2019-06-26 David Edelsohn <dje.gcc@gmail.com>
* config/rs6000/rs6000-logue.c: Add #ifndef TARGET_PROFILE_KERNEL. * config/rs6000/rs6000-logue.c: Add #ifndef TARGET_PROFILE_KERNEL.
......
2019-06-26 Jeff Law <law@redhat.com>
* gcc.c-torture/execute/builtins/builtins.exp: Add -fno-tree-dse
as DSE compromises several of these tests.
* gcc.dg/builtin-stringop-chk-1.c: Similarly.
* gcc.dg/memcpy-2.c: Similarly.
* gcc.dg/pr40340-1.c: Similarly.
* gcc.dg/pr40340-2.c: Similarly.
* gcc.dg/pr40340-5.c: Similarly.
2019-06-26 Steven G. Kargl <kargl@gcc.gnu.org> 2019-06-26 Steven G. Kargl <kargl@gcc.gnu.org>
PR Fortran/90988 PR Fortran/90988
......
...@@ -37,7 +37,7 @@ load_lib c-torture.exp ...@@ -37,7 +37,7 @@ load_lib c-torture.exp
torture-init torture-init
set-torture-options $C_TORTURE_OPTIONS {{}} $LTO_TORTURE_OPTIONS set-torture-options $C_TORTURE_OPTIONS {{}} $LTO_TORTURE_OPTIONS
set additional_flags "-fno-tree-loop-distribute-patterns -fno-tracer" set additional_flags "-fno-tree-dse -fno-tree-loop-distribute-patterns -fno-tracer"
if [istarget "powerpc-*-darwin*"] { if [istarget "powerpc-*-darwin*"] {
lappend additional_flags "-Wl,-multiply_defined,suppress" lappend additional_flags "-Wl,-multiply_defined,suppress"
} }
......
/* Test whether buffer overflow warnings for __*_chk builtins /* Test whether buffer overflow warnings for __*_chk builtins
are emitted properly. */ are emitted properly. */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -Wno-format -std=gnu99 -ftrack-macro-expansion=0" } */ /* { dg-options "-O2 -Wno-format -std=gnu99 -ftrack-macro-expansion=0 -fno-tree-dse" } */
// { dg-skip-if "packed attribute missing for t" { "epiphany-*-*" } } // { dg-skip-if "packed attribute missing for t" { "epiphany-*-*" } }
extern void abort (void); extern void abort (void);
......
/* PR middle-end/38454 */ /* PR middle-end/38454 */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2" } */ /* { dg-options "-O2 -fno-tree-dse" } */
typedef __SIZE_TYPE__ size_t; typedef __SIZE_TYPE__ size_t;
......
/* PR middle-end/40340 */ /* PR middle-end/40340 */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -Wall -Wno-system-headers" } */ /* { dg-options "-O2 -Wall -Wno-system-headers -fno-tree-dse" } */
#include "pr40340.h" #include "pr40340.h"
......
/* PR middle-end/40340 */ /* PR middle-end/40340 */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -Wall -Wno-system-headers" } */ /* { dg-options "-O2 -Wall -Wno-system-headers -fno-tree-dse" } */
#include "pr40340.h" #include "pr40340.h"
......
/* PR middle-end/40340 */ /* PR middle-end/40340 */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -Wall -Wsystem-headers -g" } */ /* { dg-options "-O2 -Wall -Wsystem-headers -g -fno-tree-dse" } */
#define TEST3 #define TEST3
#include "pr40340.h" #include "pr40340.h"
......
...@@ -98,6 +98,9 @@ initialize_ao_ref_for_dse (gimple *stmt, ao_ref *write) ...@@ -98,6 +98,9 @@ initialize_ao_ref_for_dse (gimple *stmt, ao_ref *write)
case BUILT_IN_MEMCPY: case BUILT_IN_MEMCPY:
case BUILT_IN_MEMMOVE: case BUILT_IN_MEMMOVE:
case BUILT_IN_MEMSET: case BUILT_IN_MEMSET:
case BUILT_IN_MEMCPY_CHK:
case BUILT_IN_MEMMOVE_CHK:
case BUILT_IN_MEMSET_CHK:
{ {
tree size = NULL_TREE; tree size = NULL_TREE;
if (gimple_call_num_args (stmt) == 3) if (gimple_call_num_args (stmt) == 3)
...@@ -434,6 +437,8 @@ maybe_trim_memstar_call (ao_ref *ref, sbitmap live, gimple *stmt) ...@@ -434,6 +437,8 @@ maybe_trim_memstar_call (ao_ref *ref, sbitmap live, gimple *stmt)
{ {
case BUILT_IN_MEMCPY: case BUILT_IN_MEMCPY:
case BUILT_IN_MEMMOVE: case BUILT_IN_MEMMOVE:
case BUILT_IN_MEMCPY_CHK:
case BUILT_IN_MEMMOVE_CHK:
{ {
int head_trim, tail_trim; int head_trim, tail_trim;
compute_trims (ref, live, &head_trim, &tail_trim, stmt); compute_trims (ref, live, &head_trim, &tail_trim, stmt);
...@@ -455,6 +460,7 @@ maybe_trim_memstar_call (ao_ref *ref, sbitmap live, gimple *stmt) ...@@ -455,6 +460,7 @@ maybe_trim_memstar_call (ao_ref *ref, sbitmap live, gimple *stmt)
} }
case BUILT_IN_MEMSET: case BUILT_IN_MEMSET:
case BUILT_IN_MEMSET_CHK:
{ {
int head_trim, tail_trim; int head_trim, tail_trim;
compute_trims (ref, live, &head_trim, &tail_trim, stmt); compute_trims (ref, live, &head_trim, &tail_trim, stmt);
...@@ -860,6 +866,9 @@ dse_dom_walker::dse_optimize_stmt (gimple_stmt_iterator *gsi) ...@@ -860,6 +866,9 @@ dse_dom_walker::dse_optimize_stmt (gimple_stmt_iterator *gsi)
case BUILT_IN_MEMCPY: case BUILT_IN_MEMCPY:
case BUILT_IN_MEMMOVE: case BUILT_IN_MEMMOVE:
case BUILT_IN_MEMSET: case BUILT_IN_MEMSET:
case BUILT_IN_MEMCPY_CHK:
case BUILT_IN_MEMMOVE_CHK:
case BUILT_IN_MEMSET_CHK:
{ {
/* Occasionally calls with an explicit length of zero /* Occasionally calls with an explicit length of zero
show up in the IL. It's pointless to do analysis show up in the IL. It's pointless to do analysis
......
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