LLVM performs some transformations and generates results that are not valid on my architecture. For example, if I extract an element from a vector in memory at address addr and shift it logically to the right by some size, it is replaced by loading a scalar value from memory addr+x. This transformation is correct, if the target supports byte-addressing; which is not supported on my architecture. I haven't found a way to disable these kinds of transformations in the back-end. Is there a way to disable ALL these transformations?
I'm using version 3.4.2