David Brownell wrote:
On Wednesday 07 February 2007 10:41 am, Phil Endecott wr
void inc(int* i) {
   (*i)++;
}

here's a quote from Paul Brook 
(http://gcc.gnu.org/ml/gcc-help/2006-12/msg00115.html):

" the compiler is allowed to assume that the low 2 bits of an int* are zero. "

Unless it's declared as packed ... a fact which is 100% clear in the
definition of "packed".

Dave, how would you propose to re-write my "inc" function (above) to declare i as a "packed int*"? I have tried various things like

void inc(int __attribute__((packed)) * i)
void inc(int * __attribute__((packed)) i)
void inc(int * i __attribute__((packed)))
void inc(int __attribute__((aligned(1))) * i)
void inc(int * __attribute__((aligned(1))) i)
void inc(int * i __attribute__((aligned(1))))

and I get variously

warning: ‘packed’ attribute ignored
error: alignment may not be specified for ‘i’

or no message at all, and I only ever get loadword-add-storeword code generated. My feeling is that there is no way to declare a "packed" or "unaligned" pointer to an int, and so Paul is right.

Phil.





-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to