This is the mail archive of the gcc-help@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: Counter intuitively, asserts hurt gcc static dataflow analysis.


On Fri, May 04, 2018 at 03:16:14PM +0200, Mason wrote:
> On 04/05/2018 01:03, John Carter wrote:
> 
> > 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 the first version, gcc inlines the function call, which enables
> further analysis. In the second version, the assert() call makes
> gcc decide not to inline the function call, thus later analysis passes
> are no longer able to spot the out-of-bounds access.

No, that's not it.  In the second version there *is* no out of bounds
access!


Segher


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