[Issue 4835] DMD should warn about integer overflow in computed constant

2022-12-17 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=4835

Iain Buclaw  changed:

   What|Removed |Added

   Priority|P2  |P4

--


[Issue 4835] DMD should warn about integer overflow in computed constant

2015-06-09 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=4835

Andrei Alexandrescu  changed:

   What|Removed |Added

Version|D1 & D2 |D2

--


[Issue 4835] DMD should warn about integer overflow in computed constant

2014-11-27 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=4835

Leandro Lucarella  changed:

   What|Removed |Added

   Keywords||industry
 CC||leandro.lucarella@sociomant
   ||ic.com
Version|D2  |D1 & D2

--


[Issue 4835] DMD should warn about integer overflow in computed constant

2014-11-27 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=4835

bearophile_h...@eml.cc changed:

   What|Removed |Added

 CC||pub...@dicebot.lv

--- Comment #17 from bearophile_h...@eml.cc ---
*** Issue 13785 has been marked as a duplicate of this issue. ***

--


[Issue 4835] DMD should warn about integer overflow in computed constant

2014-08-06 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=4835

hst...@quickfur.ath.cx changed:

   What|Removed |Added

   Keywords||pull

--


[Issue 4835] DMD should warn about integer overflow in computed constant

2013-03-28 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4835



--- Comment #16 from Walter Bright  2013-03-28 
00:39:03 PDT ---
(In reply to comment #15)
> Walter, what do you mean, screw? Is that a limitation of the dmd backend, or
> are you arguing that it is problematic in general? LLVM implements it, as
> bearophile points out...

Consider all the addressing modes used - they are all adds, with no overflow
checks. Secondly, they all rely on wraparound (overflow) arithmetic, after all,
that is how subtraction is done.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 4835] DMD should warn about integer overflow in computed constant

2013-03-27 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4835



--- Comment #15 from Lu�s Marques  2013-03-27 09:00:14 
PDT ---
(In reply to comment #13)
> Because it'll screw things up right and left, for example, address
> calculations.

Walter, what do you mean, screw? Is that a limitation of the dmd backend, or
are you arguing that it is problematic in general? LLVM implements it, as
bearophile points out...

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 4835] DMD should warn about integer overflow in computed constant

2013-03-27 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4835



--- Comment #14 from bearophile_h...@eml.cc 2013-03-27 04:00:40 PDT ---
(In reply to comment #11)
> While I disagree with bearophile about doing such checks at runtime, due to 
> the
> performance cost,

A feature of LLVM 3.3, it seems those costs are not too much large for C
language:

http://clang.llvm.org/docs/UsersManual.html#controlling-code-generation

See:
-fsanitize=signed-integer-overflow
-fsanitize=integer

More info:
http://embed.cs.utah.edu/ioc/

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 4835] DMD should warn about integer overflow in computed constant

2013-03-27 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4835



--- Comment #13 from Walter Bright  2013-03-27 
02:38:18 PDT ---
Because it'll screw things up right and left, for example, address
calculations.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 4835] DMD should warn about integer overflow in computed constant

2013-03-26 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4835



--- Comment #12 from Lu�s Marques  2013-03-26 22:46:13 
PDT ---
(In reply to comment #11)
> While I disagree with bearophile about doing such checks at runtime, due to 
> the
> performance cost, doing them at compile time is a whole 'nother story.

Why don't you make the runtime over/underflow checks opt-in? (compiler option).
There's a 0 performance cost that way, both for debug and release, by default,
so no performance excuse. Then we can always discuss it later if it should be
opt-out for the debug builds.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 4835] DMD should warn about integer overflow in computed constant

2013-03-26 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4835



--- Comment #11 from Walter Bright  2013-03-26 
22:36:40 PDT ---
While I disagree with bearophile about doing such checks at runtime, due to the
performance cost, doing them at compile time is a whole 'nother story.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 4835] DMD should warn about integer overflow in computed constant

2013-03-26 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4835



--- Comment #10 from Lu�s Marques  2013-03-26 20:04:13 
PDT ---
(In reply to comment #9)
> (In reply to comment #8)
> > https://github.com/D-Programming-Language/dmd/pull/1803
> 
> An error, even :-) So the issue name should be updated.
> 
> Thank you Walter. Let's see how this patch goes.

I hope the feedback I provided with being bitten by this corner case helped
nudge this issue to the limelight, that way I can feel slightly important ;-).
Thanks for addressing it so quickly Walter.

(Also, isn't it strange that this was addressed quicker than in Java, which
should have a larger support community, where the issue remains? Go D! (At
least it remains with javac 1.6.0_43))

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 4835] DMD should warn about integer overflow in computed constant

2013-03-26 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4835



--- Comment #9 from bearophile_h...@eml.cc 2013-03-26 19:45:01 PDT ---
(In reply to comment #8)
> https://github.com/D-Programming-Language/dmd/pull/1803

An error, even :-) So the issue name should be updated.

Thank you Walter. Let's see how this patch goes.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 4835] DMD should warn about integer overflow in computed constant

2013-03-26 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4835



--- Comment #8 from Walter Bright  2013-03-26 
19:06:55 PDT ---
https://github.com/D-Programming-Language/dmd/pull/1803

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 4835] DMD should warn about integer overflow in computed constant

2013-03-26 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4835



--- Comment #7 from bearophile_h...@eml.cc 2013-03-26 15:13:56 PDT ---
(In reply to comment #6)
> uint foo() {
> uint x = 1 << 40;
> return 1 << 90;
> }
> 
> gives:
> 
> foo2.d(3): Error: shift by 40 is outside the range 0..31
> foo2.d(4): Error: shift by 90 is outside the range 0..31

I was aware of that. I have added the 1<<90 example to show the peculiar error
message given by Go, that contains 1237940039285380274899124224, that is larger
than a ulong.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 4835] DMD should warn about integer overflow in computed constant

2013-03-26 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4835


Walter Bright  changed:

   What|Removed |Added

 CC||bugzi...@digitalmars.com


--- Comment #6 from Walter Bright  2013-03-26 
13:14:08 PDT ---
uint foo() {
uint x = 1 << 40;
return 1 << 90;
}

gives:

foo2.d(3): Error: shift by 40 is outside the range 0..31
foo2.d(4): Error: shift by 90 is outside the range 0..31

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 4835] DMD should warn about integer overflow in computed constant

2013-03-26 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4835


Lu�s Marques  changed:

   What|Removed |Added

 CC||luismarq...@gmail.com


--- Comment #5 from Lu�s Marques  2013-03-26 11:50:04 
PDT ---
(In reply to comment #4)

For completeness, it also does not have a problem (like in your example) where
the initializer of the 64-bit variable is initialized with (what is not
obvious) a folded and truncated 32-bit int:

var x uint64 = 4 * 1024 * 1024 * 1024;
// x is now 4294967296, not 0.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 4835] DMD should warn about integer overflow in computed constant

2013-03-26 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4835



--- Comment #3 from bearophile_h...@eml.cc 2013-03-26 11:27:23 PDT ---
An example in Go language:


package main
func main() {
var x uint32 = 1 << 40
var y = 1024 * 1024 * 1024 * 6
}


The Go compiler gives the errors:

test.go:3: constant 1099511627776 overflows uint32
test.go:4: constant 6442450944 overflows int

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 4835] DMD should warn about integer overflow in computed constant

2013-03-26 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4835



--- Comment #4 from bearophile_h...@eml.cc 2013-03-26 11:29:45 PDT ---
Another example in Go:


package main
func main() {
var x uint64 = 1 << 90
}


The Go compiler gives the error:

test.go:3: constant 1237940039285380274899124224 overflows uint64

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 4835] DMD should warn about integer overflow in computed constant

2011-02-06 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4835


Brad Roberts  changed:

   What|Removed |Added

   Platform|x86_64  |x86


--- Comment #2 from Brad Roberts  2011-02-06 15:38:57 PST 
---
Mass migration of bugs marked as x86-64 to just x86.  The platform run on isn't
what's relevant, it's if the app is a 32 or 64 bit app.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 4835] DMD should warn about integer overflow in computed constant

2010-09-07 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4835


bearophile_h...@eml.cc changed:

   What|Removed |Added

 CC||bearophile_h...@eml.cc


--- Comment #1 from bearophile_h...@eml.cc 2010-09-07 12:39:13 PDT ---
I'm asking for overflow detection for years (both at compile-time and
run-time).

Again here the C language is better than the D language:

// C code
#include "stdio.h"
int main() {
long long x = 1024 * 1024 * 1024 * 6;
printf("%lld\n", x);
return 0;
}


GCC 4.3.4 gives:
prog.c: In function ‘main’:
prog.c:3: warning: integer overflow in expression

D compiler is not _practical_ enough yet.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---