mirror of
https://github.com/golang/go
synced 2024-11-22 08:24:41 -07:00
cmd/gc: make rnd() more 64-bit-friendly.
Fixes #4200. R=golang-dev, dave, rsc CC=golang-dev https://golang.org/cl/6619057
This commit is contained in:
parent
bcccad4020
commit
94acfde22e
@ -15,8 +15,8 @@
|
||||
|
||||
static int defercalc;
|
||||
|
||||
uint32
|
||||
rnd(uint32 o, uint32 r)
|
||||
vlong
|
||||
rnd(vlong o, vlong r)
|
||||
{
|
||||
if(r < 1 || r > 8 || (r&(r-1)) != 0)
|
||||
fatal("rnd");
|
||||
|
@ -936,7 +936,7 @@ void checkwidth(Type *t);
|
||||
void defercheckwidth(void);
|
||||
void dowidth(Type *t);
|
||||
void resumecheckwidth(void);
|
||||
uint32 rnd(uint32 o, uint32 r);
|
||||
vlong rnd(vlong o, vlong r);
|
||||
void typeinit(void);
|
||||
|
||||
/*
|
||||
|
22
test/fixedbugs/bug458.go
Normal file
22
test/fixedbugs/bug458.go
Normal file
@ -0,0 +1,22 @@
|
||||
// compile
|
||||
|
||||
// Copyright 2012 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.
|
||||
|
||||
// Issue 4200: 6g crashes when a type is larger than 4GB.
|
||||
|
||||
package main
|
||||
|
||||
import "unsafe"
|
||||
|
||||
// N=16 on 32-bit arches, 256 on 64-bit arches.
|
||||
// On 32-bit arches we don't want to test types
|
||||
// that are over 4GB large.
|
||||
const N = 1 << unsafe.Sizeof(uintptr(0))
|
||||
|
||||
type T [N][10][10][10][10][3]byte
|
||||
|
||||
func F(t *T) byte {
|
||||
return t[0][0][0][0][0][0]
|
||||
}
|
Loading…
Reference in New Issue
Block a user