This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
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