[llvm-dev] [RFC] Interprocedural MIR-level outlining pass

Jessica Paquette via llvm-dev llvm-dev at lists.llvm.org
Wed Oct 19 11:07:52 PDT 2016


Hi Violeta,

Sorry, I haven't had time to look since I'm in the process of an
international move right now.

1. Yes; we also used the external tests though.

2. This is a much larger question; I'll look into it and get back to you
ASAP.

Jessica

On Wednesday, October 19, 2016, Violeta Vukobrat <violeta.vukobrat at rt-rk.com>
wrote:

> Hi Jessica,
>
>
> Did you have time to take a look at these questions maybe?
>
> Thank you,
>
>
> Violeta
>
>
> On 04.10.2016. 18:20, Violeta Vukobrat wrote:
>
>> Hi Jessica,
>>
>> Thank you for your quick reply.
>>
>> I have a few more questions.
>>
>> 1. In the results section of your original post, I suppose that by 'llvm
>> test suite' you meant the SingleSource, MultiSource tests. Is that correct?
>>
>> 2. I am trying to run these tests with the -mno-red-zone option, however
>> I am running into issues, and I hope that you can help me.
>>
>> 2.1. The first problem is that I get a segfault when trying to e.g.
>> create an .o file. Example of building a test from the test-suite:
>>
>> clang++ -I<path-to-results-dir>/MultiSource/Benchmarks/Prolangs-C++/simul
>> -I<path-to-test-suite>/MultiSource/Benchmarks/Prolangs-C++/simul
>> -I<path-to-test-suite>/include -I../../../../include -D_GNU_SOURCE
>> -D__STDC_LIMIT_MACROS -DNDEBUG -DSMALL_PROBLEM_SIZE -O3 -mno-red-zone
>> -mllvm -enable-machine-outliner -m64 -fomit-frame-pointer -c
>> <path-to-test-suite>/MultiSource/Benchmarks/Prolangs-C++/simul/simulate.cpp
>> -o simulate.o
>>
>> The problem occurs in AsmPrinter::EmitFunctionBody(), during running
>> 'X86 Assembly / Object Emitter' pass on an outlined function.
>> I haven't found what causes it, but the problematic bit seems to be the
>> value of MI in EmitFunctionBody() in lib/CodeGen/AsmPrinter/AsmPrinter.cpp
>> around line 854:
>>  ....
>>
>>     // Print a label for the basic block.
>>     EmitBasicBlockStart(MBB);
>>     for (auto &MI : MBB) {    <---- line 854
>>
>>       // Print the assembly for the instruction.
>>       if (!MI.isPosition() && !MI.isImplicitDef() && !MI.isKill() &&
>>           !MI.isDebugValue()) {
>> ....
>>
>> I haven't debugged this any further, so I don't really know what is the
>> cause of the problem here.
>> What makes it strange is that this segfault doesn't occur always (but
>> does majority of the times), and also, it doesn't always happen for the
>> same outlined function.
>> I was wondering if you have come across a similar issue?
>>
>>
>> 2.2. When I try to build a simple example with '-mno-red-zone' and
>> '-enable-machine-outliner' options, I get an 'undefined reference' to an
>> outlined function, e.g. "undefined reference to `l_OUTLINED_FUNCTION0'".
>> The .s file shows that the call that gets inserted is a call to
>> `l_OUTLINED_FUNCTION0', and the outlined function has the label with a
>> different prefix - `.LOUTLINED_FUNCTION0'.
>> Did you have the same problem?
>>
>> Note: I have cloned your repository from https://github.com/ornata/llvm
>> .git and for clang, I used commit aa5fc8f0161578a00cb5e61a19cb6c
>> 6429ff85e3.
>>
>>
>> I hope that you can help me resolve these issues, or tell me if I am
>> doing something wrong here. :)
>>
>> Violeta
>>
>>
>> On 29.09.2016. 09:38, Jessica Paquette wrote:
>>
>>> Hi Violeta,
>>>
>>> I compiled with
>>>
>>> clang -Oz and
>>> clang -Oz -mno-red-zone for comparisons against Oz
>>>
>>> and
>>>
>>> clang -O0 and
>>> clang -O0 -mno-red-zone for comparisons against a default clang.
>>>
>>> I unfortunately don’t have the clang commit I worked with on my home
>>> laptop, and don’t have access to the computer I was using at Apple, so I
>>> can’t help you there.
>>>
>>>
>>> Jessica
>>>
>>> On Sep 28, 2016, at 11:22 AM, Violeta Vukobrat <
>>>> violeta.vukobrat at rt-rk.com> wrote:
>>>>
>>>> Hi Jessica,
>>>>
>>>>
>>>> I am looking into trying out your patch and reproducing results that
>>>> you got for code size reduction. Could you tell me what compiler options
>>>> you used? Also, which clang commit did you work with?
>>>>
>>>>
>>>> Violeta
>>>>
>>>> --
>>>> Violeta Vukobrat
>>>> Software Engineer
>>>> RT-RK Computer Based Systems LLC
>>>> www.rt-rk.com
>>>>
>>>
>>
> --
> Violeta Vukobrat
> Software Engineer
> RT-RK Computer Based Systems LLC
> www.rt-rk.com
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20161019/fcacd1bd/attachment.html>


More information about the llvm-dev mailing list