X7ROOT File Manager
Current Path:
/opt/golang/1.17.2/test
opt
/
golang
/
1.17.2
/
test
/
๐
..
๐
235.go
(1.56 KB)
๐
64bit.go
(24.83 KB)
๐
README.md
(696 B)
๐
abi
๐
alg.go
(822 B)
๐
alias.go
(588 B)
๐
alias1.go
(803 B)
๐
alias2.go
(2.52 KB)
๐
alias3.dir
๐
alias3.go
(187 B)
๐
align.go
(603 B)
๐
append.go
(9.09 KB)
๐
append1.go
(836 B)
๐
args.go
(374 B)
๐
armimm.go
(3.85 KB)
๐
assign.go
(1.01 KB)
๐
assign1.go
(5.55 KB)
๐
atomicload.go
(798 B)
๐
bench
๐
bigalg.go
(2.12 KB)
๐
bigmap.go
(2.46 KB)
๐
blank.go
(2.1 KB)
๐
blank1.go
(724 B)
๐
bom.go
(406 B)
๐
bombad.go
(480 B)
๐
bounds.go
(6.09 KB)
๐
cannotassign.go
(1.04 KB)
๐
chan
๐
chancap.go
(1.57 KB)
๐
chanlinear.go
(2.12 KB)
๐
char_lit.go
(657 B)
๐
char_lit1.go
(822 B)
๐
checkbce.go
(3.56 KB)
๐
clearfat.go
(1.15 KB)
๐
closedchan.go
(5.79 KB)
๐
closure.go
(1.69 KB)
๐
closure1.go
(280 B)
๐
closure2.go
(1.86 KB)
๐
closure3.dir
๐
closure3.go
(321 B)
๐
closure4.go
(364 B)
๐
closure5.dir
๐
closure5.go
(280 B)
๐
closure6.go
(346 B)
๐
closure7.go
(373 B)
๐
cmp.go
(7.63 KB)
๐
cmp6.go
(2.16 KB)
๐
cmplx.go
(1.39 KB)
๐
cmplxdivide.c
(2.05 KB)
๐
cmplxdivide.go
(868 B)
๐
cmplxdivide1.go
(240.68 KB)
๐
codegen
๐
complit.go
(1.71 KB)
๐
complit1.go
(1.66 KB)
๐
compos.go
(403 B)
๐
const.go
(4.78 KB)
๐
const1.go
(3.79 KB)
๐
const2.go
(1008 B)
๐
const3.go
(659 B)
๐
const4.go
(1.28 KB)
๐
const5.go
(835 B)
๐
const6.go
(834 B)
๐
const7.go
(1.9 KB)
๐
convT2X.go
(3.33 KB)
๐
convert.go
(833 B)
๐
convert1.go
(3.41 KB)
๐
convert2.go
(5.92 KB)
๐
convert3.go
(544 B)
๐
convert4.go
(1.63 KB)
๐
convlit.go
(2.39 KB)
๐
convlit1.go
(458 B)
๐
copy.go
(6.6 KB)
๐
copy1.go
(851 B)
๐
crlf.go
(782 B)
๐
ddd.go
(4.23 KB)
๐
ddd1.go
(1.58 KB)
๐
ddd2.dir
๐
ddd2.go
(252 B)
๐
decl.go
(926 B)
๐
declbad.go
(1.43 KB)
๐
defer.go
(875 B)
๐
defererrcheck.go
(1.4 KB)
๐
deferfin.go
(1.05 KB)
๐
defernil.go
(563 B)
๐
deferprint.go
(586 B)
๐
deferprint.out
(126 B)
๐
devirt.go
(599 B)
๐
directive.go
(2.24 KB)
๐
divide.go
(1.22 KB)
๐
divmod.go
(9.28 KB)
๐
dwarf
๐
embedfunc.go
(308 B)
๐
embedvers.go
(292 B)
๐
empty.go
(316 B)
๐
env.go
(585 B)
๐
eof.go
(308 B)
๐
eof1.go
(333 B)
๐
escape.go
(3.79 KB)
๐
escape2.go
(35.07 KB)
๐
escape2n.go
(35.1 KB)
๐
escape3.go
(524 B)
๐
escape4.go
(1.31 KB)
๐
escape5.go
(5.37 KB)
๐
escape_array.go
(3.64 KB)
๐
escape_calls.go
(1.26 KB)
๐
escape_closure.go
(4.24 KB)
๐
escape_field.go
(2.92 KB)
๐
escape_goto.go
(674 B)
๐
escape_hash_maphash.go
(368 B)
๐
escape_iface.go
(4.47 KB)
๐
escape_indir.go
(3.31 KB)
๐
escape_level.go
(1.79 KB)
๐
escape_map.go
(2.76 KB)
๐
escape_param.go
(8.9 KB)
๐
escape_runtime_atomic.go
(874 B)
๐
escape_selfassign.go
(538 B)
๐
escape_slice.go
(3.79 KB)
๐
escape_struct_param1.go
(8.9 KB)
๐
escape_struct_param2.go
(8.94 KB)
๐
escape_struct_return.go
(1.04 KB)
๐
escape_sync_atomic.go
(943 B)
๐
escape_unsafe.go
(2.16 KB)
๐
fibo.go
(6.28 KB)
๐
finprofiled.go
(1.95 KB)
๐
fixedbugs
๐
float_lit.go
(3.95 KB)
๐
float_lit2.go
(7.88 KB)
๐
float_lit3.go
(1.59 KB)
๐
floatcmp.go
(3.03 KB)
๐
for.go
(844 B)
๐
func.go
(1.29 KB)
๐
func1.go
(445 B)
๐
func2.go
(578 B)
๐
func3.go
(505 B)
๐
func4.go
(409 B)
๐
func5.go
(1.49 KB)
๐
func6.go
(393 B)
๐
func7.go
(477 B)
๐
func8.go
(599 B)
๐
funcdup.go
(1.31 KB)
๐
funcdup2.go
(721 B)
๐
fuse.go
(5.31 KB)
๐
gc.go
(411 B)
๐
gc1.go
(303 B)
๐
gc2.go
(972 B)
๐
gcgort.go
(34.54 KB)
๐
gcstring.go
(872 B)
๐
goprint.go
(722 B)
๐
goprint.out
(65 B)
๐
goto.go
(8.39 KB)
๐
heapsampling.go
(9.53 KB)
๐
helloworld.go
(269 B)
๐
helloworld.out
(13 B)
๐
if.go
(1.36 KB)
๐
import.go
(425 B)
๐
import1.go
(633 B)
๐
import2.dir
๐
import2.go
(247 B)
๐
import4.dir
๐
import4.go
(310 B)
๐
import5.go
(722 B)
๐
import6.go
(1.38 KB)
๐
index.go
(6.42 KB)
๐
index0.go
(301 B)
๐
index1.go
(305 B)
๐
index2.go
(305 B)
๐
indirect.go
(1.39 KB)
๐
indirect1.go
(1.53 KB)
๐
init.go
(479 B)
๐
init1.go
(1.08 KB)
๐
initcomma.go
(1.22 KB)
๐
initempty.go
(604 B)
๐
initexp.go
(1.74 KB)
๐
initialize.go
(1.24 KB)
๐
initializerr.go
(1.04 KB)
๐
initloop.go
(407 B)
๐
inline.go
(7.59 KB)
๐
inline_big.go
(12.67 KB)
๐
inline_caller.go
(1.36 KB)
๐
inline_callers.go
(1.87 KB)
๐
inline_literal.go
(1.02 KB)
๐
inline_math_bits_rotate.go
(569 B)
๐
inline_sync.go
(1.52 KB)
๐
inline_variadic.go
(513 B)
๐
int_lit.go
(387 B)
๐
intcvt.go
(4.26 KB)
๐
interface
๐
intrinsic.dir
๐
intrinsic.go
(259 B)
๐
intrinsic_atomic.go
(799 B)
๐
iota.go
(1.59 KB)
๐
ken
๐
label.go
(1.02 KB)
๐
label1.go
(2.08 KB)
๐
linkmain.go
(236 B)
๐
linkmain_run.go
(1.71 KB)
๐
linkname.dir
๐
linkname.go
(456 B)
๐
linkname2.go
(794 B)
๐
linkobj.go
(3.17 KB)
๐
linkx.go
(741 B)
๐
linkx_run.go
(1.65 KB)
๐
literal.go
(4.99 KB)
๐
literal2.go
(2.22 KB)
๐
live.go
(17.96 KB)
๐
live1.go
(1.29 KB)
๐
live2.go
(963 B)
๐
live_regabi.go
(17.93 KB)
๐
live_syscall.go
(1.13 KB)
๐
locklinear.go
(3.56 KB)
๐
loopbce.go
(9.75 KB)
๐
mainsig.go
(598 B)
๐
makechan.go
(1.04 KB)
๐
makemap.go
(1.3 KB)
๐
makenew.go
(605 B)
๐
makeslice.go
(5.49 KB)
๐
mallocfin.go
(1.18 KB)
๐
map.go
(14.91 KB)
๐
map1.go
(1.47 KB)
๐
mapclear.go
(1.49 KB)
๐
maplinear.go
(3.62 KB)
๐
mergemul.go
(3.16 KB)
๐
method.go
(5.24 KB)
๐
method1.go
(727 B)
๐
method2.go
(1.16 KB)
๐
method3.go
(570 B)
๐
method4.dir
๐
method4.go
(230 B)
๐
method5.go
(6.73 KB)
๐
method6.go
(467 B)
๐
method7.go
(1.15 KB)
๐
named.go
(4.61 KB)
๐
named1.go
(984 B)
๐
nil.go
(2.23 KB)
๐
nilcheck.go
(3.62 KB)
๐
nilptr.go
(3.15 KB)
๐
nilptr2.go
(3.6 KB)
๐
nilptr3.go
(5.39 KB)
๐
nilptr4.go
(428 B)
๐
nilptr5.go
(814 B)
๐
nilptr5_aix.go
(805 B)
๐
nilptr5_wasm.go
(812 B)
๐
nilptr_aix.go
(3.09 KB)
๐
nosplit.go
(10.8 KB)
๐
notinheap.go
(1.29 KB)
๐
notinheap2.go
(1.78 KB)
๐
notinheap3.go
(1.24 KB)
๐
nowritebarrier.go
(1.21 KB)
๐
nul1.go
(1.23 KB)
๐
oldescape_linkname.dir
๐
opt_branchlikely.go
(2.08 KB)
๐
parentype.go
(424 B)
๐
peano.go
(2.22 KB)
๐
phiopt.go
(2.02 KB)
๐
print.go
(1.56 KB)
๐
print.out
(247 B)
๐
printbig.go
(315 B)
๐
printbig.out
(41 B)
๐
prove.go
(19.65 KB)
๐
range.go
(8.14 KB)
๐
recover.go
(10.64 KB)
๐
recover1.go
(2.5 KB)
๐
recover2.go
(1.22 KB)
๐
recover3.go
(1.64 KB)
๐
recover4.go
(2.17 KB)
๐
recover5.go
(408 B)
๐
reflectmethod1.go
(578 B)
๐
reflectmethod2.go
(719 B)
๐
reflectmethod3.go
(651 B)
๐
reflectmethod4.go
(573 B)
๐
reflectmethod5.go
(544 B)
๐
reflectmethod6.go
(555 B)
๐
reflectmethod7.go
(417 B)
๐
rename.go
(1.52 KB)
๐
rename1.go
(1.13 KB)
๐
reorder.go
(2.28 KB)
๐
reorder2.go
(7.22 KB)
๐
retjmp.dir
๐
retjmp.go
(252 B)
๐
return.go
(32.69 KB)
๐
rotate.go
(3.27 KB)
๐
rotate0.go
(286 B)
๐
rotate1.go
(286 B)
๐
rotate2.go
(286 B)
๐
rotate3.go
(286 B)
๐
run.go
(56.89 KB)
๐
rune.go
(603 B)
๐
runtime
๐
runtime.go
(600 B)
๐
shift1.go
(8.92 KB)
๐
shift2.go
(1.31 KB)
๐
sieve.go
(1 KB)
๐
sigchld.go
(365 B)
๐
sigchld.out
(17 B)
๐
simassign.go
(1.12 KB)
๐
sinit.go
(5.75 KB)
๐
sinit_run.go
(856 B)
๐
sizeof.go
(2.95 KB)
๐
slice3.go
(2.92 KB)
๐
slice3err.go
(5.19 KB)
๐
slicecap.go
(1.85 KB)
๐
sliceopt.go
(735 B)
๐
solitaire.go
(2.9 KB)
๐
stack.go
(1.69 KB)
๐
stackobj.go
(975 B)
๐
stackobj2.go
(1.55 KB)
๐
stackobj3.go
(1.42 KB)
๐
strcopy.go
(674 B)
๐
strength.go
(1.02 KB)
๐
stress
๐
string_lit.go
(3.58 KB)
๐
stringrange.go
(1.45 KB)
๐
struct0.go
(565 B)
๐
switch.go
(6.1 KB)
๐
switch2.go
(778 B)
๐
switch3.go
(1.24 KB)
๐
switch4.go
(526 B)
๐
switch5.go
(2.25 KB)
๐
switch6.go
(1.16 KB)
๐
switch7.go
(796 B)
๐
syntax
๐
tinyfin.go
(1.57 KB)
๐
torture.go
(7.69 KB)
๐
turing.go
(893 B)
๐
typecheck.go
(549 B)
๐
typecheckloop.go
(526 B)
๐
typeparam
๐
typeswitch.go
(1.83 KB)
๐
typeswitch1.go
(1.6 KB)
๐
typeswitch2.go
(655 B)
๐
typeswitch2b.go
(598 B)
๐
typeswitch3.go
(1009 B)
๐
uintptrescapes.dir
๐
uintptrescapes.go
(250 B)
๐
uintptrescapes2.go
(2.18 KB)
๐
uintptrescapes3.go
(1.28 KB)
๐
undef.go
(758 B)
๐
unsafebuiltins.go
(1.29 KB)
๐
used.go
(5.96 KB)
๐
utf.go
(1.19 KB)
๐
varerr.go
(449 B)
๐
varinit.go
(509 B)
๐
winbatch.go
(1.97 KB)
๐
writebarrier.go
(5.57 KB)
๐
zerodivide.go
(5.71 KB)
Editing: bounds.go
// errorcheck -0 -m -l // 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. // Test, using compiler diagnostic flags, that bounds check elimination // is eliminating the correct checks. package foo var ( s []int a1 [1]int a1k [1000]int a100k [100000]int p1 *[1]int p1k *[1000]int p100k *[100000]int i int ui uint i8 int8 ui8 uint8 i16 int16 ui16 uint16 i32 int32 ui32 uint32 i64 int64 ui64 uint64 ) func main() { // Most things need checks. use(s[i]) use(a1[i]) use(a1k[i]) use(a100k[i]) use(p1[i]) use(p1k[i]) use(p100k[i]) use(s[ui]) use(a1[ui]) use(a1k[ui]) use(a100k[ui]) use(p1[ui]) use(p1k[ui]) use(p100k[ui]) use(s[i8]) use(a1[i8]) use(a1k[i8]) use(a100k[i8]) use(p1[i8]) use(p1k[i8]) use(p100k[i8]) // Unsigned 8-bit numbers don't need checks for len >= 2โธ. use(s[ui8]) use(a1[ui8]) use(a1k[ui8]) // ERROR "index bounds check elided" use(a100k[ui8]) // ERROR "index bounds check elided" use(p1[ui8]) use(p1k[ui8]) // ERROR "index bounds check elided" use(p100k[ui8]) // ERROR "index bounds check elided" use(s[i16]) use(a1[i16]) use(a1k[i16]) use(a100k[i16]) use(p1[i16]) use(p1k[i16]) use(p100k[i16]) // Unsigned 16-bit numbers don't need checks for len >= 2ยนโถ. use(s[ui16]) use(a1[ui16]) use(a1k[ui16]) use(a100k[ui16]) // ERROR "index bounds check elided" use(p1[ui16]) use(p1k[ui16]) use(p100k[ui16]) // ERROR "index bounds check elided" use(s[i32]) use(a1[i32]) use(a1k[i32]) use(a100k[i32]) use(p1[i32]) use(p1k[i32]) use(p100k[i32]) use(s[ui32]) use(a1[ui32]) use(a1k[ui32]) use(a100k[ui32]) use(p1[ui32]) use(p1k[ui32]) use(p100k[ui32]) use(s[i64]) use(a1[i64]) use(a1k[i64]) use(a100k[i64]) use(p1[i64]) use(p1k[i64]) use(p100k[i64]) use(s[ui64]) use(a1[ui64]) use(a1k[ui64]) use(a100k[ui64]) use(p1[ui64]) use(p1k[ui64]) use(p100k[ui64]) // Mod truncates the maximum value to one less than the argument, // but signed mod can be negative, so only unsigned mod counts. use(s[i%999]) use(a1[i%999]) use(a1k[i%999]) use(a100k[i%999]) use(p1[i%999]) use(p1k[i%999]) use(p100k[i%999]) use(s[ui%999]) use(a1[ui%999]) use(a1k[ui%999]) // ERROR "index bounds check elided" use(a100k[ui%999]) // ERROR "index bounds check elided" use(p1[ui%999]) use(p1k[ui%999]) // ERROR "index bounds check elided" use(p100k[ui%999]) // ERROR "index bounds check elided" use(s[i%1000]) use(a1[i%1000]) use(a1k[i%1000]) use(a100k[i%1000]) use(p1[i%1000]) use(p1k[i%1000]) use(p100k[i%1000]) use(s[ui%1000]) use(a1[ui%1000]) use(a1k[ui%1000]) // ERROR "index bounds check elided" use(a100k[ui%1000]) // ERROR "index bounds check elided" use(p1[ui%1000]) use(p1k[ui%1000]) // ERROR "index bounds check elided" use(p100k[ui%1000]) // ERROR "index bounds check elided" use(s[i%1001]) use(a1[i%1001]) use(a1k[i%1001]) use(a100k[i%1001]) use(p1[i%1001]) use(p1k[i%1001]) use(p100k[i%1001]) use(s[ui%1001]) use(a1[ui%1001]) use(a1k[ui%1001]) use(a100k[ui%1001]) // ERROR "index bounds check elided" use(p1[ui%1001]) use(p1k[ui%1001]) use(p100k[ui%1001]) // ERROR "index bounds check elided" // Bitwise and truncates the maximum value to the mask value. // The result (for a positive mask) cannot be negative, so elision // applies to both signed and unsigned indexes. use(s[i&999]) use(a1[i&999]) use(a1k[i&999]) // ERROR "index bounds check elided" use(a100k[i&999]) // ERROR "index bounds check elided" use(p1[i&999]) use(p1k[i&999]) // ERROR "index bounds check elided" use(p100k[i&999]) // ERROR "index bounds check elided" use(s[ui&999]) use(a1[ui&999]) use(a1k[ui&999]) // ERROR "index bounds check elided" use(a100k[ui&999]) // ERROR "index bounds check elided" use(p1[ui&999]) use(p1k[ui&999]) // ERROR "index bounds check elided" use(p100k[ui&999]) // ERROR "index bounds check elided" use(s[i&1000]) use(a1[i&1000]) use(a1k[i&1000]) use(a100k[i&1000]) // ERROR "index bounds check elided" use(p1[i&1000]) use(p1k[i&1000]) use(p100k[i&1000]) // ERROR "index bounds check elided" use(s[ui&1000]) use(a1[ui&1000]) use(a1k[ui&1000]) use(a100k[ui&1000]) // ERROR "index bounds check elided" use(p1[ui&1000]) use(p1k[ui&1000]) use(p100k[ui&1000]) // ERROR "index bounds check elided" use(a1[i&^-1]) // ERROR "index bounds check elided" use(a1[i&^0]) use(a1[i&^-2]) use(a1[i&^1]) use(a1k[i&^-1]) // ERROR "index bounds check elided" use(a1k[i&^0]) use(a1k[i&^-2]) // ERROR "index bounds check elided" use(a1k[i&^1]) use(a1k[i8&^0]) use(a1k[i8&^-128]) // ERROR "index bounds check elided" use(a1k[ui8&^1]) // ERROR "index bounds check elided" use(a1k[ui16&^0xf000]) use(a1k[ui16&^0xff00]) // ERROR "index bounds check elided" // Right shift cuts the effective number of bits in the index, // but only for unsigned (signed stays negative). use(s[i32>>22]) use(a1[i32>>22]) use(a1k[i32>>22]) use(a100k[i32>>22]) use(p1[i32>>22]) use(p1k[i32>>22]) use(p100k[i32>>22]) use(s[ui32>>22]) use(a1[ui32>>22]) use(a1k[ui32>>22]) use(a100k[ui32>>22]) // ERROR "index bounds check elided" use(p1[ui32>>22]) use(p1k[ui32>>22]) use(p100k[ui32>>22]) // ERROR "index bounds check elided" use(s[i32>>23]) use(a1[i32>>23]) use(a1k[i32>>23]) use(a100k[i32>>23]) use(p1[i32>>23]) use(p1k[i32>>23]) use(p100k[i32>>23]) use(s[ui32>>23]) use(a1[ui32>>23]) use(a1k[ui32>>23]) // ERROR "index bounds check elided" use(a100k[ui32>>23]) // ERROR "index bounds check elided" use(p1[ui32>>23]) use(p1k[ui32>>23]) // ERROR "index bounds check elided" use(p100k[ui32>>23]) // ERROR "index bounds check elided" // Division cuts the range like right shift does. use(s[i/1e6]) use(a1[i/1e6]) use(a1k[i/1e6]) use(a100k[i/1e6]) use(p1[i/1e6]) use(p1k[i/1e6]) use(p100k[i/1e6]) use(s[ui/1e6]) use(a1[ui/1e6]) use(a1k[ui/1e6]) use(p1[ui/1e6]) use(p1k[ui/1e6]) use(s[i/1e7]) use(a1[i/1e7]) use(a1k[i/1e7]) use(a100k[i/1e7]) use(p1[i/1e7]) use(p1k[i/1e7]) use(p100k[i/1e7]) use(s[ui/1e7]) use(a1[ui/1e7]) use(p1[ui/1e7]) } var sum int func use(x int) { sum += x }
Upload File
Create Folder