aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2014-11-14[dev.power64] liblink: fix Solaris builddev.power64Austin Clements
a->class is a char. Boo hoo. LGTM=minux R=rsc, minux CC=golang-codereviews https://golang.org/cl/169630043
2014-11-14[dev.power64] 6g,9g: formatters for Prog and Addr detailsAustin Clements
The pretty printers for these make it hard to understand what's actually in the fields of these structures. These "ugly printers" show exactly what's in each field, which can be useful for understanding and debugging code. LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/175780043
2014-11-14[dev.power64] liblink: generate dnames[5689] for D_* constantsAustin Clements
This is more complicated than the other enums because the D_* enums are full of explicit initializers and repeated values. This tries its best. (This will get much cleaner once we tease these constants apart better.) LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/166700043
2014-11-14[dev.power64] 5g,6g,8g,9g: debug prints for regopt pass 6 and paint2Austin Clements
Theses were very helpful in understanding the regions and register selection when porting regopt to 9g. Add them to the other compilers (and improve 9g's successor debug print). LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/174130043
2014-11-14[dev.power64] 5g,6g,8g: synchronize documentation for regopt structuresAustin Clements
I added several comments to the regopt-related structures when porting it to 9g. Synchronize those comments back in to the other compilers. LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/175720043
2014-11-13[dev.power64] 9g: implement regoptAustin Clements
This adds registerization support to 9g equivalent to what the other compilers have. LGTM=rsc R=rsc, dave CC=golang-codereviews https://golang.org/cl/174980043
2014-11-13[dev.power64] 9l: remove enum as's tag for c2goAustin Clements
None of the other compilers have a tag for this enum. Cleaning all of this up to use proper types will happen after the conversion. LGTM=minux, rsc R=rsc, minux CC=golang-codereviews https://golang.org/cl/166690043
2014-11-13[dev.power64] 6g,8g: remove unnecessary and incorrect reg use scanningAustin Clements
Previously, the 6g and 8g registerizers scanned for used registers beyond the end of a region being considered for registerization. This ancient artifact was copied from the C compilers, where it was probably necessary to track implicitly used registers. In the Go compilers it's harmless (because it can only over-restrict the set of available registers), but no longer necessary because the Go compilers correctly track register use/set information. The consequences of this extra scan were (at least) that 1) we would not consider allocating the AX register if there was a deferproc call in the future because deferproc uses AX as a return register, so we see the use of AX, but don't track that AX is set by the CALL, and 2) we could not consider allocating the DX register if there was a MUL in the future because MUL implicitly sets DX and (thanks to an abuse of copyu in this code) we would also consider DX used. This commit fixes these problems by nuking this code. LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/174110043
2014-11-12[dev.power64] liblink: improve documentation of struct ProgAustin Clements
LGTM=dave, rsc R=rsc, dave CC=golang-codereviews https://golang.org/cl/169460043
2014-11-12[dev.power64] 9g: proginfo fixesAustin Clements
For D_OREG addresses, store the used registers in regindex instead of reguse because they're really part of addressing. Add implicit register use/set for DUFFZERO/DUFFCOPY. LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/174050044
2014-11-12[dev.power64] 9g: fix width check and width calculation for OADDRAustin Clements
LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/174970043
2014-11-07[dev.power64] 5g: fix mistaken bit-wise AND in regoptAustin Clements
Replace a bit-wise AND with a logical one. This happened to work before because bany returns 0 or 1, but the intent here is clearly logical (and this makes 5g match with 6g and 8g). LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/172850043
2014-11-06[dev.power64] 5g: fix etype and width of itable AddrsAustin Clements
For OITAB nodes, 5g's naddr was setting the wrong etype and failing to set the width of the resulting Addr. LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/171220043
2014-11-06[dev.power64] 9g: fix addr width calculation; enable MOV* width checkAustin Clements
9g's naddr was missing assignments to a->width in several cases, so the optimizer was getting bogus width information. Add them. This correct width information also lets us enable the width check in gins for MOV*. LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/167310043
2014-11-06[dev.power64] gc: fix etype of stringsAustin Clements
The etype of references to strings was being incorrectly set to TINT32 on all platforms. Change it to TSTRING. It seems this doesn't matter for compilation, since x86 uses LEA instructions to load string addresses and arm and power64 disassemble the string into its constituent pieces (with the correct types), but it helps when debugging. LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/170100043
2014-11-05[dev.power64] 6g: don't create variables for indirect addressesAustin Clements
Previously, mkvar treated, for example, 0(AX) the same as AX. As a result, a move to an indirect address would be marked as *setting* the register, rather than just using it, resulting in unnecessary register moves. Fix this by not producing variables for indirect addresses. LGTM=rsc R=rsc, dave CC=golang-codereviews https://golang.org/cl/164610043
2014-11-04[dev.power64] gc: convert Bits to a uint64 arrayAustin Clements
So far all of our architectures have had at most 32 registers, so we've been able to use entry 0 in the Bits uint32 array directly as a register mask. Power64 has 64 registers, so this converts Bits to a uint64 array so we can continue to use entry 0 directly as a register mask on Power64. LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/169060043
2014-11-03[dev.power64] test: "fix" live.go test on power64xAustin Clements
On power64x, this one line in live.go reports that t is live because of missing optimization passes. This isn't what this test is trying to test, so shuffle bad40 so that it still accomplishes the intent of the test without also depending on optimization. LGTM=rsc R=rsc, dave CC=golang-codereviews https://golang.org/cl/167110043
2014-11-03[dev.power64] test: disable nilptr3 test on power64xAustin Clements
The remaining failures in this test are because of incomplete optimization support on power64x. Tracked in issue 9058. LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/168130043
2014-11-03[dev.power64] liblink: fix printing of branch targetsAustin Clements
Print PC stored in target Prog* of branch instructions when available instead of the offset stored in the branch instruction. The offset tends to be wrong after code transformations, so previously this led to confusing listings. LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/168980043
2014-11-03[dev.power64] 9g: fix niloptAustin Clements
Previously, nilopt was disabled on power64x because it threw away "seemly random segments of code." Indeed, excise on power64x failed to preserve the link field, so it excised not only the requested instruction but all following instructions in the function. Fix excise to retain the link field while otherwise zeroing the instruction. This makes nilopt safe on power64x. It still fails nilptr3.go's tests for removal of repeated nil checks because those depend on also optimizing away repeated loads, which doesn't currently happen on power64x. LGTM=dave, rsc R=rsc, dave CC=golang-codereviews https://golang.org/cl/168120043
2014-11-03[dev.power64] all: merge default into dev.power64Austin Clements
Trivial merge except for src/runtime/asm_power64x.s and src/runtime/signal_power64x.c LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/168950044
2014-11-03doc: document go get -f flag in 1.4 release notesAndrew Gerrand
LGTM=r, rsc R=r, rsc, adg CC=golang-codereviews https://golang.org/cl/168890043
2014-11-02[dev.power64] cmd/objdump: disable tests on power64/power64leDave Cheney
LGTM=rsc, austin R=austin, rsc, bradfitz CC=golang-codereviews https://golang.org/cl/164300043
2014-11-01misc: Increase issue 6997's test timeout to prevent spurious failures.Benoit Sigoure
On heavily loaded build servers, a 5 second timeout is too aggressive, which causes this test to fail spuriously. LGTM=iant R=iant CC=golang-codereviews, sqweek https://golang.org/cl/170850043
2014-11-01A+C: add Benoit Sigoure (individual CLA)Ian Lance Taylor
LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/164410043
2014-10-31[dev.power64] runtime: fix gcinfo_test on power64xAustin Clements
The GC info masks for slices and strings were changed in commit caab29a25f68, but the reference masks used by gcinfo_test for power64x hadn't caught up. Now they're identical to amd64, so this CL fixes this test by combining the reference masks for these platforms. LGTM=rsc R=rsc, dave CC=golang-codereviews https://golang.org/cl/162620044
2014-10-31[dev.power64] reflect: fix asm on power64xAustin Clements
reflect/asm_power64x.s was missing changes made to other platforms for stack maps. This CL ports those changes. With this fix, the reflect test passes on power64x. LGTM=rsc R=rsc, dave CC=golang-codereviews https://golang.org/cl/170870043
2014-10-31[dev.power64] runtime: fix fastrand1 on power64xAustin Clements
fastrand1 depends on testing the high bit of its uint32 state. For efficiency, all of the architectures implement this as a sign bit test. However, on power64, fastrand1 was using a 64-bit sign test on the zero-extended 32-bit state. This always failed, causing fastrand1 to have very short periods and often decay to 0 and get stuck. Fix this by using a 32-bit signed compare instead of a 64-bit compare. This fixes various tests for the randomization of select of map iteration. LGTM=rsc R=rsc, dave CC=golang-codereviews https://golang.org/cl/166990043
2014-10-31net/http: add missing newline in list of leaked goroutinesIan Lance Taylor
LGTM=bradfitz R=bradfitz CC=golang-codereviews https://golang.org/cl/168860044
2014-10-31database/sql: make TestDrivers not crash on second runBrad Fitzpatrick
Using -test.cpu=1,1 made it crash before. Fixes #9024 LGTM=iant R=adg, iant CC=golang-codereviews https://golang.org/cl/169860043
2014-10-31cmd/go: fixed typo in doc and generatorGabriel Aszalos
LGTM=iant R=golang-codereviews, iant, bradfitz CC=golang-codereviews https://golang.org/cl/163690043
2014-10-31A+C: add Gabriel Aszalos (individual CLA)Ian Lance Taylor
LGTM=bradfitz R=adg, bradfitz CC=golang-codereviews https://golang.org/cl/162580043
2014-10-31[dev.power64] 9g: fix under-zeroing in clearfatAustin Clements
All three cases of clearfat were wrong on power64x. The cases that handle 1032 bytes and up and 32 bytes and up both use MOVDU (one directly generated in a loop and the other via duffzero), which leaves the pointer register pointing at the *last written* address. The generated code was not accounting for this, so the byte fill loop was re-zeroing the last zeroed dword, rather than the bytes following the last zeroed dword. Fix this by simply adding an additional 8 byte offset to the byte zeroing loop. The case that handled under 32 bytes was also wrong. It didn't update the pointer register at all, so the byte zeroing loop was simply re-zeroing the beginning of region. Again, the fix is to add an offset to the byte zeroing loop to account for this. LGTM=dave, bradfitz R=rsc, dave, bradfitz CC=golang-codereviews https://golang.org/cl/168870043
2014-10-31sync/atomic: fix comment referencing Value.Store's argument nameBrad Fitzpatrick
Fixes #9029 LGTM=adg, r R=r, adg CC=golang-codereviews https://golang.org/cl/161630044
2014-10-30[dev.power64] runtime: fix a syntax error that slipped in to asm_power64x.sAustin Clements
Apparently I had already moved on to fixing another problem when I submitted CL 169790043. LGTM=dave R=rsc, dave CC=golang-codereviews https://golang.org/cl/165210043
2014-10-30cmd/go: fix minor typoNathan P Finch
LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/170770043
2014-10-30A+C: Nathan P Finch (individual CLA)Brad Fitzpatrick
TBR=iant R=iant CC=golang-codereviews https://golang.org/cl/155560045
2014-10-30A+C: add Jed Denlea (Fastly corporate CLA)Brad Fitzpatrick
LGTM=iant R=golang-codereviews, iant CC=adg, golang-codereviews https://golang.org/cl/165170043
2014-10-30[dev.power64] runtime: make asm_power64x.s go vet-cleanAustin Clements
No real problems found. Just lots of argument names that didn't quite match up. LGTM=rsc R=rsc, dave CC=golang-codereviews https://golang.org/cl/169790043
2014-10-30misc/cgo/test: fix bad C test code that fails on some configurationsAlan Donovan
LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/169800043
2014-10-30cmd/cgo: avoid worklist nondeterminism.Alan Donovan
+ Regression test. Fixes #9026. LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/162490043
2014-10-30[dev.power64] runtime: fix out-of-date comment in panicAustin Clements
LGTM=bradfitz R=rsc, bradfitz CC=golang-codereviews https://golang.org/cl/162500043
2014-10-30[dev.power64] runtime: test CAS on large unsigned 32-bit numbersAustin Clements
This adds a test to runtime·check to ensure CAS of large unsigned 32-bit numbers does not accidentally sign-extend its arguments. LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/162490044
2014-10-30[dev.power64] runtime: match argument/return type signedness in power64x ↵Austin Clements
assembly Previously, the power64x runtime assembly was sloppy about using sign-extending versus zero-extending moves of arguments and return values. I think all of the cases that actually mattered have been fixed in recent CLs; this CL fixes up the few remaining mismatches. LGTM=rsc R=rsc, dave CC=golang-codereviews https://golang.org/cl/162480043
2014-10-30doc/go1.4.html: tweak http.Transport.DialTLS wordingBrad Fitzpatrick
It doesn't simplify, because it wasn't even possible before. LGTM=r R=r CC=golang-codereviews https://golang.org/cl/164250043
2014-10-30doc/go1.4.html: fix typoMikio Hara
LGTM=adg R=r, adg CC=golang-codereviews https://golang.org/cl/165890043
2014-10-30tag go1.4beta1Andrew Gerrand
TBR=rsc R=r, rsc CC=golang-codereviews https://golang.org/cl/164240043
2014-10-29cmd/objdump: disable test failing on arm5go1.4beta1Russ Cox
TBR=adg CC=golang-codereviews https://golang.org/cl/167890043
2014-10-29runtime: change top-most return PC from goexit to goexit+PCQuantumRuss Cox
If you get a stack of PCs from Callers, it would be expected that every PC is immediately after a call instruction, so to find the line of the call, you look up the line for PC-1. CL 163550043 now explicitly documents that. The most common exception to this is the top-most return PC on the stack, which is the entry address of the runtime.goexit function. Subtracting 1 from that PC will end up in a different function entirely. To remove this special case, make the top-most return PC goexit+PCQuantum and then implement goexit in assembly so that the first instruction can be skipped. Fixes #7690. LGTM=r R=r CC=golang-codereviews https://golang.org/cl/170720043