assertNotThrown (and asserts in general)
Malte
no at valid.mail
Mon May 21 12:44:21 UTC 2018
I was interested by asserts and how the compiler uses them to
optimize the code. So I looked at the compiler explorer to see
how and found it, it doesn't.
What I tried to do is turn a std.conv.to!ulong(byte) to a simple
cast with the help of assertions.
https://godbolt.org/g/4uckWU
If there is an assert right before an if with the same condition,
I think it should remove the compare and jump in release, but it
doesn't. I'm assuming the compilers just aren't ready yet, but
should be someday. At least that is what the documentation
promises.
More curious made me
"assertNotThrown!ConvOverflowException(input.to!ubyte)" where it
didn't even remove the assert code in release and produced the
most inefficient assembly.
Is that intended behaviour? In my opinion that greatly limits the
usabilty of it.
More information about the Digitalmars-d-learn
mailing list