get_rule() is part of the general instruction selection, and it's just where the bug gets visible. It has nothing to do with the real problem here.
The problem boils down to m_LVSortBack being a struct, and the expression is using the first member (of type int). Usually all struct/array/etc members, except the first one, will be associated with an internally generated symbol which is <base + field-offset>, with the type being that of the field (and not the struct). The first member is special, since base + 0 is too silly to be generated. Unless I'm really careful, I might try to assign an int to struct (like in this case). The code generator (obviously) don't know how to handle this...
Finding a better solution may take a while...