gcc/
authoryroux <yroux@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 6 Oct 2014 13:43:55 +0000 (13:43 +0000)
committeryroux <yroux@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 6 Oct 2014 13:43:55 +0000 (13:43 +0000)
2014-10-06  Yvan Roux  <yvan.roux@linaro.org>

Backport from trunk r215385.
2014-09-19  James Greenhalgh  <james.greenhalgh@arm.com>

* config/aarch64/aarch64.md (stack_protect_test_<mode>): Mark
scratch register as written.

gcc/testsuite/
2014-10-06  Yvan Roux  <yvan.roux@linaro.org>

Backport from trunk r215385.
2014-09-19  James Greenhalgh  <james.greenhalgh@arm.com>

* gcc.dg/ssp-3.c: New.
* gcc.dg/ssp-4.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@215941 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog.linaro
gcc/config/aarch64/aarch64.md
gcc/testsuite/ChangeLog.linaro
gcc/testsuite/gcc.dg/ssp-3.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/ssp-4.c [new file with mode: 0644]

index ca2196b..02be00f 100644 (file)
@@ -1,5 +1,13 @@
 2014-10-06  Yvan Roux  <yvan.roux@linaro.org>
 
+       Backport from trunk r215385.
+       2014-09-19  James Greenhalgh  <james.greenhalgh@arm.com>
+
+       * config/aarch64/aarch64.md (stack_protect_test_<mode>): Mark
+       scratch register as written.
+
+2014-10-06  Yvan Roux  <yvan.roux@linaro.org>
+
        Backport from trunk r215346.
        2014-09-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
 
index 4aad6ea..f80170a 100644 (file)
        (unspec:PTR [(match_operand:PTR 1 "memory_operand" "m")
                     (match_operand:PTR 2 "memory_operand" "m")]
         UNSPEC_SP_TEST))
-   (clobber (match_scratch:PTR 3 "&r"))]
+   (clobber (match_scratch:PTR 3 "=&r"))]
   ""
   "ldr\t%<w>3, %x1\;ldr\t%<w>0, %x2\;eor\t%<w>0, %<w>3, %<w>0"
   [(set_attr "length" "12")
index 33dae17..f98f38b 100644 (file)
@@ -1,5 +1,13 @@
 2014-10-06  Yvan Roux  <yvan.roux@linaro.org>
 
+       Backport from trunk r215385.
+       2014-09-19  James Greenhalgh  <james.greenhalgh@arm.com>
+
+       * gcc.dg/ssp-3.c: New.
+       * gcc.dg/ssp-4.c: Likewise.
+
+2014-10-06  Yvan Roux  <yvan.roux@linaro.org>
+
        Backport from trunk r215136.
        2014-09-10  Xinliang David Li  <davidxl@google.com>
 
diff --git a/gcc/testsuite/gcc.dg/ssp-3.c b/gcc/testsuite/gcc.dg/ssp-3.c
new file mode 100644 (file)
index 0000000..98c12da
--- /dev/null
@@ -0,0 +1,16 @@
+/* { dg-do assemble } */
+/* { dg-options "-fstack-protector-strong -O1 -frename-registers" } */
+/* { dg-require-effective-target fstack_protector } */
+
+extern int bar (const char *s, int *argc);
+extern int baz (const char *s);
+
+char
+foo (const char *s)
+{
+  int argc;
+  int ret;
+  if ( !bar (s, &argc))
+    ret = baz (s);
+  return *s;
+}
diff --git a/gcc/testsuite/gcc.dg/ssp-4.c b/gcc/testsuite/gcc.dg/ssp-4.c
new file mode 100644 (file)
index 0000000..402033c
--- /dev/null
@@ -0,0 +1,18 @@
+/* { dg-do assemble } */
+/* { dg-options "-fstack-protector-strong -O1 -frename-registers" } */
+/* { dg-require-effective-target fstack_protector } */
+
+typedef unsigned int uint32_t;
+struct ctx
+{
+  uint32_t A;
+};
+
+void *
+buffer_copy (const struct ctx *ctx, void *resbuf)
+{
+  uint32_t buffer[4];
+  buffer[0] = (ctx->A);
+  __builtin_memcpy (resbuf, buffer, sizeof (buffer));
+  return resbuf;
+}