Andrew Haley <[EMAIL PROTECTED]> writes: > Ian Lance Taylor writes: > > Yuri Pudgorodsky <[EMAIL PROTECTED]> writes: > > > > > Compiling openssl-0.9.8b with gcc-4.2 snapshots, I found gcc 4.2 > > > fortifies its check for function pointer conversion and generates > > > abort for PEM_read_X509_AUX() and similar wrappers. > > > > Personally speaking, I agree with you that the compiler should issue a > > warning and then go ahead and compile the call. I don't think we gain > > anything useful by compiling a runtime abort in this case. The spirit > > of C is to let the user shoot themselves in the foot if they really > > want to. > > > > Any contrary opinions? > > The answer is here: > > keating> Because if you *do* try to inline the call, you will get an ICE.
Yes, I agree that the ICE, if it still exists, would have to be fixed, but to me that seems like a separate issue. > We could allow this iff someone fixes the ICE. But we've provided a > union cast to do the work if it's *really* needed; insn't that enough? I don't think gcc should go down the path of inserting trap calls for all undefined code. That is reasonable if there is nothing else that can be done. But in this case there is something easy to do: compile the function call as directed. I'm all for interpreting undefined code such that we can apply better optimizations, but that is not the case here. We aren't optimizing by inserting a trap in this case; we're just breaking code gratuitously. Ian