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? 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. >