summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/tree-ssa/pr23848-1.c
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2007-11-15 19:02:54 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2007-11-15 19:02:54 +0000
commitbdd0e1995351c8c2f624ca0f5f912aabf3735fda (patch)
tree632c05815bb907003de31352c54fe7216c1a16a8 /gcc/testsuite/gcc.dg/tree-ssa/pr23848-1.c
parentcae368636821cc166ec3404a2a7e66ce8bb26265 (diff)
downloadgcc-bdd0e1995351c8c2f624ca0f5f912aabf3735fda.tar.gz
PR middle-end/23848
* tree-ssa-ccp.c (optimize_stack_restore): New function. (execute_fold_all_builtins): Call optimize_stack_restore for BUILT_IN_STACK_RESTORE. * gcc.dg/tree-ssa/pr23848-1.c: New test. * gcc.dg/tree-ssa/pr23848-2.c: New test. * gcc.dg/tree-ssa/pr23848-3.c: New test. * gcc.dg/tree-ssa/pr23848-4.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@130206 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/gcc.dg/tree-ssa/pr23848-1.c')
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr23848-1.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr23848-1.c b/gcc/testsuite/gcc.dg/tree-ssa/pr23848-1.c
new file mode 100644
index 00000000000..08916e4e5dd
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr23848-1.c
@@ -0,0 +1,32 @@
+/* PR middle-end/23848 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+
+void bar1 (char *, int);
+void foo1 (int size)
+{
+ char temp[size];
+ temp[size-1] = '\0';
+ bar1 (temp, size);
+}
+
+void bar2 (char *, char *, char *, char *, int);
+void foo2 (int size)
+{
+ char temp[size];
+ temp[size-1] = '\0';
+ {
+ char temp2[size];
+ {
+ char temp3[size];
+ {
+ char temp4[size];
+ bar2 (temp, temp2, temp3, temp4, size);
+ }
+ }
+ }
+}
+
+/* { dg-final { scan-tree-dump-not "__builtin_stack_save" "optimized"} } */
+/* { dg-final { scan-tree-dump-not "__builtin_stack_restore" "optimized"} } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */