- 09 Oct, 2015 2 commits
-
-
Keith Randall authored
This can lead to multiple stores being live at once. Do OINDEX and ODOT using addresses & loads instead of specific ops. This keeps SSA values from containing unSSAable types. Change-Id: I79567e9d43cdee09084eb89ea0bd7aa3aad48ada Reviewed-on: https://go-review.googlesource.com/15654 Run-TryBot: Keith Randall <khr@golang.org> Reviewed-by:
David Chase <drchase@google.com>
-
David Chase authored
Turns out that these do occur after all, so did the obvious refactoring into the addr method. Also added better debugging for the case of unhandled closure args. Change-Id: I1cd8ac58f78848bae0b995736f1c744fd20a6c95 Reviewed-on: https://go-review.googlesource.com/15640Reviewed-by:
Keith Randall <khr@golang.org> Run-TryBot: David Chase <drchase@google.com>
-
- 08 Oct, 2015 2 commits
-
-
David Chase authored
Changed tree generation to correctly use PARAMOUT instead of PARAM. Emit Func.Exit before any returns. Change-Id: I2fa53cc7fad05fb4eea21081ba33d1f66db4ed49 Reviewed-on: https://go-review.googlesource.com/15610Reviewed-by:
Keith Randall <khr@golang.org> Run-TryBot: David Chase <drchase@google.com>
-
Keith Randall authored
One was OAPPEND of large types. We need to mem-mem copy them instead of storing them. Another was pointer-like struct and array types being put in the data field of an eface. We need to use the underlying pointer type for the load that fills in the eface.data field. Change-Id: Id8278c0381904e52d59011a66ce46386b41b5521 Reviewed-on: https://go-review.googlesource.com/15552 Run-TryBot: Keith Randall <khr@golang.org> Reviewed-by:
David Chase <drchase@google.com>
-
- 05 Oct, 2015 1 commit
-
-
Keith Randall authored
For appending large types, we want to evaluate the values being appended after the growslice call, not before. Evaluating them before leads to phi operations on large types which confuses the lowering pass. The order pass has already removed any side-effects from the values being appended, so it doesn't matter if we do this last eval before or after the growslice call. This change fixes a bunch (but not all) of our failed lowerings. Change-Id: I7c697d4d5275d71b7ef4677b830fd86c52ba03a4 Reviewed-on: https://go-review.googlesource.com/15430Reviewed-by:
David Chase <drchase@google.com> Run-TryBot: David Chase <drchase@google.com>
-
- 23 Sep, 2015 1 commit
-
-
David Chase authored
Change-Id: I5ee2953f7d387ef5bc70f6958763f775f0ae72dc Reviewed-on: https://go-review.googlesource.com/14880Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org>
-
- 22 Sep, 2015 1 commit
-
-
David Chase authored
Cleaned up first-block-in-function code. Added cases for |PHEAP for PPARAM and PAUTO. Made PPARAMOUT act more like PAUTO for purposes of address generation and vardef placement. Added cases for OCLOSUREVAR and Ops for getting closure pointer. Closure ops are scheduled at top of entry block to capture DX. Wrote test that seems to show proper behavior for addressed parameters, locals, and returns. Change-Id: Iee93ebf9e3d9f74cfb4d1c1da8038eb278d8a857 Reviewed-on: https://go-review.googlesource.com/14650Reviewed-by:
Keith Randall <khr@golang.org> Run-TryBot: David Chase <drchase@google.com>
-
- 21 Sep, 2015 2 commits
-
-
Keith Randall authored
Change-Id: I4deb03340e87f43179d5e22bf81843c17b5581fc Reviewed-on: https://go-review.googlesource.com/14756Reviewed-by:
David Chase <drchase@google.com>
-
Keith Randall authored
There's no need for special ops for panicindex and panicslice. Just use regular runtime calls. Change-Id: I71b9b73f4f1ebce1220fdc1e7b7f65cfcf4b7bae Reviewed-on: https://go-review.googlesource.com/14726Reviewed-by:
David Chase <drchase@google.com>
-
- 20 Sep, 2015 2 commits
-
-
Keith Randall authored
Change-Id: I5de36244de4dcc4a9827ee0fa04526e3e3578e7f Reviewed-on: https://go-review.googlesource.com/14755Reviewed-by:
David Chase <drchase@google.com>
-
Keith Randall authored
For variables which get SSA'd, SSA keeps track of all the def/kill. It is only for on-stack variables that we need them. This reduces stack frame sizes significantly because often the only use of a variable was a varkill, and without that last use the variable doesn't get allocated in the frame at all. Fixes #12602 Change-Id: I3f00a768aa5ddd8d7772f375b25f846086a3e689 Reviewed-on: https://go-review.googlesource.com/14758Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org>
-
- 19 Sep, 2015 2 commits
-
-
Keith Randall authored
We need to move any objects whose types are not SSA-able. Fixes the "not lowered: Load ARRAY PTR64 mem" errors. Change-Id: I7a0b609f917d7fb34bc9215fee4da15f9961cf6c Reviewed-on: https://go-review.googlesource.com/14753Reviewed-by:
David Chase <drchase@google.com> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Keith Randall authored
The frontend rewrites most literals, so we see only zero ones during SSA construction. We can implement those using the existing zeroing behavior. Change-Id: I390ad1be0a4b6729baf0c8936c7610aae2aef049 Reviewed-on: https://go-review.googlesource.com/14754Reviewed-by:
David Chase <drchase@google.com> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
- 17 Sep, 2015 4 commits
-
-
Keith Randall authored
ptrvar -> ptrVar, etc. Change-Id: Id38bed0e145711dfe3bdc9541ab4741da6a570a2 Reviewed-on: https://go-review.googlesource.com/14725Reviewed-by:
Todd Neal <todd@tneal.org>
-
Keith Randall authored
Taken over and completed from Josh's change https://go-review.googlesource.com/#/c/14524/ Change-Id: If5d4f732843cc3e99bd5edda54458f0a8be73e91 Reviewed-on: https://go-review.googlesource.com/14690Reviewed-by:
Josh Bleecher Snyder <josharian@gmail.com>
-
Keith Randall authored
Generate AUNDEF for every exit block, not just for certain control values. Change-Id: Ife500ac5159ee790bc1e70c0e9b0b1f854bc4c47 Reviewed-on: https://go-review.googlesource.com/14721Reviewed-by:
Josh Bleecher Snyder <josharian@gmail.com>
-
Keith Randall authored
OCALLINTER, as well as ODEFER/OPROC with OCALLMETH/OCALLINTER. Move all the call logic to its own routine, a lot of the code is shared. Change-Id: Ieac59596165e434cc6d1d7b5e46b78957e9c5ed3 Reviewed-on: https://go-review.googlesource.com/14464Reviewed-by:
Todd Neal <todd@tneal.org> Reviewed-by:
David Chase <drchase@google.com>
-
- 16 Sep, 2015 2 commits
-
-
Keith Randall authored
A simpler way to do iface/slice comparisons. Fixes some cases of failed lowerings. Change-Id: Ia252bc8648293a2d460f63c41f1591785543a1e9 Reviewed-on: https://go-review.googlesource.com/14493Reviewed-by:
Josh Bleecher Snyder <josharian@gmail.com>
-
Keith Randall authored
Change-Id: I1fbce8c421c48074a964b4d9481c92fbc3524f80 Reviewed-on: https://go-review.googlesource.com/14525Reviewed-by:
Todd Neal <todd@tneal.org>
-
- 15 Sep, 2015 2 commits
-
-
Keith Randall authored
Fixes build. Not great, but it will let others make progress. Change-Id: If9cf2bbb5016e40aa91cf1c8bb62982ae2aed5e4 Reviewed-on: https://go-review.googlesource.com/14621Reviewed-by:
Keith Randall <khr@golang.org>
-
Keith Randall authored
Load-and-sign-extend opcodes were being generated in the wrong block, leading to having more than one memory variable live at once. Fix the rules + add a test. Change-Id: Iadf80e55ea901549c15c628ae295c2d0f1f64525 Reviewed-on: https://go-review.googlesource.com/14591Reviewed-by:
Todd Neal <todd@tneal.org> Run-TryBot: Todd Neal <todd@tneal.org>
-
- 14 Sep, 2015 3 commits
-
-
Keith Randall authored
For now, we only use typedmemmove. This can be optimized in future CLs. Also add a feature to help with binary searching bad compilations. Together with GOSSAPKG, GOSSAHASH specifies the last few binary digits of the hash of function names that should be compiled. So GOSSAHASH=0110 means compile only those functions whose last 4 bits of hash are 0110. By adding digits to the front we can binary search for the function whose SSA-generated code is causing a test to fail. Change-Id: I5a8b6b70c6f034f59e5753965234cd42ea36d524 Reviewed-on: https://go-review.googlesource.com/14530Reviewed-by:
Keith Randall <khr@golang.org>
-
Keith Randall authored
Implement OSLICE, OSLICEARR, OSLICESTR, OSLICE3, OSLICE3ARR. reviewer: Ignore the code in OINDEX, that's from CL 14466. Change-Id: I00cc8aecd4c6f40ea5517cd660bb0ce759d91171 Reviewed-on: https://go-review.googlesource.com/14538Reviewed-by:
Todd Neal <todd@tneal.org>
-
Keith Randall authored
Change-Id: I984d3e0410ac38c4e42ae8e3670ea47e2140de76 Reviewed-on: https://go-review.googlesource.com/14466Reviewed-by:
Alexandru Moșoi <alexandru@mosoi.ro> Reviewed-by:
Todd Neal <todd@tneal.org>
-
- 12 Sep, 2015 4 commits
-
-
Keith Randall authored
This makes deadstore elimination work reasonably again. Change-Id: I3a8caced71f12dfb6c1d0c68b7a7d8d7a736ea23 Reviewed-on: https://go-review.googlesource.com/14536Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org>
-
Keith Randall authored
Change-Id: I5a683f532a5a0b2bc862d80c871e8dc6721016fc Reviewed-on: https://go-review.googlesource.com/14534Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org>
-
Keith Randall authored
Change-Id: I1e5993e0e56481ce838c0e3979b1a3052e72dba5 Reviewed-on: https://go-review.googlesource.com/14535Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org>
-
Keith Randall authored
Change-Id: Iec61ca1bdc064c29ceca6d47f600d5643d0a64dd Reviewed-on: https://go-review.googlesource.com/14533Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org>
-
- 11 Sep, 2015 4 commits
-
-
Josh Bleecher Snyder authored
Move the AST to SSA conversion to the caller. This enables it to be used in contexts in which the RHS is already an *ssa.Value. Change-Id: Ibb87210fb9fda095a9b7c7f4ad1264a7cbd269bf Reviewed-on: https://go-review.googlesource.com/14521 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by:
Keith Randall <khr@golang.org>
-
Josh Bleecher Snyder authored
Remove unnecessary local var split. Change-Id: I907ef682b5fd9b3a67771edd1fe90c558f8937ea Reviewed-on: https://go-review.googlesource.com/14523 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by:
Keith Randall <khr@golang.org>
-
Josh Bleecher Snyder authored
Change-Id: I1f93ea65bbdc895cd4eff7545e1688a64d85aae5 Reviewed-on: https://go-review.googlesource.com/14520 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org>
-
Keith Randall authored
Move to implicit (mostly) instead of explicit exit blocks. RET and RETJMP have no outgoing edges - they implicitly exit. CALL only has one outgoing edge, as its exception edge is implicit as well. Exit blocks are only used for unconditionally panicking code, like the failed branches of nil and bounds checks. There may now be more than one exit block. No merges happen at exit blocks. The only downside is it is harder to find all the places code can exit the method. See the reverse dominator code for an example. Change-Id: I42e2fd809a4bf81301ab993e29ad9f203ce48eb0 Reviewed-on: https://go-review.googlesource.com/14462Reviewed-by:
Josh Bleecher Snyder <josharian@gmail.com>
-
- 10 Sep, 2015 6 commits
-
-
Keith Randall authored
It was using 64-bit float comparison ops for complex64. It should use 32-bit float comparison. Fixes build. Change-Id: I6452b227257fecc09e04cd092ccf328d1fc9917f Reviewed-on: https://go-review.googlesource.com/14497 Run-TryBot: Keith Randall <khr@golang.org> Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org>
-
Keith Randall authored
Change-Id: Iefabce4eb0dbc313dd1863513b45307cc76c545a Reviewed-on: https://go-review.googlesource.com/14468Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org>
-
Keith Randall authored
They were using the result type to look up the op, not the arg type. Change-Id: I0641cba363fa6e7a66ad0860aa340106c10c2cea Reviewed-on: https://go-review.googlesource.com/14469Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by:
Josh Bleecher Snyder <josharian@gmail.com>
-
Todd Neal authored
Add line that was inadvertently removed. Change-Id: I99ebc1041e984e408ae5825836c28b9891d6043b Reviewed-on: https://go-review.googlesource.com/14470 Run-TryBot: Todd Neal <todd@tneal.org> Reviewed-by:
Keith Randall <khr@golang.org>
-
Todd Neal authored
Change-Id: Ieb9cddf8876bf8cd5ee1705d9210d22c3959e8cc Reviewed-on: https://go-review.googlesource.com/14329Reviewed-by:
Keith Randall <khr@golang.org> Run-TryBot: Todd Neal <todd@tneal.org>
-
Todd Neal authored
This matches existing behavior, see issue #2196 Change-Id: Ifa9359b7c821115389f337a57de355c5ec23be8f Reviewed-on: https://go-review.googlesource.com/14261Reviewed-by:
Keith Randall <khr@golang.org>
-
- 09 Sep, 2015 2 commits
-
-
David Chase authored
Added tree numbering data structure. Changed dominator query in CSE. Removed skip-for-too-big patch in CSE. Passes all.bash. Change-Id: I98d7c61b6015c81f5edab553615db17bc7a58d68 Reviewed-on: https://go-review.googlesource.com/14326Reviewed-by:
Keith Randall <khr@golang.org>
-
Keith Randall authored
Change-Id: I352c7b9aab053959bc74c15861339e1dbe545ddc Reviewed-on: https://go-review.googlesource.com/14404Reviewed-by:
David Chase <drchase@google.com>
-