1. 24 Aug, 2015 1 commit
  2. 22 Aug, 2015 1 commit
  3. 21 Aug, 2015 3 commits
  4. 20 Aug, 2015 1 commit
    • Keith Randall's avatar
      [dev.ssa] cmd/compile: add decompose pass · 9f954db1
      Keith Randall authored
      Decompose breaks compound objects up into pieces that can be
      operated on by the target architecture.  The decompose pass only
      does phi ops, the rest is done by the rewrite rules in generic.rules.
      
      Compound objects include strings,slices,interfaces,structs,arrays.
      
      Arrays aren't decomposed because of indexing (we could support
      constant indexes, but dynamic indexes can't be handled using SSA).
      Structs will come in a subsequent CL.
      
      TODO: after this pass we have lost the association between, e.g.,
      a string's pointer and its size.  It would be nice if we could keep
      that information around for debugging info somehow.
      
      Change-Id: I6379ab962a7beef62297d0f68c421f22aa0a0901
      Reviewed-on: https://go-review.googlesource.com/13683Reviewed-by: default avatarJosh Bleecher Snyder <josharian@gmail.com>
      9f954db1
  5. 19 Aug, 2015 3 commits
  6. 18 Aug, 2015 2 commits
  7. 17 Aug, 2015 4 commits
  8. 15 Aug, 2015 1 commit
    • Keith Randall's avatar
      [dev.ssa] cmd/compile/internal/ssa: Use explicit size for store ops · d4cc51d4
      Keith Randall authored
      Using the type of the store argument is not safe, it may change
      during rewriting, giving us the wrong store width.
      
      (Store ptr (Trunc32to16 val) mem)
      
      This should be a 2-byte store.  But we have the rule:
      
      (Trunc32to16 x) -> x
      
      So if the Trunc rewrite happens before the Store -> MOVW rewrite,
      then the Store thinks that the value it is storing is 4 bytes
      in size and uses a MOVL.  Bad things ensue.
      
      Fix this by encoding the store width explicitly in the auxint field.
      
      In general, we can't rely on the type of arguments, as they may
      change during rewrites.  The type of the op itself (as used by
      the Load rules) is still ok to use.
      
      Change-Id: I9e2359e4f657bb0ea0e40038969628bf0f84e584
      Reviewed-on: https://go-review.googlesource.com/13636Reviewed-by: default avatarJosh Bleecher Snyder <josharian@gmail.com>
      d4cc51d4
  9. 14 Aug, 2015 2 commits
  10. 13 Aug, 2015 6 commits
  11. 12 Aug, 2015 8 commits
  12. 11 Aug, 2015 5 commits
  13. 10 Aug, 2015 3 commits