Re: Counter intuitively, asserts hurt gcc static dataflow analysis.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 4 May 2018 at 15:20, Florian Weimer wrote:
> * John Carter:
>
>> But compile with ...
>> gcc  -O3 -W -Wall -Wextra -o a a.c
>> ...now results in NO warnings!
>>
>> ie. Although gcc _knows_ the assert  _will_ trigger at run time... it can't
>> tell me at compile time anymore.
>>
>> ie. Counter intuitively, adding asserts and error checks to my code has
>> made me less safe.
>
> In glibc, we could warn if the assert expression is constant and
> false.  But I'm worried that this will produce lots and lots of false
> positives after inlining, loop unrolling, and other optimizations.
>
> Has anyone tried something like this?

I've been experimenting with something like that for assertions inside
libstdc++. I want assertions that meet these properties:

- enforced at compile time in constexpr evaluation (i.e. produce a
compile-time error, not a runtime call to abort)

- otherwise, issue a compile-time warning if the arguments are
constant (using __builtin_constant_p)

- otherwise, check at run-time.



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux