WebAssembly: don't optimize frameindex store
authorJF Bastien <jfb@google.com>
Sat, 30 Jan 2016 14:11:26 +0000 (14:11 +0000)
committerJF Bastien <jfb@google.com>
Sat, 30 Jan 2016 14:11:26 +0000 (14:11 +0000)
commitfbc89d21dd7c878d5238d90eafd597aff46f33e0
treefb836ed49391bbe5e3ebf2853e5ab9f314f8374f
parent6e75b138f2d2f860454a9e5ebd80279776e8a420
WebAssembly: don't optimize frameindex store

The previous code was incorrect (can't getReg a frameindex). We could instead optimize it to reduce tree height, but I'm not sure that's worthwhile yet because we then try to eliminate the frameindex.

This patch also fixes frame index elimination for operations which may load or store: it used to assume the base was operand 2 and immediate offset operand 1. That's not true for stores, where they're 4 and 3.

llvm-svn: 259305
llvm/lib/Target/WebAssembly/WebAssemblyRegisterInfo.cpp
llvm/lib/Target/WebAssembly/WebAssemblyStoreResults.cpp
llvm/test/CodeGen/WebAssembly/store-results.ll