[LLVMdev] Maybe OT -- what is this compiler optimization formally known as?
Hayden Livingston
halivingston at gmail.com
Mon Nov 17 20:35:37 PST 2014
This is actually not a LLVM issue, but more an issue of my higher
language,that I'm trying to target LLVM on. I'm seeing that if I do a naive
translation of my language, it generates additional load stores.
For example (in my high level language):
var1 = expression1;
var2 = expression2;
var3 = call(var1, var2);
var4 = expression3;
var5 = expression4;
var6 = call(var4, var5);
var7 = call(var6);
var8 = call(var3, var7);
This can be effectively represented in my high level language as
var8 = call(call(expression1, expression2),
call(call(expression3, expression4));
When I think about it naively. I would write code that would start from
var8 and traverse and try to substitute all "vars" with expressions.
I can imagine not always wanting to do this, for example if
the expression is duplicated, maybe I do want to pay for the load/store.
And maybe sometimes the semantics are such that I need to reuse it.
Is there a formal algorithm or classical technique that describes this?
Hayden
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20141117/1616f804/attachment.html>
More information about the llvm-dev
mailing list