Hi, there: Bug 586 is about back-end folding gcc extension __builtin_object_size() into a compile time constant.
If I understand right, "__builtin_object_size(void*p, int type)" depends on compiler's capability of data flow analysis; if the compiler is able to reveal the object O that <p> points to, it will returns sizeof(typeof(O)); otherwise, it returns "type < 2? -1 : 0". gcc tries to fold this built-in function in many places; it calls fold_builtin_object_size()@builtin.c prior to generic -> gspin conversion. However, fold_builtin_object_size() is only able to handle simple cases; general cases are taken cared by a pass named "objsz" (see tree-object-size.c) which rely on SSA and it is called after the generic->gspin conversion. My fix, honestly kludge, is simply to replace the builtin function with "type < 2 ? -1 : 0". In the long run, the back-end should have full-blown support. Thanks Shuxin
bug586.patch
Description: Binary data
------------------------------------------------------------------------------ This SF Dev2Dev email is sponsored by: WikiLeaks The End of the Free Internet http://p.sf.net/sfu/therealnews-com
_______________________________________________ Open64-devel mailing list Open64-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/open64-devel