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
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>
(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")
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>
--- /dev/null
+/* { 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;
+}
--- /dev/null
+/* { 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;
+}