2015-03-27 13:13 GMT+03:00 Richard Biener <richard.guent...@gmail.com>: > On Fri, Mar 27, 2015 at 10:44 AM, Ilya Enkovich <enkovich....@gmail.com> > wrote: >> Hi, >> >> This patch avoids various ICEs due to -fcheck-pointer-bounds used for not >> supported languages. All options get the same languages list. Bootstrapped >> and tested on x86_64-unknown-linux-gnu. Does it look OK? > > Ok, but do we really need all the -fchkp- options in LTO? Are they > not only used by > instrumentation which happens before LTO?
There are several things which happen later: constructors generation and instrumentation, chkp optimizations. Ilya > > Richard. > >> Thanks, >> Ilya >> -- >> 2015-03-27 Ilya Enkovich <ilya.enkov...@intel.com> >> >> PR target/65495 >> * c-family/c.opt (fcheck-pointer-bounds): List supported languages. >> (fchkp-check-incomplete-type): Add LTO. >> (fchkp-zero-input-bounds-for-main): Likewise. >> (fchkp-first-field-has-own-bounds): Likewise. >> (fchkp-narrow-bounds): Likewise. >> (fchkp-narrow-to-innermost-array): Likewise. >> (fchkp-use-static-bounds): Likewise. >> (fchkp-use-static-const-bounds): Likewise. >> (fchkp-treat-zero-dynamic-size-as-infinite): Likewise. >> >> >> diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt >> index 2692fb5..983f4a8 100644 >> --- a/gcc/c-family/c.opt >> +++ b/gcc/c-family/c.opt >> @@ -964,32 +964,32 @@ C ObjC C++ ObjC++ >> Where shorter, use canonicalized paths to systems headers. >> >> fcheck-pointer-bounds >> -Common Report Var(flag_check_pointer_bounds) >> +C ObjC C++ ObjC++ LTO Report Var(flag_check_pointer_bounds) >> Add Pointer Bounds Checker instrumentation. fchkp-* flags are used to >> control instrumentation. Currently available for C, C++ and ObjC. >> >> fchkp-check-incomplete-type >> -C ObjC C++ ObjC++ Report Var(flag_chkp_incomplete_type) Init(1) >> +C ObjC C++ ObjC++ LTO Report Var(flag_chkp_incomplete_type) Init(1) >> Generate pointer bounds checks for variables with incomplete type >> >> fchkp-zero-input-bounds-for-main >> -C ObjC C++ ObjC++ Report Var(flag_chkp_zero_input_bounds_for_main) Init(0) >> +C ObjC C++ ObjC++ LTO Report Var(flag_chkp_zero_input_bounds_for_main) >> Init(0) >> Use zero bounds for all incoming arguments in 'main' function. It helps >> when >> instrumented binaries are used with legacy libs. >> >> fchkp-first-field-has-own-bounds >> -C ObjC C++ ObjC++ RejectNegative Report >> Var(flag_chkp_first_field_has_own_bounds) >> +C ObjC C++ ObjC++ LTO RejectNegative Report >> Var(flag_chkp_first_field_has_own_bounds) >> Forces Pointer Bounds Checker to use narrowed bounds for address of the >> first >> field in the structure. By default pointer to the first field has the same >> bounds as pointer to the whole structure. >> >> fchkp-narrow-bounds >> -C ObjC C++ ObjC++ Report Var(flag_chkp_narrow_bounds) Init(1) >> +C ObjC C++ ObjC++ LTO Report Var(flag_chkp_narrow_bounds) Init(1) >> Control how Pointer Bounds Checker handle pointers to object fields. When >> narrowing is on, field bounds are used. Otherwise full object bounds are >> used. >> >> fchkp-narrow-to-innermost-array >> -C ObjC C++ ObjC++ RejectNegative Report >> Var(flag_chkp_narrow_to_innermost_arrray) >> +C ObjC C++ ObjC++ LTO RejectNegative Report >> Var(flag_chkp_narrow_to_innermost_arrray) >> Forces Pointer Bounds Checker to use bounds of the innermost arrays in case >> of >> nested static arryas access. By default outermost array is used. >> >> @@ -1007,17 +1007,17 @@ C ObjC C++ ObjC++ LTO Report >> Var(flag_chkp_use_nochk_string_functions) Init(0) >> Allow to use *_nochk versions of string functions by Pointer Bounds Checker. >> >> fchkp-use-static-bounds >> -C ObjC C++ ObjC++ Report Var(flag_chkp_use_static_bounds) Init(1) >> +C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_static_bounds) Init(1) >> Use statically initialized variable for vars bounds instead of >> generating them each time it is required. >> >> fchkp-use-static-const-bounds >> -C ObjC C++ ObjC++ Report Var(flag_chkp_use_static_const_bounds) Init(-1) >> +C ObjC C++ ObjC++ LTO Report Var(flag_chkp_use_static_const_bounds) Init(-1) >> Use statically initialized variable for constant bounds instead of >> generating them each time it is required. >> >> fchkp-treat-zero-dynamic-size-as-infinite >> -C ObjC C++ ObjC++ Report Var(flag_chkp_zero_dynamic_size_as_infinite) >> Init(0) >> +C ObjC C++ ObjC++ LTO Report Var(flag_chkp_zero_dynamic_size_as_infinite) >> Init(0) >> With this option zero size obtained dynamically for objects with >> incomplete type will be treated as infinite. >>