Basically this patch looks fine to me. You can check it in at first then try to optimize it later.
2010/12/8 shuxin yang <shuxin.ope...@gmail.com> > This intrinsic is slightly different from others in that it needs some data > flow analysis to tell the constant it folded to. In the long run, I think > the BE try to fold it whenever possible. Apparently, > CG is too late. If you check the definition of the intrinsic definition, I > flagged it as non-CG intrinsic. > > I did't hard-code to prevent future change. If one want to pass it down to > BE, simply remove the > the Fold_object_size(). > > Also note that this intrinsic is marked as side-effect-free intrinsic op, > it can be optimized in the backend like an arithmetic expression. > > Shuxin > > > On Wed, Dec 8, 2010 at 12:18 PM, Jian-Xin Lai <laij...@gmail.com> wrote: > >> I wonder it's better to pass this intrinsic to BE and lower it just before >> CGEXP phase. So that we keep the opportunity to optimize it in wopt in the >> future. >> >> Another suggestion, for the ID of the intrin, "INTRN_OBJECT_SIZE" is >> better than "INTRN_OBJ_SZ". >> >> 2010/12/8 shuxin yang <shuxin.ope...@gmail.com> >> >>> 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 >>> >>> >>> >>> ------------------------------------------------------------------------------ >>> 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 >>> >>> >> >> >> -- >> Regards, >> Lai Jian-Xin >> > > -- Regards, Lai Jian-Xin
------------------------------------------------------------------------------
_______________________________________________ Open64-devel mailing list Open64-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/open64-devel