Blame SOURCES/gcc48-pr68680.patch

25c7f1
2015-12-04  Jakub Jelinek  <jakub@redhat.com>
25c7f1
25c7f1
	PR tree-optimization/68680
25c7f1
	* calls.c (special_function_p): Return ECF_MAY_BE_ALLOCA for
25c7f1
	BUILT_IN_ALLOCA{,_WITH_ALIGN}.
25c7f1
25c7f1
	* gcc.target/i386/pr68680.c: New test.
25c7f1
25c7f1
--- gcc/calls.c	(revision 231278)
25c7f1
+++ gcc/calls.c	(revision 231279)
25c7f1
@@ -564,6 +564,17 @@ special_function_p (const_tree fndecl, i
25c7f1
 	flags |= ECF_NORETURN;
25c7f1
     }
25c7f1
 
25c7f1
+  if (DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_NORMAL)
25c7f1
+    switch (DECL_FUNCTION_CODE (fndecl))
25c7f1
+      {
25c7f1
+      case BUILT_IN_ALLOCA:
25c7f1
+      case BUILT_IN_ALLOCA_WITH_ALIGN:
25c7f1
+	flags |= ECF_MAY_BE_ALLOCA;
25c7f1
+	break;
25c7f1
+      default:
25c7f1
+	break;
25c7f1
+      }
25c7f1
+
25c7f1
   return flags;
25c7f1
 }
25c7f1
 
25c7f1
--- gcc/testsuite/gcc.target/i386/pr68680.c	(revision 0)
25c7f1
+++ gcc/testsuite/gcc.target/i386/pr68680.c	(revision 231279)
25c7f1
@@ -0,0 +1,15 @@
25c7f1
+/* PR tree-optimization/68680 */
25c7f1
+/* { dg-do compile } */
25c7f1
+/* { dg-options "-O2 -fstack-protector-strong" } */
25c7f1
+
25c7f1
+int foo (char *);
25c7f1
+
25c7f1
+int
25c7f1
+bar (unsigned long x)
25c7f1
+{
25c7f1
+  char a[x];
25c7f1
+  return foo (a);
25c7f1
+}
25c7f1
+
25c7f1
+/* Verify that this function is stack protected.  */
25c7f1
+/* { dg-final { scan-assembler "stack_chk_fail" } } */