[llvm-dev] [RFC] Add IR level interprocedural outliner for code size.
Jessica Paquette via llvm-dev
llvm-dev at lists.llvm.org
Mon Jul 24 15:28:43 PDT 2017
(Cc llvm-dev, whoops!)
Intuitively, no, but suppose you have a sequence of instructions that look like this (in some weird pseudocode I just made up)
a
b
c
x
a
b
c
Now, this could be reduced to something that looks like this by an outliner:
call my_function
x
call my_function
my_function:
a
b
c
return
Structurally-speaking, this *is* a reduction.
Now, suppose we’re using an architecture like AArch64 where we care about something like a link register. Then to be correct we may have to actually emit something like this:
save special_register
call my_function
restore special_register
x
save special_register
call my_function
restore special_register
my_function:
a
b
c
return
In this case, we’ve actually produced more instructions than before. Although we’ve simplified the structure of the code, we’ve still produced more of it. So, if a high-level outliner isn’t aware of this sort of thing, you could actually end up making binaries *larger* by removing similarity from the code.
- Jessica
>
>> On Jul 24, 2017, at 2:16 PM, Meador Inge <meadori at gmail.com> wrote:
>>
>>> Firstly, as previously mentioned, we don’t know how an instruction will be lowered. So, if we say that each IR instruction has a cost of “1 somethings”, we haven’t really solved a *code size problem*, but more of a *code reduction problem*. That is, we’ve performed a reduction to the overall structure of the program, but we don’t know that that overall structural reduction will produce an equivalent code size reduction. I personally would be inclined to figure out how far off such a cost model could be, given a known architecture.
>>
>> “code size” vs. “code reduction” seems like a really nice way to think about this. I don’t know a lot about the areas in discussion, but one thing that occurred to me while reading this was: a code reduction couldn’t produce a worse code size than without the reduction, right?
>>
>> — Meador
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170724/86393b65/attachment.html>
More information about the llvm-dev
mailing list