[PATCH, MPX, 2/X] Pointers Checker [9/25] Bound constants

Jeff Law law@redhat.com
Thu Nov 7 19:15:00 GMT 2013


On 10/31/13 03:15, Ilya Enkovich wrote:
> Hi,
>
> Here is a patch which adds support for bound constant to be used as DECL_INITIAL for constant static bounds generated by compiler.
>
> Thanks,
> Ilya
> --
>
> gcc/
>
> 2013-10-23  Ilya Enkovich  <ilya.enkovich@intel.com>
>
> 	* emit-rtl.c (immed_double_const): Support MODE_POINTER_BOUNDS.
> 	* explow.c (trunc_int_for_mode): Likewise.
> 	* varpool.c (ctor_for_folding): Do not fold constant
> 	bounds vars.
I'm having a bit of trouble reconciling "add support for bound constant 
to be used as DECL_INITIAL" rationale text and the actual patch.

 From reading the patch it appears that you want to allow generation of 
immediate constants for objects with MODE_POINTER_BOUNDS.  OK, I can see 
how that is useful.

I can kindof see how you want to error out if someone asks for a 
constant to be truncated to MODE_POINTER_BOUNDS.  Did this trip in 
practice or is it preemptive?


> diff --git a/gcc/varpool.c b/gcc/varpool.c
> index 2eb1fc1..d9c08c1 100644
> --- a/gcc/varpool.c
> +++ b/gcc/varpool.c
> @@ -254,6 +254,12 @@ ctor_for_folding (tree decl)
>         && TREE_CODE (decl) != CONST_DECL)
>       return error_mark_node;
>
> +  /* Static constant bounds are created to be
> +     used instead of constants and therefore
> +     do not let folding it.  */
> +  if (POINTER_BOUNDS_P (decl))
> +    return error_mark_node;
Here's the part I'm struggling a bit with.    Why did you need this?

Isn't this going to prevent that DECL from being used in folding?   The 
bounds shouldn't really affect that AFAICT.

jeff



More information about the Gcc-patches mailing list