CIL issues an "Error: Unexpected operand for addrof" message when it encounters 
&"stringliteral" 
even though GCC will compile this expression even with -ansi and/or -pedantic 
flags. Although the 
construct is a little odd, I think that it is ANSI compliant. I include a 
sample file below that 
will compile and run with GCC but which generates the error message with CIL. I 
looked at the code 
that generates the error, but I was not sure what CIL should actually produce, 
so I have no fix to 
suggest.

the file:
_____________________________________________________
#include <stdio.h>

char *sp = NULL;

int
main (int argc, char** argv)
{
   sp = (char *)&("this");
   printf ("sp = 0x%lx   0x%lx   %s\n", (unsigned long) sp, (unsigned long) 
&sp, sp);
   return 0;
}
_____________________________________________________

the CIL response:

cilly  stringlit.c

gcc -D_GNUCC -E -DCIL=1 stringlit.c -o /tmp/cil-xJ0R9rQv.i
./cil/svndir/current/cil/obj/x86_LINUX/cilly.asm.exe --out 
/tmp/cil-nrNmdv0P.cil.c /tmp/cil-xJ0R9rQv.i
stringlit.c:8: Error: Unexpected operand for addrof
Error: Cabs2cil had some errors
Fatal error: exception Errormsg.Error

_____________________________________________________

GCC on the same code

gcc -o stringlit -ansi stringlit.c
$ ./stringlit
sp = 0x40066c   0x601030   this


Jesse Draper

------------------------------------------------------------------------------
vRanger cuts backup time in half-while increasing security.
With the market-leading solution for virtual backup and recovery, 
you get blazing-fast, flexible, and affordable data protection.
Download your free trial now. 
http://p.sf.net/sfu/quest-d2dcopy1
_______________________________________________
CIL-users mailing list
CIL-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/cil-users

Reply via email to