From 908bd465fc73c8eedd89c36174ebd61a28d508de Mon Sep 17 00:00:00 2001 From: Daniel Berlin Date: Mon, 2 Jul 2007 04:55:48 +0000 Subject: [PATCH] Add missing test from last commit Fixup two existing C++ tests for SCCVN changes From-SVN: r126187 --- gcc/testsuite/g++.dg/init/new19.C | 6 +-- gcc/testsuite/g++.dg/tree-ssa/pr27090.C | 2 +- gcc/testsuite/gcc.c-torture/compile/pr32571.c | 38 +++++++++++++++++++ 3 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr32571.c diff --git a/gcc/testsuite/g++.dg/init/new19.C b/gcc/testsuite/g++.dg/init/new19.C index a139a35aa05..a25be7da7e5 100644 --- a/gcc/testsuite/g++.dg/init/new19.C +++ b/gcc/testsuite/g++.dg/init/new19.C @@ -1,5 +1,5 @@ // { dg-do compile } -// { dg-options "-O2 -fstrict-aliasing -fdump-tree-lim-details" } +// { dg-options "-O2 -fstrict-aliasing -fdump-tree-pre-details" } // Make sure we hoist invariants out of the loop even in the presence // of placement new. This is similar to code in tramp3d. @@ -69,5 +69,5 @@ int c::foo(int f1, int f2, int f3) return sum; } -// { dg-final { scan-tree-dump "Moving statement\\n.*->ai\\\[0\\\];\\n.*out of loop" "lim" } } -// { dg-final { cleanup-tree-dump "lim" } } +// { dg-final { scan-tree-dump "Replaced.*->ai\\\[0\\\]" "pre" } } +// { dg-final { cleanup-tree-dump "pre" } } diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr27090.C b/gcc/testsuite/g++.dg/tree-ssa/pr27090.C index a56357a1b52..70ef1e09d57 100644 --- a/gcc/testsuite/g++.dg/tree-ssa/pr27090.C +++ b/gcc/testsuite/g++.dg/tree-ssa/pr27090.C @@ -17,5 +17,5 @@ int foo(Foo& f) return f.get(); } -/* { dg-final { scan-tree-dump "return f->x;" "optimized" } } */ +/* { dg-final { scan-tree-dump "return f->x;" "optimized" { xfail *-*-* } } } */ /* { dg-final { cleanup-tree-dump "optimized" } } */ diff --git a/gcc/testsuite/gcc.c-torture/compile/pr32571.c b/gcc/testsuite/gcc.c-torture/compile/pr32571.c new file mode 100644 index 00000000000..9592e3f3680 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr32571.c @@ -0,0 +1,38 @@ + +struct list_head { + struct list_head *next, *prev; +}; +struct ib_fmr { + int *device; + struct list_head list; +}; +static inline +struct mthca_fmr *to_mfmr(struct ib_fmr *ibmr) +{ + const struct ib_fmr *__mptr = (ibmr); + return (struct mthca_fmr *)( (char *)__mptr ); +} +void mthca_unmap_fmr(struct list_head *fmr_list) +{ + struct ib_fmr *fmr; + if (mthca_is_memfree()) + { + for (fmr = + ({ const struct list_head *__mptr = ((fmr_list)->next); (struct ib_fmr *)( +(char *)__mptr - 8 );}); + &fmr->list != (fmr_list); + fmr = ({ const struct list_head *__mptr = (fmr->list.next); (struct ib_fmr +*)( (char *)__mptr - 8);}) + ) + mthca_arbel_fmr_unmap(to_mfmr(fmr)); + } + else + for (fmr = + ({ const struct list_head *__mptr = ((fmr_list)->next); (struct ib_fmr *)( +(char *)__mptr - 8);}); + &fmr->list != (fmr_list); + fmr = ({ const struct list_head *__mptr = (fmr->list.next); (struct ib_fmr +*)( (char *)__mptr - 8);}) + ) + mthca_tavor_fmr_unmap(to_mfmr(fmr)); +}