[LLVMdev] Prevention register promotion at the isel codegen phase

Joseph Pusdesris joe at pusdesris.com
Fri Nov 23 10:02:51 PST 2012


I am trying to implement mem-mem operations, but I can't seem to figure out
how to prevent register promotion for most cases.

I can successfully compile:
int foo(int a, int b){
  return a + b;
}

because it gets matched to store(add(load)(load)), but when I attempt to
compile:
int foo(int a, int b, int c){
  return a + b + c;
}

I can't match the add anymore since it is of the
form store(add(add(load)(load))(load)).  I think I need to figure out how
to force a load/store between the two adds.  I am not sure where to
load/store to though, I need to allocate a spill location or something I
assume.

Any insight would be greatly appreciated.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20121123/1961c6ab/attachment.html>


More information about the llvm-dev mailing list