Subject: Re: bug#13734: 24.3.50; ../src/lisp.h:2485:10: error: address expression must be an lvalue or a function designator

From: Eli Zaretskii <[email-masked]>
Date: Sat, 02 Mar 2013 10:24:18 +0200

> From: Peter Dyballa <[email-masked]>
> Date: Sat, 2 Mar 2013 00:25:41 +0100
> Cc: [email-masked],
>  [email-masked],
>  [email-masked]
> 
> 
> Am 01.03.2013 um 21:27 schrieb Eli Zaretskii:
> 
> > Can you post a cpp-preprocessed code of that line in lisp.h, when
> > configured --with-wide-int, from the compilation of a C source which
> > triggers the error (lwlib.c, I think)?
> 
> I can't! In the middle of C pre-processing this happens:
> 
> 	In file included from lwlib.c:24:
> 	../src/lisp.h:3841:52: error: macro "EQ" requires 2 arguments, but only 1 given
> [...]
> This is the pre-processed function:
> 
> 	static __attribute__ ((__unused__)) Lisp_Object *
> 	aref_addr (Lisp_Object array, ptrdiff_t idx)
> 	{
> 	  return & (((void) (0 && ((((enum Lisp_Type) ((EMACS_UINT) ((array)) >> VALBITS)) == Lisp_Vectorlike)))), (struct Lisp_Vector *) ((gl_uintptr_t) (((array) & (9223372036854775807LL >> (3 - 1)))) | DATA_SEG_BITS)))->contents[idx];
> 	}

Thanks, this gave the crucial clue.  (Your configuration uses a setup
where USE_LSB_TAG is not used, which I guess is something no one tried
in a long time.)  There was a mismatch of parentheses in the
definition of XPNTR in that branch, which I believe caused these
problems.  Please try the latest trunk, I hope I fixed this in
revision 111912.