On Tue, 25 Oct 2011, Frederic Riss wrote: > When I read the paragraph on expression contraction, it seems that a > lot of liberty is left to the implementation wrt the kind of > contraction it does. The footnotes even talk about different accuracy, > loss of predictability and fast machine specific instructions. I don't > see what would prevent a conformant compiler to 'contract' the > discussed patterns into a widenning float multiply, without taking > care of initial operator's boundaries.
It refers specifically to "A floating expression". I interpret that as meaning that t = a*b + c; may contract the expression a*b + c into a fused multiply-add, but tmp = a*b; t = tmp + c; may not contract because a*b is in a separate expression from c. This is in accordance with the rules for excess precision, where assignments are required to eliminate excess precision. -- Joseph S. Myers jos...@codesourcery.com