1*e6298b92Srillig /* $NetBSD: msg_163.c,v 1.5 2023/07/07 19:45:22 rillig Exp $ */ 2a0a15c14Srillig # 3 "msg_163.c" 3a0a15c14Srillig 4a0a15c14Srillig // Test for message: a cast does not yield an lvalue [163] 5a0a15c14Srillig 6*e6298b92Srillig /* lint1-extra-flags: -X 351 */ 7*e6298b92Srillig 82ba3ae8cSrillig void example(char * p,int i)92ba3ae8cSrilligexample(char *p, int i) 102ba3ae8cSrillig { 112ba3ae8cSrillig p++; 12eb81ba22Srillig 13eb81ba22Srillig /* 14eb81ba22Srillig * Using a cast as an lvalue had been a GCC extension until 3.4. 15eb81ba22Srillig * It was removed in GCC 4.0. 16eb81ba22Srillig * 17eb81ba22Srillig * https://gcc.gnu.org/onlinedocs/gcc-3.4.6/gcc/Lvalues.html#Lvalues 18eb81ba22Srillig * https://gcc.gnu.org/onlinedocs/gcc-4.0.4/gcc/index.html#toc_C-Extensions 19eb81ba22Srillig */ 20eb81ba22Srillig /* expect+2: error: a cast does not yield an lvalue [163] */ 21eb81ba22Srillig /* expect+1: error: operand of 'x++' must be lvalue [114] */ 22eb81ba22Srillig ((char *)p)++; 23eb81ba22Srillig 242ba3ae8cSrillig i++; 25eb81ba22Srillig 26eb81ba22Srillig /* expect+2: error: a cast does not yield an lvalue [163] */ 27eb81ba22Srillig /* expect+1: error: operand of 'x++' must be lvalue [114] */ 28eb81ba22Srillig ((int)i)++; 292ba3ae8cSrillig } 30