On Tuesday, 21 July 2020 16:13:52 PDT Thiago Macieira wrote: > The memcpys qualify under all of those conditions, with even explicit > workarounds in the compilers. I don't see why you think qobject_cast has UB; > did you mean qFindChildren?
I also want to make a distinction based on the potential danger. UB inside the library, where we control the conditions of build and can apply compiler-flag workarounds have limited damage. We can patch it with proper code if we find out we had broken code. UB where there's a different, albeit possibly slower, implementation in case we were wrong have limited damage. In this particular case, however, we have: a) code that is present in user's applications (generated by moc) b) compiler under the user's compiler settings c) with limited ability to apply workarounds for This is a very large damage if conditions change. It's very different to detect we've had UB all along from jumping with both feet into a new one. At least we have found a possible workaround, which is to write the subtraction in assembly, thereby hiding from the compiler and denying it any ability to optimise things incorrectly. (which is kind of dumb, because we don't want the code to add and subtract the same quantity, wasting two cycles; see https://godbolt.org/z/PvK987). I'm just trying to find out if there's a better way so we don't have to throw this design out. -- Thiago Macieira - thiago.macieira (AT) intel.com Software Architect - Intel DPG Cloud Engineering _______________________________________________ Development mailing list Development@qt-project.org https://lists.qt-project.org/listinfo/development