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: [patch] un-#ifdef GATHER_STATISTICS


On Tue, Jul 24, 2012 at 6:21 PM, Markus Trippelsdorf
<markus@trippelsdorf.de> wrote:
> On 2012.07.23 at 19:01 +0200, Steven Bosscher wrote:
>> Hello,
>>
>> This large patch makes GATHER_STATISTICS always take a value, 0
>> (disabled) or 1 (enabled), and turns all related #ifdef code into
>> conditional branches.
>>
>> This slightly increases the data section of cc1, but only marginally.
>> There is no impact on compile time, because all tests are simply
>> optimized away if GATHER_STATISTICS is 0.
>>
>> The benefit is that this improves the coverage of this code, and less
>> #ifdef'ed code (which is IMHO a Good Thing).
>>
>>...
>>
>> Index: alloc-pool.c
>> ===================================================================
>> --- alloc-pool.c      (revision 189784)
>> +++ alloc-pool.c      (working copy)
>> @@ -62,8 +62,6 @@ typedef struct allocation_object_def
>>  static ALLOC_POOL_ID_TYPE last_id;
>>  #endif
>>
>> -#ifdef GATHER_STATISTICS
>> -
>>  /* Store information about each particular alloc_pool.  Note that this
>>     will underestimate the amount the amount of storage used by a small amount:
>>     1) The overhead in a pool is not accounted for.
>> @@ -123,7 +121,6 @@ alloc_pool_descriptor (const char *name)
>>    (*slot)->name = name;
>>    return *slot;
>>  }
>> -#endif
>>
>>  /* Create a pool of things of size SIZE, with NUM in each block we
>>     allocate.  */
>> @@ -133,9 +130,6 @@ create_alloc_pool (const char *name, siz
>>  {
>>    alloc_pool pool;
>>    size_t header_size;
>> -#ifdef GATHER_STATISTICS
>> -  struct alloc_pool_descriptor *desc;
>> -#endif
>>
>>    gcc_checking_assert (name);
>>
>> @@ -146,10 +140,11 @@ create_alloc_pool (const char *name, siz
>>    /* Now align the size to a multiple of 4.  */
>>    size = align_eight (size);
>>
>> -#ifdef ENABLE_CHECKING
>> -  /* Add the aligned size of ID.  */
>> -  size += offsetof (allocation_object, u.data);
>> -#endif
>> +  if (ENABLE_CHECKING)
>> +    {
>> +      /* Add the aligned size of ID.  */
>> +      size += offsetof (allocation_object, u.data);
>> +    }
>
> The change above causes a build failure with --enable-checking=release:

Yes. It seems I was a bit too zealous there. Consider it fixed. Sorry
for the breakage.

Proves my point though: #ifdef is bad :-)

Ciao!
Steven


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