blob: 811b6de2712b68afc8867a2e078ec1854b617744 [file] [log] [blame]
/* APPLE LOCAL file non lvalue assign */
/* { dg-do run } */
/* { dg-options "-fnon-lvalue-assign" } */
#include <stdlib.h>
#define CHECK_IF(expr) if (!(expr)) abort ()
static int global;
void f(int &) { global = 35; }
void f(const int &) { global = 78; }
long long_arr[2];
int main(int argv, char *argc[]) {
char *p;
(long *)p = long_arr; /* { dg-warning "target of assignment not really an lvalue" } */
((long *)p)++; /* { dg-warning "target of assignment not really an lvalue" } */
*(long *)p = -1;
*p = -2;
CHECK_IF(p[-1] == 0 && p[0] == -2 && p[1] == -1);
(long *)p += 2; /* { dg-warning "target of assignment not really an lvalue" } */
(long *)p -= 2; /* { dg-warning "target of assignment not really an lvalue" } */
long x = 0;
f((int)x);
CHECK_IF(global == 78);
return 0;
}