diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/tree-ssa/pr22550.C')
-rw-r--r-- | gcc/testsuite/g++.dg/tree-ssa/pr22550.C | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr22550.C b/gcc/testsuite/g++.dg/tree-ssa/pr22550.C new file mode 100644 index 000000000..5f5577620 --- /dev/null +++ b/gcc/testsuite/g++.dg/tree-ssa/pr22550.C @@ -0,0 +1,28 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +class X { +public: + int mfunc1 () { + return 1; + } + int mfunc2 () { + return 2; + } + X (int a, int b) { } +}; + +typedef int (X::*memfunc_p_t) (); + +memfunc_p_t mf_arr[2] = { &X::mfunc1, &X::mfunc2 }; + +int +main () +{ + // Get pntr to the array of pointers to member-funcs + memfunc_p_t (*mf_arr_p)[2] = &mf_arr; + // Compare indirect against direct access to an array element + if ((*mf_arr_p)[0] != mf_arr[0]) + return 1; + return 0; +} |