|  | // errorcheck | 
|  |  | 
|  | // Copyright 2018 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. | 
|  |  | 
|  | // We have a limit of 1GB for stack frames. | 
|  | // Test that we extend that limit to include large argument/return areas. | 
|  | // Argument/return areas are part of the parent frame, not the frame itself, | 
|  | // so they need to be handled separately. | 
|  |  | 
|  | package main | 
|  |  | 
|  | // >1GB to trigger failure, <2GB to work on 32-bit platforms. | 
|  | type large struct { | 
|  | b [1500000000]byte | 
|  | } | 
|  |  | 
|  | func (x large) f1() int { // GC_ERROR "stack frame too large" | 
|  | return 5 | 
|  | } | 
|  |  | 
|  | func f2(x large) int { // GC_ERROR "stack frame too large" | 
|  | return 5 | 
|  | } | 
|  |  | 
|  | func f3() (x large, i int) { // GC_ERROR "stack frame too large" | 
|  | return | 
|  | } |