# define __A	__attribute__((noderef))

struct x {
	int a;
	int b;
};

struct y {
	int a[2];
};

static void h(void)
{
	char __A *p;
	char __A * * q1;
	char * __A * q2;
	struct x __A *xp;
	struct x __A x;
	int __A *q;
	int __A *r;
	struct y __A *py;
	
	q1 = &p;
	q2 = &p;	/* This should complain */

	r = &*q;
	r = q;
	r = &*(q+1);	/* This should NOT complain */
	r = q+1;

	r = &xp->a;	/* This should NOT complain */
	r = &xp->b;
	r = &(*xp).a;
	r = &(*xp).b;

	r = &x.a;
	r = &x.b;

	r = py->a;
	r = py->a+1;
	r = &py->a[0];
}
/*
 * check-name: noderef attribute
 *
 * check-error-start
noderef.c:24:12: warning: incorrect type in assignment (different modifiers)
noderef.c:24:12:    expected char *[noderef] *q2
noderef.c:24:12:    got char [noderef] **
 * check-error-end
 */
