------- Comment #13 from whaley at cs dot utsa dot edu 2008-12-15 14:52 ------- >No; "The nice thing about standards is that there are so many to choose from" >is a well-known saying.
And also one without application here. I am aware of no other standard for Linux ABI other than the one in the linux standard base. Gcc did not choose another standard, it violated the one and only existing standard. I am not arguing that standards should never be changed, but rather that you shouldn't violate an existing one without reason. The reason gcc had to make this change is mere convenience (it keeps you from doing a bit-level operation and a register save in the preamble), which is not near strong enough a reason to take something that used to support the standard (gcc before this decision) and make it support absolutely no standard (your position now). Please try to avoid the mischaracterizations you are making: you have not switched from standard A to standard B, you have switched from standard A to no standard. >Then you should have made it clear much earlier in this discussion that >Windows is your concern. Because there is no one ABI for "i?86-*-*", and >an ABI written for ELF-based Unix systems 1990-1996 is far, far less >relevant to PECOFF-based Windows in 2008 than the limited relevance to >Linux in 2008. Actually, both windows and the linux base ABI handle arguments the exact same way. So, until gcc arbitrarily stopped supporting the standard, there *was* uniformity in the x86 world . . . But, it appears to me that while your standards compliance is permantly broken (due, ironically, for backwards compatibility with your previous decision), the problem I was having with gcc misaligning arrays when a standard-compliant ABI is requested, has at least been solved in gcc 4.4. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38496