// { dg-do compile { target nvptx-*-* } }
// { dg-additional-options "-m64" }

// ptr to member data is like sizeof.
// ptr to member fn is like a struct.

struct A{};

typedef int A::*pmd;
typedef void (A::*pmf) ();

// { dg-final { scan-assembler ".extern .func \\(.param.u64 %out_retval\\) _Z8dcl_rpmdv;" } }
pmd dcl_rpmd ();

// { dg-final { scan-assembler ".extern .func _Z8dcl_rpmfv \\(.param.u64 %in_ar0\\);" } }
pmf dcl_rpmf ();

// { dg-final { scan-assembler ".extern .func _Z8dcl_apmdM1Ai \\(.param.u64 %in_ar0\\);" } }
void dcl_apmd (pmd);

// { dg-final { scan-assembler ".extern .func _Z8dcl_apmfM1AFvvE \\(.param.u64 %in_ar0\\);" } }
void dcl_apmf (pmf);

void test_1 ()
{
  dcl_rpmd ();
  dcl_rpmf ();
  dcl_apmd (0);
  dcl_apmf (0);
}

// { dg-final { scan-assembler-times ".visible .func \\(.param.u64 %out_retval\\) _Z8dfn_rpmdv(?:;|\[\r\n\]+\{)" 2 } }
pmd dfn_rpmd ()
{
  return 0;
}

// { dg-final { scan-assembler-times ".visible .func _Z8dfn_rpmfv \\(.param.u64 %in_ar0\\)(?:;|\[\r\n\]+\{)" 2 } }
pmf dfn_rpmf ()
{
  return 0;
}

// { dg-final { scan-assembler-times ".visible .func _Z8dfn_apmdM1Ai \\(.param.u64 %in_ar0\\)(?:;|\[\r\n\]+\{)" 2 } }
void dfn_apmd (pmd)
{
}

// { dg-final { scan-assembler-times ".visible .func _Z8dfn_apmfM1AFvvE \\(.param.u64 %in_ar0\\)(?:;|\[\r\n\]+\{)" 2 } }
void dfn_apmf (pmf)
{
}
