From 6681da888194d79208610e3663fa7891f8d50e95 Mon Sep 17 00:00:00 2001 From: rguenth Date: Mon, 21 May 2012 10:46:19 +0000 Subject: [PATCH] 2012-05-21 Richard Guenther * tree-loop-distribution.c (can_generate_builtin): Reject volatile stmts. * gcc.dg/torture/ldist-1.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@187707 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.dg/torture/ldist-1.c | 12 ++++++++++++ gcc/tree-loop-distribution.c | 4 +++- 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/torture/ldist-1.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b142f2b..7d50aa4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2012-05-21 Richard Guenther + + * tree-loop-distribution.c (can_generate_builtin): Reject + volatile stmts. + 2012-05-21 Chung-Lin Tang * Makefile.in (options.c): Add options.h to included header diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0e4edf5..33aaeb0 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2012-05-21 Richard Guenther + + * gcc.dg/torture/ldist-1.c: New testcase. + 2012-05-20 Eric Botcazou * gnat.dg/lto13.adb: New test. diff --git a/gcc/testsuite/gcc.dg/torture/ldist-1.c b/gcc/testsuite/gcc.dg/torture/ldist-1.c new file mode 100644 index 0000000..b6a0f28 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/ldist-1.c @@ -0,0 +1,12 @@ +/* { dg-do compile } */ +/* { dg-options "-ftree-loop-distribute-patterns" } */ + +void foo (volatile int *p, int n) +{ + int i; + for (i = 0; i < n; ++i) + p[i] = 0; +} + +/* { dg-final { scan-assembler-not "memset" } } */ +/* { dg-final { cleanup-tree-dump "ldist" } } */ diff --git a/gcc/tree-loop-distribution.c b/gcc/tree-loop-distribution.c index d7506e6..f4b03bd 100644 --- a/gcc/tree-loop-distribution.c +++ b/gcc/tree-loop-distribution.c @@ -822,8 +822,10 @@ can_generate_builtin (struct graph *rdg, bitmap partition) nb_reads++; else if (RDG_MEM_WRITE_STMT (rdg, i)) { + gimple stmt = RDG_STMT (rdg, i); nb_writes++; - if (stmt_with_adjacent_zero_store_dr_p (RDG_STMT (rdg, i))) + if (!gimple_has_volatile_ops (stmt) + && stmt_with_adjacent_zero_store_dr_p (stmt)) stores_zero++; } -- 2.7.4