On Tue, Oct 29, 2013 at 8:48 PM, Ilya Enkovich <enkovich....@gmail.com> wrote: > 2013/10/29 Jeff Law <l...@redhat.com>: >> On 10/29/13 07:52, Ilya Enkovich wrote: >>> >>> >>> Yeah. I'm working on it right now. I've fixed known issues and now >>> I'm looking for others. Meanwhile here is a new patch version with >>> required renames and without LTO restriction. >> >> I can't help but but curious, what turned out to be the root cause of those >> LTO problems? > > There were three different problems fixed. > > The first one was SSA_NAME in DECL_INITIAL of local var. > Instrumentation used it to initialize var with input arg value > (default SSA_NAME of PARM_DECL was used). LTO cannot handle it because > when it reads symbols, it does not have SSA_NAMEs. It caused ICE.
Obviously putting things in trees is bad. > Another problem was in LTO front-end. I did not realize it has own > langhooks. It caused reset of flag_check_pointer_bounds in > process_options by my own code. > > And the last one was in initialization of checker structures. Some > structures were initialized during checker pass and then used in other > passes (e.g. expand). With LTO checker pass is not executed after LTO > front-end and following passes could work with uninitialized checker > structures. Looks badly designed then - any function related information should be hooked off struct function and streamed by LTO. Or the info should be present in the IL. Richard. >> >> >> >> 2013-10-29 Ilya Enkovich <ilya.enkov...@intel.com> >> >> * builtin-types.def (BT_FN_VOID_CONST_PTR): New. >> (BT_FN_PTR_CONST_PTR): New. >> (BT_FN_CONST_PTR_CONST_PTR): New. >> (BT_FN_PTR_CONST_PTR_SIZE): New. >> (BT_FN_PTR_CONST_PTR_CONST_PTR): New. >> (BT_FN_VOID_PTRPTR_CONST_PTR): New. >> (BT_FN_VOID_CONST_PTR_SIZE): New. >> (BT_FN_PTR_CONST_PTR_CONST_PTR_SIZE): New. >> * chkp-builtins.def: New. >> * builtins.def: include chkp-builtins.def. >> (DEF_CHKP_BUILTIN): New. >> * builtins.c (expand_builtin): Support >> BUILT_IN_CHKP_INIT_PTR_BOUNDS, >> BUILT_IN_CHKP_NULL_PTR_BOUNDS, BUILT_IN_CHKP_COPY_PTR_BOUNDS, >> BUILT_IN_CHKP_CHECK_PTR_LBOUNDS, BUILT_IN_CHKP_CHECK_PTR_UBOUNDS, >> BUILT_IN_CHKP_CHECK_PTR_BOUNDS, BUILT_IN_CHKP_SET_PTR_BOUNDS, >> BUILT_IN_CHKP_NARROW_PTR_BOUNDS, BUILT_IN_CHKP_STORE_PTR_BOUNDS, >> BUILT_IN_CHKP_GET_PTR_LBOUND, BUILT_IN_CHKP_GET_PTR_UBOUND, >> BUILT_IN_CHKP_BNDMK, BUILT_IN_CHKP_BNDSTX, BUILT_IN_CHKP_BNDCL, >> BUILT_IN_CHKP_BNDCU, BUILT_IN_CHKP_BNDLDX, BUILT_IN_CHKP_BNDRET, >> BUILT_IN_CHKP_INTERSECT, BUILT_IN_CHKP_ARG_BND, >> BUILT_IN_CHKP_NARROW, >> BUILT_IN_CHKP_EXTRACT_LOWER, BUILT_IN_CHKP_EXTRACT_UPPER. >> * common.opt (fcheck-pointer-bounds): New. >> * toplev.c (process_options): Check Pointer Bounds Checker is >> supported. >> * doc/extend.texi: Document Pointer Bounds Checker built-in >> functions. >> >> This is fine. Please install. > > Thanks! > > Ilya >> >> Thanks, >> jeff