[Simon Jenkins] >>so saying "=m" (d) causes xmm0 to be written to &d, not d, as >>intended. if &d isn't 128-bit aligned, it will segfault now. >>even if it is, that's not where we wanted the numbers from xmm0 >>to go ... >> >The discrepency here is because you originally said you were trying to >get the data into a named array of floats: > > float t[4]; > >but it turns out you're actually trying to get them into some memory >to which you have a named pointer: > > float *d; > >Now, there are a great many circumstances in which you could treat >such names interchangeably, but this isn't one of them.
indeed it isn't, you're right. in fact, if i'm not mistaken it's the first time ever i see this distinction make a difference. i'm not at all convinced that gcc is doing the right thing here; acting on the difference seems nonsensical to me. >The following code demonstrates [...] point taken. thanks! when i look into the code in question the next time (it works well now so not much incentive), i'll probably do a complete assembler rewrite. no more messing with my pointers, mr. gcc, thanks. tim
