Overflows in Phobos
Steven Schveighoffer via Digitalmars-d
digitalmars-d at puremagic.com
Tue Jul 26 12:11:09 PDT 2016
On 7/26/16 2:44 PM, Timon Gehr wrote:
> On 26.07.2016 17:44, Johan Engelen wrote:
>> The compiler can assume it is unreachable code, but it has to keep it,
>
> That makes no sense. Those two statements are mutually exclusive.
I thought that assert(0) means that the compiler does not need to check
any validity of code after the assert. I'd reword Johan's statement to
say that the compiler can assume the programmer thought this was
unreachable, so it can just crash. It can't compile the crash out, or
then the program is in an invalid state!
This is not the user saying "I guarantee we won't go over the cliff",
it's the user saying "If we get to this point, I have lost all
guarantees of not going off the cliff, so shut off the engine". The
compiler can make optimization assumptions for the code that *doesn't*
take the branch, but it still needs the branch to make sure.
-Steve
More information about the Digitalmars-d
mailing list