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

Violeta Vukobrat via llvm-dev llvm-dev at lists.llvm.org
Wed Oct 19 10:46:27 PDT 2016


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 
> aa5fc8f0161578a00cb5e61a19cb6c6429ff85e3.
>
>
> 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



More information about the llvm-dev mailing list