aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2016-04-27 12:23:50 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2016-04-27 12:23:50 +0000
commit1d81597a0ceeb16c779da8dd7464bb3830fe5403 (patch)
tree0c44da9bab21f5f0370013f456754897427d3fe7
parentebe504eee5181b43494bcd06d2f0683ba5f1eb8c (diff)
Backported from mainline
2016-04-23 Jakub Jelinek <jakub@redhat.com> PR sanitizer/70712 * cfgexpand.c (expand_stack_vars): Fix typo. * c-c++-common/asan/pr70712.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-6-branch@235490 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/cfgexpand.c2
-rw-r--r--gcc/testsuite/ChangeLog8
-rw-r--r--gcc/testsuite/c-c++-common/asan/pr70712.c32
4 files changed, 46 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fd14b2bddcf..61cc7fdf6df 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,6 +1,11 @@
2016-04-27 Jakub Jelinek <jakub@redhat.com>
Backported from mainline
+ 2016-04-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR sanitizer/70712
+ * cfgexpand.c (expand_stack_vars): Fix typo.
+
2016-04-19 Jakub Jelinek <jakub@redhat.com>
PR middle-end/70680
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
index 1341c14ce2b..b612293b1a7 100644
--- a/gcc/cfgexpand.c
+++ b/gcc/cfgexpand.c
@@ -1137,7 +1137,7 @@ expand_stack_vars (bool (*pred) (size_t), struct stack_vars_data *data)
HOST_WIDE_INT prev_offset
= align_base (frame_offset,
MAX (alignb, ASAN_RED_ZONE_SIZE),
- FRAME_GROWS_DOWNWARD);
+ !FRAME_GROWS_DOWNWARD);
tree repr_decl = NULL_TREE;
offset
= alloc_stack_frame_space (stack_vars[i].size
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 0097ff61b4d..046f052b299 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2016-04-27 Jakub Jelinek <jakub@redhat.com>
+
+ Backported from mainline
+ 2016-04-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR sanitizer/70712
+ * c-c++-common/asan/pr70712.c: New test.
+
2016-04-21 Kirill Yukhin <kirill.yukhin@intel.com>
PR target/70728
diff --git a/gcc/testsuite/c-c++-common/asan/pr70712.c b/gcc/testsuite/c-c++-common/asan/pr70712.c
new file mode 100644
index 00000000000..74a6a75f20c
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/asan/pr70712.c
@@ -0,0 +1,32 @@
+/* PR sanitizer/70712 */
+/* { dg-do run } */
+
+struct __attribute__((aligned (64))) S
+{
+ char s[4];
+};
+
+struct T
+{
+ char t[8];
+ char u[480];
+
+};
+
+__attribute__((noinline, noclone)) void
+foo (struct T *p, struct S *q)
+{
+ __builtin_memset (p->t, '\0', sizeof (p->t));
+ __builtin_memset (p->u, '\0', sizeof (p->u));
+ __builtin_memset (q->s, '\0', sizeof (q->s));
+}
+
+int
+main ()
+{
+ struct S s;
+ struct T t;
+ foo (&t, &s);
+ asm volatile ("" : : "r" (&t), "r" (&s) : "memory");
+ return 0;
+}