/* APPLE LOCAL file non lvalue assign */
/* Allow assignments to conditional expressions, as long as the second and third
   operands are already lvalues.  */
/* NB: It turns out that C++ (unlike C) already allows these as lvalues, and so
   no warnings whatsoever will be produced.  */
/* Author: Ziemowit Laski <zlaski@apple.com> */
/* { dg-options "-fnon-lvalue-assign" } */
/* { dg-do run } */

#include <stdlib.h>

int g1 = 3, g2 = 5;

void assign_val1 (int which, int value) {
  (which ? g1 : g2) = value;  /* { dg-bogus "target of assignment not really an lvalue" } */
}

void assign_val2 (int which) {
  (which ? g1 : g2)++;  /* { dg-bogus "target of assignment not really an lvalue" } */
}

int main(void) {
   assign_val1 (0, 15);
   if (g1 != 3 || g2 != 15)
     abort ();

   assign_val2 (1);
   if (g1 != 4 || g2 != 15)
     abort ();

   return 0;
}
