[llvm-dev] GEP with a null pointer base

Mehdi AMINI via llvm-dev llvm-dev at lists.llvm.org
Thu Jul 13 17:59:12 PDT 2017


2017-07-12 11:17 GMT-07:00 Peter Lawrence via llvm-dev <
llvm-dev at lists.llvm.org>:

> David,
>           Here is the definition accepted by Hal of what we’re doing
>
> > 1. Sometimes there are abstraction penalties in C++ code
> > 2. That can be optimized away after template instantiation, function
> inlining, etc
> > 3. When they for example exhibit this pattern
> >       if (A) {
> >               stuff;
> >       } else {
> >               other stuff including “undefined behavior”;
> >       }
> > 4. Where the compiler assumes “undefined behavior” doesn’t actually
> happen because
> >    In the C language standard it is the users responsibility to avoid it
> > 5. Therefore in this example the compiler can a) delete the else-clause
> >     b) delete the if-cond, c) assume A is true and propagate that
> information
>
>
>
> We are actively deleting undefined behavior, and the question is why
> given that doing so potentially masks a real source code bug.
> At the very least deleting undefined behavior should not be the default.
>

I don't believe it is the default today: optimizations aren't turned on
unless you opt-in.

-- 
Mehdi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170713/daa92db7/attachment.html>


More information about the llvm-dev mailing list