checkedint call removal
bearophile via Digitalmars-d
digitalmars-d at puremagic.com
Thu Jul 31 04:36:18 PDT 2014
Walter Bright:
> I'd like to see what you are saying is different in a real
> example.
(The problem is that your have defined your own idea, so what I
can show you will look meaningless or not comformant to your own
definition. So this discussion is going nowhere. And my original
topic drowns in this assume/assert debate that is off-topic.)
In the case of assume:
int max(in int x, in int y) {
assume(x > y);
return (x > y) ? x : y;
}
The optimizer is free to replace that code with this, even in
debug builds:
int max(in int x, in int y) {
return x;
}
In the case of assert:
int max(in int x, in int y) {
assert(x > y);
return (x > y) ? x : y;
}
In debug builds gets rewritten as:
int max(in int x, in int y) {
if (x <= y)
throw new AssertError("...");
return x;
}
And in release builds gets rewritten as:
int max(in int x, in int y) {
return (x > y) ? x : y;
}
Bye,
bearophile
More information about the Digitalmars-d
mailing list