A mere two months after you posted the patch:

Jason Merrill <ja...@redhat.com> writes:
> diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ptrmem6.C 
> b/gcc/testsuite/g++.old-deja/g++.pt/ptrmem6.C
> index 8802e98..19f1591 100644
> --- a/gcc/testsuite/g++.old-deja/g++.pt/ptrmem6.C
> +++ b/gcc/testsuite/g++.old-deja/g++.pt/ptrmem6.C
> @@ -13,30 +13,22 @@ public:
>  };
>  
>  template <void (A::*)() >
> -void g() {}                  // { dg-message "void g" }
> +void g() {}
>  template <int A::*>
> -void h() {}                  // { dg-message "void h" }
> +void h() {}
>  
>  
>  int main() {
>    g<&A::f>();
>    h<&A::i>();
>    g<&B::f>(); // { dg-error "" } 
> -  // { dg-message "candidate" "candidate note" { target *-*-* } 24 }
>    h<&B::j>(); // { dg-error "" } 
> -  // { dg-message "candidate" "candidate note" { target *-*-* } 26 }
> -  g<(void (A::*)()) &A::f>(); // { dg-error "" } 
> -  // { dg-message "candidate" "candidate note" { target *-*-* } 28 }
> -  h<(int A::*) &A::i>(); // { dg-error "" } 
> -  // { dg-message "candidate" "candidate note" { target *-*-* } 30 }
> +  g<(void (A::*)()) &A::f>(); // { dg-error "" "" { xfail c++11 } }
> +  h<(int A::*) &A::i>(); // { dg-error "" "" { xfail c++11 } }
>    g<(void (A::*)()) &B::f>(); // { dg-error "" } 
> -  // { dg-message "candidate" "candidate note" { target *-*-* } 32 }
>    h<(int A::*) &B::j>(); // { dg-error "" } 
> -  // { dg-message "candidate" "candidate note" { target *-*-* } 34 }
> -  g<(void (A::*)()) 0>(); // { dg-error "" } 
> -  // { dg-message "candidate" "candidate note" { target *-*-* } 36 }
> -  h<(int A::*) 0>(); // { dg-error "" } 
> -  // { dg-message "candidate" "candidate note" { target *-*-* } 38 }
> +  g<(void (A::*)()) 0>(); // { dg-error "" "" { target c++98 } }
> +  h<(int A::*) 0>(); // { dg-error "" "" { target c++98 } }
>  
>    return 0;
>  }

Does this mean that the { target c++98 } lines are acceptable in C++11,
while the { xfail c++11 } lines are still errors in C++11, but aren't
detected?  (Daft question really, but wanted to check.)

The reason for asking is that the line:

    g<(void (A::*)()) &B::f>(); // { dg-error "" } 

also fails for C++11 on targets that define TARGET_PTRMEMFUNC_VBIT_LOCATION
to ptrmemfunc_vbit_in_delta.  Is that expected, and if so, is the patch
below OK?  Or should I try to look at it a bit further first?

(This is the only failing C++ test on mips64-linux-gnu.)

Thanks,
Richard


gcc/testsuite/
        * g++.old-deja/g++.pt/ptrmem6.C: xfail a test for ARM and MIPS
        in C++11 mode.

Index: gcc/testsuite/g++.old-deja/g++.pt/ptrmem6.C
===================================================================
--- gcc/testsuite/g++.old-deja/g++.pt/ptrmem6.C 2012-01-21 10:53:09.000000000 
+0000
+++ gcc/testsuite/g++.old-deja/g++.pt/ptrmem6.C 2012-01-21 10:57:31.000000000 
+0000
@@ -25,7 +25,7 @@ int main() {
   h<&B::j>(); // { dg-error "" } 
   g<(void (A::*)()) &A::f>(); // { dg-error "" "" { xfail c++11 } }
   h<(int A::*) &A::i>(); // { dg-error "" "" { xfail c++11 } }
-  g<(void (A::*)()) &B::f>(); // { dg-error "" } 
+  g<(void (A::*)()) &B::f>(); // { dg-error "" "" { xfail { c++11 && { 
arm*-*-* mips*-*-* } } } }
   h<(int A::*) &B::j>(); // { dg-error "" } 
   g<(void (A::*)()) 0>(); // { dg-error "" "" { target c++98 } }
   h<(int A::*) 0>(); // { dg-error "" "" { target c++98 } }

Reply via email to