Ask questionsThe results of dumpssa generated by compilecmp and go build are different
The Head ref link: https://go-review.googlesource.com/c/go/+/239457 Env: linux/amd64 goroot_bootstrap: go version go1.14.3 linux/amd64 What did I do:
$ compilecmp -dumpssa AppendSleb128:*
compilecmp master -> HEAD
master (8c521739f2): doc/go1.15: remove encoding/xml doc
HEAD (01bc4ea6dc): cmd/compile/internal/ssa: handle more cases in fuse pass
The ssa file generated by compilecmpfor the HEAD ref:
HEAD-REF-by-compilecmp.zip
The ssa file generated with the following command manually:
$ cd ~/go-for-fuse
$ GOSSAFUNC=AppendSleb128:* ./bin/go build cmd/internal/dwarf/
HEAD-REF-by-go-build.zip It can be seen that the final assembly code is a little different. The opcodes generated by the lower pass for the if branch in block b12 are different. The result generated for the master ref is the same with that generated by go build. I don't know how this difference is caused.
Answer
questions
erifan
This may has nothing to do with compilecmp, I can reproduce it in the worktree created by
$ git worktree add --detach <des> <ref>
$ cd <des>/src
$ ./make.bash
$ GOSSAFUNC=AppendSleb128:* ../bin/go build cmd/internal/dwarf/
Related questions
No questions were found.