This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [C++] Omit overflow check for new char[n]


Florian Weimer <fweimer@redhat.com> a Ãcrit:

> On 10/10/2012 06:02 PM, Dodji Seketeli wrote:
>
>> I just have one question for own education.
>>
>> Regarding:
>>
>> @@ -2450,7 +2450,13 @@
>>   	  if (array_p && TYPE_VEC_NEW_USES_COOKIE (elt_type))
>>   	    size = size_binop (PLUS_EXPR, size, cookie_size);
>>   	  else
>> -	    cookie_size = NULL_TREE;
>> +	    {
>> +	      cookie_size = NULL_TREE;
>> +	      /* No size arithmetic necessary, so the size check is
>> +		 not needed. */
>> +	      if (outer_nelts_check != NULL && inner_size == double_int_one)
>> +		outer_nelts_check = NULL_TREE;
>> +	    }
>>
>> I couldn't find where in code is TYPE_VEC_NEW_USES_COOKIE is set.  Is it
>> still used?
>
> It's set in gcc/cp/class.c:
>
>    5191   /* Figure out whether or not we will need a cookie when
> dynamically
>    5192      allocating an array of this type.  */
>    5193   TYPE_LANG_SPECIFIC (t)->u.c.vec_new_uses_cookie
>    5194     = type_requires_array_cookie (t);

Ah, I see.  So maybe that statement should be trivially replaced by:

    TYPE_VEC_NEW_USES_COOKIE (t) = type_requires_array_cookie (t);

for better maintainability?

> I'm not sure if we've got proper test coverage for the concrete cookie
> value, but the test case I've included implicitly check if there's a
> cookie if there's a non-trivial destructor.

I see, Thanks.

-- 
		Dodji


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]