Skip to content

Commit

Permalink
Storing an out of range constant into a variable should
Browse files Browse the repository at this point in the history
ideally cause the compiler to give an error.  Right now 6g
warns about large shifts but does not give an error.  This CL
removes the out of range shift from shift.go, so that it will
work with gccgo, and adds a test case in bugs/ to be fixed at
a later date.

R=ken,r
DELTA=23  (9 added, 14 deleted, 0 changed)
OCL=16085
CL=16088
  • Loading branch information
ianlancetaylor committed Sep 29, 2008
1 parent 89ac561 commit 08df4dc
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 14 deletions.
10 changes: 10 additions & 0 deletions test/bugs/bug108.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// errchk $G $D/$F.go

// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package main
func f() {
v := 1 << 1025; // ERROR "overflow"
}
12 changes: 4 additions & 8 deletions test/golden.out
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,6 @@ Hello World!
=========== ken/rob2.go
(defn foo (add 12 34))

=========== ken/shift.go
ken/shift.go:50: stupid shift: 1025
ken/shift.go:51: stupid shift: 1025
ken/shift.go:57: stupid shift: 1025
ken/shift.go:58: stupid shift: 1025
ken/shift.go:64: stupid shift: 1025
ken/shift.go:65: stupid shift: 1025

=========== ken/simpprint.go
hello world

Expand Down Expand Up @@ -172,6 +164,10 @@ BUG: errchk: command succeeded unexpectedly: 6g bugs/bug104.go
=========== bugs/bug107.go
BUG: errchk: command succeeded unexpectedly: 6g bugs/bug107.go

=========== bugs/bug108.go
bugs/bug108.go:4: stupid shift: 1025
BUG: errchk: command succeeded unexpectedly: 6g bugs/bug108.go

=========== fixedbugs/bug016.go
fixedbugs/bug016.go:7: overflow converting constant to <uint32>UINT32

Expand Down
6 changes: 0 additions & 6 deletions test/ken/shift.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,22 +51,16 @@ main()
testi( int(1234) >> 0, 0,0,1);
testi( int(1234) << 5, 0,1,0);
testi( int(1234) >> 5, 0,1,1);
testi( int(1234) << 1025, 0,2,0);
testi( int(1234) >> 1025, 0,2,1);

testi(int(-1234) << 0, 1,0,0);
testi(int(-1234) >> 0, 1,0,1);
testi(int(-1234) << 5, 1,1,0);
testi(int(-1234) >> 5, 1,1,1);
testi(int(-1234) << 1025, 1,2,0);
testi(int(-1234) >> 1025, 1,2,1);

testu(uint(5678) << 0, 2,0,0);
testu(uint(5678) >> 0, 2,0,1);
testu(uint(5678) << 5, 2,1,0);
testu(uint(5678) >> 5, 2,1,1);
testu(uint(5678) << 1025, 2,2,0);
testu(uint(5678) >> 1025, 2,2,1);

/*
* test variable evaluations
Expand Down

0 comments on commit 08df4dc

Please sign in to comment.